En esta guía describo las configuraciones del sistema macOS sobre la arquitectura M1 para adaptarlo a un ambiente
de trabajo en donde pueda realizar tareas relacionadas a la administración de este tipo de sistemas:
- Laptop de trabajo
- Servidores Linux
- Recursos Cloud
- Clusters Kubernetes
- Desarrollo de software
Intentare usar en su mayoría software libre que estoy acostumbrado a usar en otros sistemas GNU/Linux como Kubuntu Desktop que normalmente usaba en arquitecturas x86.
Para dejar a punto la máquina, realizaremos la configuración de los siguientes componentes:
- Actualizaciones del sistema
- Cifrar los datos del disco
- Entornos de desarrollo
- Gestores de paquetes
- Editor de textos
- Emulador de Terminal
- Entorno del shell
- Herramientas de gestión Cloud
- Gestión de base de datos
- Desarrollo de software
- Cliente VPN
- Herramientas de red
- Mouse externo
Primero que nada vamos a actualizar el sistema, en este caso System Settings, buscamos Software Updates, y en
la sección de Automatic Updates configuramos de la siguiente forma:
- Check for updates: Enabled
- Download new updates when available: Enabled
- Install macOS updates: Enabled
- Install application updates from the App Store: Disabled
- Install Security Responses and system files: Enabled
En la sección de abajo podemos listar las actualizaciones pendientes, en caso de querer aplicarlas hacemos clic en
Upgrade Now y esperamos a que termine el proceso, al final se recomienda reiniciar.
En el trabajo me dieron una laptop MacBook Pro, regularmente salgo con ella, para prevenir perdida o robo de
información, vamos a cifrar los datos del disco de forma automática, para esto vamos a System Settings, luego a
Privacy & Security, en la sección de Security vamos a la opción de FileVault, con esta herramienta aseguraremos
nuestros datos, por defecto viene desactivado, hacemos clic en Turn On... para iniciar el proceso.
Al principio nos saldrá un mensaje para elegir el método para desbloquear el disco y resetear la contraseña en caso
de olvidarla, podemos usar el método basado en tu cuenta iCloud o a través de una recovery key, la cual no
de tu cuenta iCloud.
Una vez seleccionado el método, inicia el proceso de cifrado, el cual tarda un poco dependiendo de los datos actuales.
Instalamos el entorno de desarrollo de apps de apple XCode:
xcode-select --installEn una máquina nueva este componente no vienen instalado, por lo que aparece una ventana para seleccionar la instalación, se aceptan las condiciones y nos vamos a tomar un café porque va a tomar un buen rato.
Al terminar verificamos la instalación de xcode:
xcode-select -pPara complementar las herramientas que el sistema macOS incluye en su base de unix, instalaremos brew como
herramienta de gestión de paquetes para macOS, esta es una herramienta del tipo apt o yum en distribuciones
Linux.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"Configuramos el perfil del shell para usar brew:
echo >> /Users/jmedina/.zprofile
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/jmedina/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"Configuramos los repositorios de paquetes:
brew tap homebrew/caskMostrando taps:
$ brew tap
homebrew/cask
homebrew/coreInstalando los paquetes git y wget para descargar software desde el Internet:
brew install git wgetActualizando paquetes:
brew update && brew upgradeCon el siguiente comando realizamos una limpieza de paquetes viejos:
brew cleanupNo me gusta usar el comando tar que trae por defecto macos, por lo que instalo la versión de GNU de tar que estoy acostumbrado a usar en Linux.
brew install gnu-tarEdito la configuración del shell para agregar el path:
export PATH="/opt/homebrew/opt/gnu-tar/libexec/gnubin:$PATH"Instalamos paquete de coreutils:
brew install coreutilsEditamos el archivo de configuración de zsh, al final agregamos el PATH personalizado:
# Custom PATH
export PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH"Instalamos la siguiente lista de paquetes para usar en el día a día para descargar, construir y asegurar software:
brew install curl make autoconf mcrypt gpg2 gettext readline openssl unzipAl final del archivo .zshrc agregamos las siguientes líneas para modificar el PATH:
# Custom PATH
export PATH="/opt/homebrew/opt/curl/bin:$PATH"
export PATH="/opt/homebrew/opt/make/libexec/gnubin:$PATH"
export PATH="/opt/homebrew/opt/openssl@3/bin:$PATH"Recargamos configuración:
source $HOME/.zshrcInstalamos tree:
brew install treeInstalamos watch:
brew install watchInstalamos vlc:
brew install vlcInstalamos cmatrix:
brew install cmatrixInstalamos markdownlint-cli2:
brew install markdownlint-cli2Instalamos btop:
brew install btopInstalamos unrar:
brew install rarInstalamos el editor de textos vim:
brew install vimActualizamos la configuración del editor para realizar las personalizaciones locales:
vim .vimrcAgregamos el contenido inicial:
" .vimrc
" Configuración general
set title " Muestra el nombre del archivo en la ventana de la terminal
set number " Muestra los números de las líneas
set nowrap " No dividir la línea si es muy larga
set cursorline " Resalta la línea actual
set colorcolumn=120 " Muestra la columna límite a 120 caracteres
set nocompatible " Desactiva modo compatible
filetype plugin on " Habilita plugin para tipos de archivos
syntax on " Activa resaltado de sintaxis
" Indentación a 2 espacios
set tabstop=2
set shiftwidth=2
set softtabstop=2
set shiftround
set expandtab " Insertar espacios en lugar de <Tab>s
set imrmguicolors " Activa true colors en la terminalConfiguramos el corrector ortográfico spell, primero creamos directorio para spell check:
mkdir -p ~/.vim/spell
cd ~/.vim/spellDescargaremos los siguientes archivos:
wget --no-check-certificate https://ftp.vim.org/vim/runtime/spell/es.latin1.spl
wget --no-check-certificate https://ftp.vim.org/vim/runtime/spell/es.latin1.sug
wget --no-check-certificate https://ftp.vim.org/vim/runtime/spell/es.utf-8.spl
wget --no-check-certificate https://ftp.vim.org/vim/runtime/spell/es.utf-8.sugCreamos los archivos para los diccionarios locales:
touch ~/.vim/spell/es.utf-8.add
touch ~/.vim/spell/en.utf-8.addAl final del archivo .vimrc agregamos las siguientes líneas:
" Configuracion spell check
"set spell
set nospell
setlocal spell spelllang=es,en " Corregir palabras usando diccionarios en españolLos atajos de teclado para manejar el spelling:
- ]s – Siguiente falta ortográfica
- [s – Anterior falta ortográfica
- z= – Mostrar sugerencias para una palabra incorrecta.
- zg – Añadir una palabra al diccionario.
- zug – Deshacer la adición de una palabra al diccionario.
- zw – Eliminar una palabra del diccionario.
Ahora instalamos la herramienta para gestión de plugins: vim-plug:
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vimEditamos la configuración de vim para añadir la Configuración de Plugins:
"
" PLUGINS: https://github.com/junegunn/vim-plug
"
" Specify a directory for plugins
call plug#begin('~/.vim/plugged')
" fzf
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
" Challenger-deep-theme: https://github.com/junegunn/vim-plug
Plug 'challenger-deep-theme/vim', { 'as': 'challenger-deep' }
" NERDTree
Plug 'preservim/nerdtree'
" vimwiki
Plug 'vimwiki/vimwiki'
" Initialize plugin system
call plug#end()
"
" THEME:
"
colorscheme challenger_deepGuardar vim, salir, y volver a entrar, entonces:
:PlugInstallInstalamos el paquete Kitty:
brew install kittyDescargamos los temas de kitty:
git clone --depth 1 https://github.com/dexpota/kitty-themes.git ~/.config/kitty/kitty-themesConfiguramos el tema de Dracula:
cd ~/.config/kitty
ln -s ./kitty-themes/themes/Dracula.conf ~/.config/kitty/theme.confInstalamos el shell zsh:
brew install zshInstalamos oh my zsh:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"Cambiamos el shell default:
chsh -s $(which zsh)Editamos el archivo de configuración de zsh:
vim .zshrcPara habilitar los diferentes plugins cambiamos:
plugins=(git)por:
plugins=(cp colored-man-pages colorize pip python brew git vi-mode)Guardamos y re cargamos configuración:
source .zshrcEditamos el archivo de configuración de zsh:
vim .zshrcPara cambiar el tema cambiamos:
ZSH_THEME="robbyrussell"Por:
ZSH_THEME="agnoster"Guardamos y re cargamos configuración:
source .zshrcLista de temas: https://github.com/ohmyzsh/ohmyzsh/wiki/themes.
Instalamos la fuente Powerline:
cd data/vcs/jorge.medina
git clone https://github.com/powerline/fonts.git --depth=1
cd fonts
./install.sh
cdInstalamos el tema powerlevel9k:
git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9kEditamos el archivo de configuración de zsh:
vim .zshrcAgregamos la lista de sources:
ZSH_THEME="powerlevel9k/powerlevel9k"
# Powerlevel9k settings
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(user host dir vcs)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status battery time)
POWERLEVEL9K_PROMPT_ON_NEWLINE=true
POWERLEVEL9K_SHORTEN_DIR_LENGTH=2
POWERLEVEL9K_OS_ICON_BACKGROUND="white"
POWERLEVEL9K_OS_ICON_FOREGROUND="blue"
POWERLEVEL9K_TIME_FORMAT="%D{%H:%M:%S | %d.%m.%y}"
Otras opciones:
POWERLEVEL9K_MULTILINE_FIRST_PROMPT_PREFIX="↱"
POWERLEVEL9K_MULTILINE_LAST_PROMPT_PREFIX="↳ "Guardamos y re cargamos configuración:
source .zshrcInstalar resaltado de sintaxis en zsh:
brew install zsh-syntax-highlightingEditamos el archivo de configuración de zsh:
vim .zshrcAgregar a la lista de sources:
source /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zshGuardamos y re cargamos configuración:
source .zshrcProyecto: https://mimosa-pudica.net/zsh-incremental.html
Instalamos auto sugerencias en zsh:
brew install zsh-autosuggestionsEditamos el archivo de configuración de zsh:
vim .zshrcAgregar a la lista de sources:
source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zshGuardamos y re cargamos configuración:
source .zshrcInstalamos plugin incr:
cd $HOME/.oh-my-zsh/custom/plugins
mkdir incr
cd incr
wget http://mimosa-pudica.net/src/incr-0.2.zsh
cdEditamos el archivo de configuración de zsh:
vim .zshrcDespués de la linea:
source $ZSH/oh-my-zsh.shInsertar:
source $ZSH/custom/plugins/incr/incr*.zshGuardamos y re cargamos configuración:
source .zshrcProyecto: https://mimosa-pudica.net/zsh-incremental.html
Instalamos fzf:
brew install fzfHabilitamos la integración para zsh, editamos configuración y agregamos::
# zsh
source <(fzf --zsh)Usar fzf en vim:
vim .vimrcAl final agregar:
set rtp+=/opt/homebrew/opt/fzfInstalamos ack para búsquedas:
brew install ackInstalamos the silver searcher:
brew install the_silver_searcherInstalamos google-cloud-sdk para gestionar recursos en Google Cloud::
brew install google-cloud-sdkEditamos el archivo de configuración de zsh y agregamos la siguiente línea::
source /opt/homebrew/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.incInstalamos el plugin para autenticarse con google cloud para clusters GKE:
gcloud components install gke-gcloud-auth-pluginInstalamos las herramientas tfenv y terragrunt para gestionar la infraestructura cloud cómo código:
brew install tfenv terragruntInstalamos las herramientas tflint y terraform-docs para mejorar la calidad y seguridad del código de terraform:
brew install tflint tfsec terraform-docsInstalamos template de terraform para m1:
brew install kreuzwerker/taps/m1-terraform-provider-helper
m1-terraform-provider-helper activate hashicorp/template
m1-terraform-provider-helper install hashicorp/template -v v2.2.0Instalamos la herramienta kubectl para gestionar clusters de contenedores Kubernetes:
brew install kubectlInstalamos ansible para automatizar las configuraciones de servidores Linux:
brew install ansibleInstalamos generador de contraseñas en cli:
brew install pwgenInstalamos KeepassXC para gestionar nuestras contraseñas de forma local:
brew install --cask keepassxcInstalamos helm para instalar aplicaciones y servicios en kubernetes de forma simple:
brew install helmAgregamos los repositorios de los charts que usaremos:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add jetstack https://charts.jetstack.io
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo add datadog https://helm.datadoghq.comActualizamos los repositorios:
helm repo updateInstalamos el cliente de bases de datos postgreSQL:
brew install postgresqlAhora instalamos dbeaver, una herramienta para gestión de datos compatible con postgres:
brew install dbeaver-communityEn esta sección instalamos algunas herramientas que se usan en el desarrollo de software, en especifico para la gestión de paquetes para elixir, python y nodejs:
brew install asdf python npm yarnInstalamos yamllint, jq e yq:
brew install yamllint jq yqInstalamos cookiecutter para generar plantillas del boilerplate de proyectos de software:
brew install cookiecutterInstalamos el framework pre-commit:
pip3 install pre-commitInstalamos colima y docker para construir
y correr contenedores en local sin tener que pagar por licencias de Docker Desktop:
brew install colima dockerAhora instalamos kind para crear clusters kubernetes en local:
brew install kind Instalamos k6 para realizar pruebas de carga en aplicaciones web:
brew install k6Para conectarse de forma segura a los recursos cloud regularmente se usa alguna VPN por ejemplo basadas en
OpenVPN, para conectarnos instalamos el software Tunnelblick, el cual es un cliente
de OpenVPN para macOS.
Con este software es fácil conectarse a más de una VPN sin afectar nuestra navegación.
En esta sección listamos la instalación de algunas otras herramientas de red.
Empezamos con ipcalc por la calculadora de direcciones IP:
brew install ipcalcLuego instalamos mtr la herramienta para generar trazado de tráfico:
brew install mtrSeguimos con la instalación de nmap, una herramienta para escaneo de red:
brew install nmapAhora vemos la instalación de grpcurl, una herramienta para hacer pruebas a servicios web basados en GRPC:
brew install grpcurlCuando trabajo con la macbook en casa, prefiero usar un mouse externo, en mi caso particular, prefiero usar la
mac con la mano izquierda, así que necesito personalizar la configuración del Kensington Expert Mouse, el cual
es un mouse de tipo trackball con 4 botones y scroll.
Vamos a la página de KensingtonWorks y descargamos la versión
para macOS 14 Sonoma, lo instalamos y durante el proceso damos los permisos necesarios para que el software
pueda realizar las personalizaciones necesarias.
En BUTTONS invertimos los botones Left Click y Right Click, también Back y Middle Clic.
Aquí realizo otras personalizaciones para las diferentes combinaciones de botones, sean atajos generales o por aplicación.
En POINTER se cambia la velocidad predefinida, prefiero tener algo más rápido, un 6 por ejemplo, y habilitamos
la aceleración y lo ponemos en 4.
En SCROLLING subimos la velocidad a 4.
Adicional al software que instalo desde repositorios públicos también hago uso de estos otros programas que vienen
en formato de paquetes dmg.
- Google Chrome, iniciar sesión y sincronizar configuraciones: googlechrome.dmg
- Brave Browser, iniciar sesión y sincronizar configuraciones: Brave-Browser-arm64.dmg