Skip to content

docs: document missing role dependencies for first-time installs#14

Open
Intimaria wants to merge 1 commit into
mainfrom
docs/first-time-role-requirements
Open

docs: document missing role dependencies for first-time installs#14
Intimaria wants to merge 1 commit into
mainfrom
docs/first-time-role-requirements

Conversation

@Intimaria

Copy link
Copy Markdown

The mikroways.workstation role imports geerlingguy.docker and ruzickap.proxy_settings at parse time, but roles.yml/roles-mw.yml never install them, causing a "role not found" error on a fresh machine.

The mikroways.workstation role imports geerlingguy.docker and
ruzickap.proxy_settings at parse time, but roles.yml/roles-mw.yml never
install them, causing a "role not found" error on a fresh machine.
@juanpsm

juanpsm commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Estuve viendo la causa raíz en el role, porque el workaround documentado me generaba algunas dudas: suma ruido al README, depende de correr los comandos en un orden específico: el segundo ansible-galaxy install solo funciona si ya corriste el primero, porque ansible/roles/ está en .gitignore y ese path no existe hasta entonces. Y si el día de mañana el role cambia sus dependencias hay que acordarse de volver acá a actualizar la doc.

En ansible-workstation#60): modifiqué le role para que las dependencias se declaren en el meta/main.yml del role, que ansible-galaxy sí resuelve al instalar. Pero tiene un problema: según la documentación oficial, Ansible siempre ejecuta las dependencias ANTES del role que las incluye:
https://docs.ansible.com/projects/ansible/latest/playbook_guide/playbooks_reuse_roles.html#using-role-dependencies.

Es decir, docker y proxy correrían antes que cualquier tarea del role, incondicionalmente, que se rompe ya que geerlingguy.docker corre antes de que corran las tareas que preparan el sistema (apt-get update, paquetes base). El role necesita el orden system_packages -> docker y las meta-dependencias no lo respetan.

Lo que hice para probar fue declarar las dependencias en meta/main.yml pero con when: false y así se separa la instalación de ejecución. ansible-galaxy las instala automáticamente con el mismo comando de siempre, pero nunca se ejecutan como meta-dependencias: el role las sigue importando con import_role donde corresponde.

Pero quería discutir esto, no me parece muy prolijo y quizás hay algo que se me está escapando. El when: false hace que cada corrida del playbook arranque con muchas tareas en skipping y mete mucho ruido. Se pueden ocultar con display_skipped_hosts = false pero eso apaga todos los skips, que tampoco me convence. Escucho ideas!

Se puede bumpear roles.yml a 2.8.0 acá y probar sin necesidad de hacer el segundo ansible-galaxy role install.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants