Este role instala las herramientas que usamos a dirario en Mikroways. Es una forma de mantener el workstation de nuestros talentos con las versiones de aquellas herramientas usadas, como así simplificar la generación de bastiones que nos entregan nuestros clientes y nos permiten trabajar cómodamente.
En resumen, este role realiza las siguientes tareas:
- Configura un proxy en caso de tener que instalar un equipo en una red restringida al acceso a internet por medio de un proxy. Para ello, nos basamos en el role ruzickap.proxy_settings.
- Instala un conjunto de paquetes del sistema necesarios para poder luego instalar otras utilidades comunes.
- Instala docker y compose, como así también podman. Los dos primeros usando otro role de la comunidad, geerlingguy.docker.
- Se instala asdf que es pieza fundamental de nuestras herramientas. A partir de él, varias utilidades más.
- Aquellas herramientas que no estén contempladas por asdf, se instalan con
este role, dentro del home del usuario y no globalmente en el sistema. Estas
herramientas no quedarán en el
PATH
si no se utilizan los dotfiles de Mikroways. El mismo role los instala, simplemente lo mencionamos por si se configura no hacerlo. - Instala en el usuario que corre el role los dotfiles de Mikroways.
- Además, se instalan plugins de helm y krew que más usamos en Mikroways.
De esta forma, corriendo este role, disponemos de un desktop listo para empezar a trabajar.
Dependemos de los roles especificados en meta/requirements.yml
.
Por ello, cuando se instale este role, se instalarán los roles que son
dependencias de forma automática.
Es muy importante leer su documentación, porque si bien este role, maneja algunos valores de estos roles, otros valores más específicos pueden setearse con otras variables.
Simplemente agregás en requirements.yml
las siguientes lineas:
- name: mikroways.workstation
version: 2.4.0
¡Verificar si no hay una nueva version!
Las variables se han separado en archivos según la siguiente clasificación:
Estas variables son un wrapper de aquellas usadas por el role del que dependemos:
Nombre | Default | Descripción |
---|---|---|
workstation_docker_enabled |
true |
Instalar el engine docker |
workstation_docker_install_compose |
true |
Instalar docker compose |
workstation_docker_install_compose_plugin |
true |
Instalar docker compose como plugin |
workstation_docker_compose_version |
2.16.0 |
Versión de compose a instalar |
workstation_docker_users |
{{ ansible_user }} |
Usuarios para interactuar con docker |
Qué locales instalar en la máquina
Nombre | Default | Descripción |
---|---|---|
workstation_locales |
[ es_ES.UTF-8, es_AR.UTF8, en_US.UTF8] |
Locales |
Estas variables son un wrapper de aquellas usadas por el role del que dependemos
Nombre | Default | Descripción |
---|---|---|
workstation_proxy_enabled |
false |
Habilitar el uso de proxy |
workstation_proxy_http |
null |
Datos del proxy http |
workstation_proxy_https |
null |
Datos del proxy https |
workstation_proxy_no_proxy |
null |
Direcciones de no proxy |
workstation_proxy_ftp |
null |
Datos del proxy ftp |
workstation_proxy_yum |
null |
Habilitar yum proxy |
workstation_proxy_yum_username |
null |
Yum proxy username |
workstation_proxy_yum_password |
null |
Yum proxy password |
Mikroways tiene sus propios dotfiles. Su instalación es fundamental para tener una experiencia diferencial usando este role. Toda configuración se rige por las siguientes variables:
Nombre | Default | Descripción |
---|---|---|
workstation_dotfiles_enabled |
true |
Habilitar el uso de los dotfiles |
workstation_antigen_directory |
{{ ansible_env.HOME }}/.antigen.zsh |
Indica donde se instala antigen, un requerimiento para nuestros dotfiles |
workstation_antigen_url |
https://git.io/antigen |
La url desde donde descargar antigen |
workstation_dotfiles_directory |
{{ ansible_env.HOME }}/.mikroways/dotfiles |
Directorio donde instalar los dotfiles |
workstation_dotfiles_repository |
https://github.com/Mikroways/dotfiles.git |
Repositorio de nuestros dotfiles |
workstation_dotfiles_version |
master |
Rama principal |
workstation_dotfiles_install_script |
{{ workstation_dotfiles_directory }}/script/install |
Script de instalación de los dotfiles |
workstation_dotfiles_fonts_directory |
{{ ansible_env.HOME }}/.local/share/fonts |
En consolas gráficas se usan fuentes que deben existir en el sistema. Para estos casos, se indica el directorio local de fuentes |
workstation_dotfiles_fonts |
[] |
Lista de url de las fuentes necesarias en un desktop gráfico |
Las herramientas se instalan con diferentes productos:
- asdf
- Descarga de binarios en el HOME del usuario que corre el playbook.
Todo lo referente a asdf se configura con las siguientes variables:
Nombre | Default | Descripción |
---|---|---|
workstation_asdf_download_url |
https://github.com/asdf-vm/asdf/releases/download/... |
URL de descarga de GH releases |
workstation_asdf_dest |
{{ ansible_env.HOME }}/.asdf |
Directorio donde se instalrá asdf |
workstation_asdf_version |
v0.16.7 |
Version de asd |
workstation_asdf_tools |
{ plugin_name_1: [latest], plugin_name2: [] } |
Listado de versiones de diferentes herramientas a instalar. A continuación explicamos el formato |
workstation_asdf_external_sources_plugins |
{plugin_1: url, plugin2: url} |
Listado de urls desde donde instalar plugins. A continuación explicaremos el formato |
Es un diccionario donde se mantiene como clave, el nombre del plugin y como valor un listado de versiones a instalar. Si el listado de versiones es vacío, no se instala ninguna versión. Si se setea una o más versiones, la última de la lista será la configurada como versión por defecto.
Puede usar latest para instalar la última versión de un utilitario.
Para ver un ejemplo, puede verse default/main/asdf.yml
.
Nombre | Default | Descripción |
---|---|---|
workstation_tools_install_directory |
{{ ansible_env.HOME }}/.mikroways/bin |
Directorio donde descargar utilitarios |
workstation_tools_only |
[] |
Qué utilitatios instalar de todos |
workstation_tools |
arreglo de utilitarios (ver abajo) |
La variable workstation_tools
se compone como un arreglo de arreglos separado
en diferentes archivos que nos simplifica la gestión de las herramientas según:
workstation_kubernetes_tools
: herramientas para interactuar con kubernetes no soportadas por asdf.workstation_other_tools
: otras herramientas que no se contemplan por asdf.
Lista de plugins de helm:
Nombre | Default | Descripción |
---|---|---|
workstation_helm_plugins |
[...] |
Plugins usados por Mikroways |
Se instalan sólo si helm fue seleccionado como tool
Lista de plugins de kubectl instalados con krew:
Nombre | Default | Descripción |
---|---|---|
workstation_krew_path |
{{ ansible_env.HOME }}/.krew/bin |
Directorio donde se instala kew |
workstation_krew_plugins |
[...] |
Plugins usados por Mikroways |
Se instalan sólo si krew fue seleccionado como tool
- system_packages
- docker
- tools
- dotfiles
- locales
- proxy
Para trabajar en el desarrollo del presente role, se recomienda instalar python.
El propio repositorio mantiene variables de ambiente usando direnv dentro del
.envrc
y propone usar tox como librería para el
desarrollo e intergración con CI/CD.
Si ya tenés un desktop de Mikroways instalado por este role, entonces todo va a ser más simple.
Instalar las versiones de python con las que probar. Dado que las versiones de
python soportadas por ansible dependen de ansible-core,
se codifica contemplando las últimas versiones de ansible-core. Para ello, puede
observarse que se confecciona una matriz de pruebas en tox.ini
justamente con
dos versiones de python y 2 de ansible. Para que esto funcione, explicaremos los
pasos a seguir usando asdf:
asdf install
asdf reshim python
pip3.10 install -r requirements.txt
pip3.11 install -r requirements.txt
Tox tiene una serie de comandos, pero lo más importante es comprender los
ambientes configurados en tox.ini
. Los ambientes pueden verse con:
tox list
Al correr simplemente tox
se ejecuta tox run
. Pero nosotros podemos
manipular tox run
con las opciones que se ven con --help
. Lo más importante
a mencionar es:
tox r -e py310-ansible-10 -- -vvv converge
Esto ejecuta únicamente el ambiente
py310-ansible-10
y alcommand
configurado entox.ini
le pasa los argumentos luego de--
, es decir, con la configuración actual, correrámolecule -vvv converge
Otro comando útil con tox, es ejecutar otro comando, por ejemplo ansible-lint. ¿Cómo es posible hacer eso?:
tox exec -e py310-ansible-10 -- ansible-lint .
- Analizar si funcionan los tags mencionados