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 --install
En 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 -p
Para 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/cask
Mostrando taps:
$ brew tap
homebrew/cask
homebrew/core
Instalando los paquetes git y wget para descargar software desde el Internet:
brew install git wget
Actualizando paquetes:
brew update && brew upgrade
Con el siguiente comando realizamos una limpieza de paquetes viejos:
brew cleanup
No 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-tar
Edito 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 coreutils
Editamos 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 unzip
Al 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/.zshrc
Instalamos tree:
brew install tree
Instalamos watch:
brew install watch
Instalamos el editor de textos vim:
brew install vim
Actualizamos la configuración del editor para realizar las personalizaciones locales:
vim .vimrc
Agregamos 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 terminal
Configuramos el corrector ortográfico spell
, primero creamos directorio para spell check:
mkdir -p ~/.vim/spell
cd ~/.vim/spell
Descargaremos 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.sug
Creamos los archivos para los diccionarios locales:
touch ~/.vim/spell/es.utf-8.add
touch ~/.vim/spell/en.utf-8.add
Al 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ñol
Los 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.vim
Editamos 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_deep
Guardar vim, salir, y volver a entrar, entonces:
:PlugInstall
Instalamos el paquete Kitty:
brew install kitty
Descargamos los temas de kitty:
git clone --depth 1 https://github.com/dexpota/kitty-themes.git ~/.config/kitty/kitty-themes
Configuramos el tema de Dracula:
cd ~/.config/kitty
ln -s ./kitty-themes/themes/Dracula.conf ~/.config/kitty/theme.conf
Instalamos el shell zsh:
brew install zsh
Instalamos 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 .zshrc
Para 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 .zshrc
Editamos el archivo de configuración de zsh:
vim .zshrc
Para cambiar el tema cambiamos:
ZSH_THEME="robbyrussell"
Por:
ZSH_THEME="agnoster"
Guardamos y re cargamos configuración:
source .zshrc
Lista 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
cd
Instalamos el tema powerlevel9k:
git clone https://github.com/bhilburn/powerlevel9k.git ~/.oh-my-zsh/custom/themes/powerlevel9k
Editamos el archivo de configuración de zsh:
vim .zshrc
Agregamos 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 .zshrc
Instalar resaltado de sintaxis en zsh:
brew install zsh-syntax-highlighting
Editamos el archivo de configuración de zsh:
vim .zshrc
Agregar a la lista de sources:
source /opt/homebrew/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
Guardamos y re cargamos configuración:
source .zshrc
Proyecto: https://mimosa-pudica.net/zsh-incremental.html
Instalamos auto sugerencias en zsh:
brew install zsh-autosuggestions
Editamos el archivo de configuración de zsh:
vim .zshrc
Agregar a la lista de sources:
source /opt/homebrew/share/zsh-autosuggestions/zsh-autosuggestions.zsh
Guardamos y re cargamos configuración:
source .zshrc
Instalamos plugin incr:
cd $HOME/.oh-my-zsh/custom/plugins
mkdir incr
cd incr
wget http://mimosa-pudica.net/src/incr-0.2.zsh
cd
Editamos el archivo de configuración de zsh:
vim .zshrc
Después de la linea:
source $ZSH/oh-my-zsh.sh
Insertar:
source $ZSH/custom/plugins/incr/incr*.zsh
Guardamos y re cargamos configuración:
source .zshrc
Proyecto: https://mimosa-pudica.net/zsh-incremental.html
Instalamos fzf:
brew install fzf
Habilitamos la integración para zsh, editamos configuración y agregamos::
# zsh
source <(fzf --zsh)
Usar fzf en vim:
vim .vimrc
Al final agregar:
set rtp+=/opt/homebrew/opt/fzf
Instalamos ack para búsquedas:
brew install ack
Instalamos the silver searcher:
brew install the_silver_searcher
Instalamos google-cloud-sdk para gestionar recursos en Google Cloud::
brew install google-cloud-sdk
Editamos 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.inc
Instalamos el plugin para autenticarse con google cloud para clusters GKE:
gcloud components install gke-gcloud-auth-plugin
Instalamos las herramientas tfenv y terragrunt para gestionar la infraestructura cloud cómo código:
brew install tfenv terragrunt
Instalamos las herramientas tflint y terraform-docs para mejorar la calidad del código de terraform:
brew install tflint terraform-docs
Instalamos template de terraform para m1:
brew install kreuzwerker/taps/m1-terraform-provider-helper
m1-terraform-provider-helper install hashicorp/template -v v2.2.0
Instalamos la herramienta kubectl para gestionar clusters de contenedores Kubernetes:
brew install kubectl
Instalamos ansible para automatizar las configuraciones de servidores Linux:
brew install ansible
Instalamos generador de contraseñas en cli:
brew install pwgen
Instalamos KeepassXC para gestionar nuestras contraseñas de forma local:
brew install --cask keepassxc
Instalamos helm para instalar aplicaciones y servicios en kubernetes de forma simple:
brew install helm
Agregamos 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.com
Actualizamos los repositorios:
helm repo update
Instalamos el cliente de bases de datos postgreSQL:
brew install postgresql
Ahora instalamos dbeaver, una herramienta para gestión de datos compatible con postgres:
brew install dbeaver-community
En 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 yarn
Instalamos yamllint e yq:
brew install yamllint yq
Instalamos cookiecutter para generar plantillas del boilerplate de proyectos de software:
brew install cookiecutter
Instalamos el framework pre-commit:
pip3 install pre-commit
Instalamos colima y docker para construir
y correr contenedores en local sin tener que pagar por licencias de Docker Desktop
:
brew install colima docker
Ahora instalamos kind para crear clusters kubernetes en local:
brew install kind
Instalamos k6 para realizar pruebas de carga en aplicaciones web:
brew install k6
Para 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 ipcalc
Luego instalamos mtr la herramienta para generar trazado de tráfico:
brew install mtr
Seguimos con la instalación de nmap, una herramienta para escaneo de red:
brew install nmap
Cuando 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