En esta guia se describe la configuración del sistema MacOS para adaptarlo a un ambiente de trabajo para realizar tareas relacionadas a la administración de:
- MacOS Personal
- 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 esto necesito dejar algunas cosas bien configuradas:
- Entornos de desarrollo
- Gestores de paquetes
- Editor de textos
- Emulador de Terminal
- Entorno del shell
- Cliente VPN
- Navegador Web
Realizaremos las siguientes actividades orientadas a instalar y configurar:
- Herramientas de linea de comando XCode
- Gestor de paquetes Brew
- Editor de textos vim
- Emulador de terminal iTerm2
- El shell zsh con oh-my-zsh
- Herramientas de búsqueda en linea de comandos
- Conjunto de herramientas de linea de comandos
- Herramientas de gestión Cloud
Instalamos XCode cli tools:
$ xcode-select --install
Verificamos instalación de xcode cli tools:
$ xcode-select -p
Instalar el gestor de paquetes brew:
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Configurar brew:
$ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/jmedina/.zprofile
$ eval "$(/opt/homebrew/bin/brew shellenv)"
$ brew help
Configurar repos:
$ brew tap
$ brew tap homebrew/cask
Mostrando taps:
$ brew tap
homebrew/cask
homebrew/core
Buscando paquetes:
$ brew search git
Actualizando lista de paquetes:
$ brew update
Instalando un paquete:
$ brew install git
Desinstalando paquetes:
$ brew uninstall git
Forzando desinstalacion de paquete:
$ brew unintall -f git
Actualizando paquetes:
$ brew upgrade
$ brew update && brew upgrade
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 que estoy acostumbrado a usar en Linux.
$ brew install gnu-tar
Hace falta agregar el path:
$ vim $HOME/.zshrc
...
...
...
export PATH="/opt/homebrew/opt/gnu-tar/libexec/gnubin:$PATH"
Recargamos configuración:
$ source $HOME/.zshrc
Instalación de vim:
$ brew install vim
Editar config:
$ 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
" Configuracion spell check
"set spell
set nospell
setlocal spell spelllang=es,en " Corregir palabras usando diccionarios en español
" Mapeos
"inoremap " ""<left>
"inoremap ' ''<left>
"inoremap ( ()<left>
"inoremap [ []<left>
"inoremap { {}<left>
"inoremap {<CR> {<CR>}<ESC>O
"inoremap {;<CR> {<CR>};<ESC>O
" Habilitar fzf
set rtp+=/opt/homebrew/opt/fzf
" Syntax for markdown enabled
au BufNewFile,BufFilePre,BufRead *.md set filetype=markdown
au BufNewFile,BufFilePre,BufRead *.txt set filetype=markdown
set syntax=markdown
"
" 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'
" editorconfig
Plug 'editorconfig/editorconfig-vim'
" vim-terraform
Plug 'hashivim/vim-terraform'
" Initialize plugin system
call plug#end()
"
" THEME:
"
colorscheme challenger_deep
Creamos directorio para spell check:
$ mkdir -p ~/.vim/spell
$ cd ~/.vim/spell
Descargaremos los siguientes archivos:
- es.latin1.spl
- es.latin1.sug
- es.utf-8.spl
- es.utf-8.sug
Descargamos los archivos:
$ wget https://ftp.vim.org/vim/runtime/spell/es.latin1.spl
$ wget -k https://ftp.vim.org/vim/runtime/spell/es.latin1.spl
$ wget --no-check-certificate https://ftp.vim.org/vim/runtime/spell/es.latin1.spl
$ wget https://ftp.vim.org/vim/runtime/spell/es.latin1.sug
$ 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
Shortcuts:
- ]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.
Instalar herramienta para gestión de plugins: plug-vim:
$ curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
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 iterm2 de cask:
$ brew install --cask iterm2
Shortcuts:
- Win + N: Nuevo ventana
- Win + T: Nuevo tab
- Shift + Win + D: Split Horizontal
- Win + D: Split Vertical
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 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 la fuente Powerline:
$ cd data/vcs/jorge.medina
$ git clone https://github.com/powerline/fonts.git --depth=1
$ cd fonts
$ ./install.sh
$ cd
Configurar fuente en iterm3, ir "Preferences", "Profiles", "Text":
En Fonts, cambiar a ProFont for Powerline
.
Configurar tema en iterm2, ir "Preferences", "Profiles", "Colors":
En Color Presets...
, cambiar a Solarized Dark
.
Instalar tmux:
$ brew install tmux
Habilitamos el plugin:
plugins=(cp osx colored-man-pages colorize pip python brew git tmux)
Instalamos paquete de coreutils:
$ brew install coreutils
Editamos el archivo de configuración de zsh:
$ vim .zshrc
Agregamos el PATH:
# PATHS
export PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:$PATH"
Instalamos tree:
$ brew install tree
Instalamos watch:
$ brew install watch
Instalamos fzf:
$ brew install fzf
Habilitamos integraciones:
$ /opt/homebrew/opt/fzf/install
Usar fzf en vim:
$ vim .vimrc
Al final agregar:
set rtp+=/opt/homebrew/opt/fzf
Instalar ack ak para búsquedas:
$ brew install ack
Instalamos the silver searcher
$ brew install the_silver_searcher
Instalamos la siguiente lista de paquetes:
$ brew install wget curl nmap make autoconf mcrypt gpg2 gettext readline openssl unzip
Agregamos al final de .zshrc:
$ vim .zshrc
Agregamos al final:
# PATHS
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"
Instalamos google-cloud-sdk:
$ brew install google-cloud-sdk
Editamos el archivo de configuración de zsh:
$ vim .zshrc
Agregar a la lista de sources:
$ source /opt/homebrew/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.zsh.inc
Instalación de kubectl:
$ brew install kubectl
Instalación de ansible:
$ brew install ansible
Instalamos generador de contraseñas en cli:
$ brew install pwgen
Instalamos keepassxc:
$ brew install --cask keepassxc
Instalamos drone-cli:
$ brew install drone-cli
$ source .dronerc
Instalamos inso:
$ brew install inso
Instalamos helm:
$ 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 la calculadora de IPs
$ brew install ipcalc
Instaláremos herramientas trazado de tráfico:
$ brew install mtr
$ brew install postgresql
Instalamos dbeaver:
$ 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 la herramienta markdown link check:
$ npm install -g markdown-link-check
Instalamos terraform y otras herramientas necesarias:
$ brew install terraform 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 checkov:
$ pip3 install -U checkov
Instalamos yamllint e yq:
$ brew install yamllint yq
Instalamos cookiecutter:
$ brew install cookiecutter
Instalamos el framework pre-commit:
$ pip3 install pre-commit
Instalamos colimay docker:
$ brew install colima docker
Ahora instalamos kind y skaffold:
$ brew install kind skaffold
Instalamos k6:
$ brew install k6
Instalamos el siguiente software:
-
Descargar Google Chrome, iniciar sesión y sincronizar configuraciones. googlechrome.dmg
-
Descargar Brave Browser, iniciar sesión y sincronizar configuraciones. Brave-Browser-arm64.dmg
-
Descargar Tunnelblick, importar configuración y realizar conexión. Tunnelblick_3.8.6a_build_5711.dmg
-
Descargar el controlador de mi mouse keninston y configurar mapa de teclas. kensingtonworks_2.3.1_1632814867.pkg