chasinglogic.os_packages
Rôle Ansible : os-packages
Installer des paquets à l'aide de fichiers de variables
Quand et pourquoi utiliser ce rôle
Inévitablement, lorsque vous spécifiez des configurations pour plusieurs systèmes, vous devrez installer des paquets OS qui n'ont pas besoin d'autres configurations après leur installation. Des paquets comme build-essential
ou gcc
pour un serveur de construction. Il serait très compliqué de créer de nombreux rôles spécifiques à un paquet pour installer ces fichiers. Même si vous ne suivez pas la méthode "un rôle par paquet", vous pouvez vous retrouver dans une situation où vous avez plusieurs listes de paquets sur mesure dispersées dans vos rôles, ce qui rend difficile leur mise à jour et leur mise en correspondance.
Ce rôle vous permet de centraliser vos listes de paquets dans des fichiers de variables afin qu'elles soient facilement référencées entre elles. Cela fonctionne dans un environnement hétérogène : si vous avez deb_packages
spécifié mais qu'Ansible ne s'exécute pas sur un hôte avec apt installé, les deb_packages
seront simplement ignorés. Pas besoin de conditions lorsque.
Il n'est pas recommandé d'utiliser ce rôle pour installer des logiciels qui nécessitent beaucoup de configuration ou d'autres préparations. Par exemple, Nextcloud, NGINX ou Apache seraient de mauvais choix à installer de cette manière, car ils nécessiteront invariablement une configuration supplémentaire (SELinux, configuration, règles de pare-feu, etc.) et devraient donc avoir leur propre rôle dédié qui gère tous les détails de leur déploiement.
Variables du rôle
Nom | Description | Type | Par défaut | Requis |
---|---|---|---|---|
packages_apt_globally_update_cache | Indique si un apt update global doit être exécuté avant l'installation des paquets. |
boolean | true | non |
generic_packages | Une liste de paquets qui utiliseront le module package dans Ansible. De nombreux paquets ont des noms génériques et cohérents à travers les distributions Linux. |
list | [] | non |
deb_packages | Une liste de paquets qui utiliseront le bon module d'emballage selon le système cible dans Ansible pour les paquets .deb | list | [] | non |
rpm_packages | Une liste de paquets qui utiliseront le bon module d'emballage selon le système cible dans Ansible pour les paquets .rpm | list | [] | non |
pacman_packages | Une liste de paquets qui utiliseront le module d'emballage pacman d'Ansible | list | [] | non |
generic_package_specs | Une liste de spécifications de paquet qui utiliseront le module package dans Ansible. De nombreux paquets ont des noms génériques et cohérents à travers les distributions Linux. |
list | [] | non |
deb_package_specs | Une liste de spécifications de paquet qui utiliseront le bon module d'emballage selon le système cible dans Ansible pour les spécifications de paquet .deb | list | [] | non |
rpm_package_specs | Une liste de spécifications de paquet qui utiliseront le bon module d'emballage selon le système cible dans Ansible pour les spécifications de paquet .rpm | list | [] | non |
pacman_package_specs | Une liste de spécifications de paquet qui utiliseront le module d'emballage pacman d'Ansible | list | [] | non |
Spécifier les dépendances
Les variables generic_packages
, deb_packages
, pacman_packages
, et rpm_packages
sont des listes de paquets à installer. Ce sont simplement des listes de chaînes de caractères qui seront assurées d'être installées :
generic_packages:
- gcc
- tmux
- vim
Utiliser des états autres que présents
Les variables generic_package_specs
, deb_package_specs
, etc. sont utilisées pour un contrôle plus précis sur l'installation des paquets. Elles peuvent également être utilisées pour supprimer des paquets, installer la dernière version ou obtenir des listes spécifiques des paquets installés via des variables de boucle dans la sortie Ansible. Pour utiliser une spécification de paquet, cela ressemble à ceci :
generic_package_specs:
- name: gcc
state: latest
La liste deb_package_specs
permet en plus de spécifier l'option update_cache
:
deb_package_specs:
- name: gcc
state: latest
update_cache: yes
Exemple de playbook
- hosts: all
roles:
- role: os-packages
Licence
ansible-galaxy install chasinglogic.os_packages