chasinglogic.os_packages
Ansible rol: os-packages
Instalar paquetes usando archivos de variables
Cuándo y por qué usar esta rol
Cuando especificas configuraciones para múltiples sistemas, inevitablemente necesitarás instalar paquetes del sistema operativo que no requieren ninguna configuración adicional una vez instalados. Paquetes como build-essential
o gcc
para un servidor de construcción. Sería muy complicado crear muchos roles individuales específicos para instalar estos paquetes. Incluso si no eliges la ruta de "un rol por paquete", puedes terminar en una situación donde tienes listas de paquetes personalizadas dispersas entre tus roles, lo que puede dificultar la referencia cruzada y mantenerlas actualizadas entre sí.
Este rol te permite centralizar tus listas de paquetes en archivos de variables, para que puedas referenciarlas fácilmente entre sí. Funciona en un entorno heterogéneo; si tienes deb_packages
especificados pero Ansible no se está ejecutando en un host con apt instalado, los deb_packages
simplemente serán ignorados. No se necesitan condiciones adicionales.
No se recomienda usar este rol para instalar software que requiere mucha configuración o configuración adicional. Por ejemplo, Nextcloud, NGINX o Apache serían malas elecciones para instalar de esta manera porque inevitablemente necesitarán configuración adicional (SELinux, configuración, reglas de firewall, etc.) y, por lo tanto, deberían tener su propio rol dedicado que maneje todos los detalles de su implementación.
Variables de Rol
Nombre | Descripción | Tipo | Predeterminado | Requerido |
---|---|---|---|---|
packages_apt_globally_update_cache | Indica si se debe ejecutar una actualización global de apt antes de instalar paquetes. |
boolean | true | no |
generic_packages | Una lista de paquetes que usarán el módulo package en Ansible. Muchos paquetes tienen nombres genéricos y consistentes en las distribuciones de Linux. Deben ir en esta variable. |
list | [] | no |
deb_packages | Una lista de paquetes que usarán el módulo de empaquetado correcto basado en el sistema objetivo en Ansible para paquetes .deb | list | [] | no |
rpm_packages | Una lista de paquetes que usarán el módulo de empaquetado correcto basado en el sistema objetivo en Ansible para paquetes .rpm | list | [] | no |
pacman_packages | Una lista de paquetes que usarán el módulo de empaquetado pacman de Ansible | list | [] | no |
generic_package_specs | Una lista de especificaciones de paquetes que usarán el módulo package en Ansible. Muchos paquetes tienen nombres genéricos y consistentes en las distribuciones de Linux. Deben ir en esta variable. |
list | [] | no |
deb_package_specs | Una lista de especificaciones de paquetes que usarán el módulo de empaquetado correcto basado en el sistema objetivo en Ansible para especificaciones de paquetes .deb | list | [] | no |
rpm_package_specs | Una lista de especificaciones de paquetes que usarán el módulo de empaquetado correcto basado en el sistema objetivo en Ansible para especificaciones de paquetes .rpm | list | [] | no |
pacman_package_specs | Una lista de especificaciones de paquetes que usarán el módulo de empaquetado pacman de Ansible | list | [] | no |
Especificando Dependencias
Las variables generic_packages
, deb_packages
, pacman_packages
y rpm_packages
son listas de paquetes a instalar. Son simplemente listas de cadenas que se asegurarán de estar instaladas:
generic_packages:
- gcc
- tmux
- vim
Usar estados diferentes a presente
Las variables generic_package_specs
, deb_package_specs
, etc. se utilizan para un control más detallado sobre la instalación de paquetes. También se pueden usar para eliminar paquetes, instalar la última versión, o obtener listados específicos de paquetes instalados a través de variables de bucle en la salida de Ansible. Para usar una especificación de paquete se ve así:
generic_package_specs:
- name: gcc
state: latest
La lista deb_package_specs
también permite especificar la opción update_cache
:
deb_package_specs:
- name: gcc
state: latest
update_cache: yes
Ejemplo de Playbook
- hosts: all
roles:
- role: os-packages
Licencia
ansible-galaxy install chasinglogic.os_packages