chasinglogic.os_packages
Ansible Rolle: os-packages
Pakete mit Variablendateien installieren
Wann und warum sollte man diese Rolle verwenden
Wenn man Konfigurationen für mehrere Systeme festlegt, muss man oft Betriebssystempakete installieren, die keine zusätzliche Einrichtung benötigen. Pakete wie build-essential
oder gcc
für einen Build-Server. Es wäre sehr umständlich, viele spezielle Rollen für einzelne Pakete zu erstellen. Selbst wenn man nicht den Ansatz "eine Rolle pro Paket" verfolgt, kann man in eine Situation geraten, in der mehrere spezielle Paketlisten in verschiedenen Rollen verteilt sind. Diese Listen können schwer zu vergleichen und aktuell zu halten sein.
Diese Rolle ermöglicht es, die Paketlisten in Variablendateien zu zentralisieren, sodass sie leicht miteinander referenziert werden können. Sie funktioniert in einer heterogenen Umgebung. Wenn deb_packages
angegeben ist, aber Ansible nicht auf einem Host mit apt läuft, werden die deb_packages
einfach ignoriert. Es sind keine Bedingungen erforderlich.
Es wird nicht empfohlen, diese Rolle zu verwenden, um Software zu installieren, die viel Konfiguration oder andere Einrichtungsmaßnahmen erfordert. Beispiele wie Nextcloud, NGINX oder Apache wären schlechte Wahl, weil sie unbedingt zusätzliche Einstellungen (wie SELinux, Konfiguration, Firewall-Regeln usw.) benötigen und daher eine eigene spezielle Rolle erhalten sollten, die alle Details ihrer Bereitstellung behandelt.
Rollenvariablen
Name | Beschreibung | Typ | Standard | Erforderlich |
---|---|---|---|---|
packages_apt_global_update_cache | Gibt an, ob ein globales apt update vor der Paketinstallation ausgeführt werden soll. |
boolean | true | nein |
generic_packages | Eine Liste von Paketen, die das package -Modul in Ansible verwenden. Viele Pakete haben generische und konsistente Namen über verschiedene Linux-Distributionen hinweg. |
Liste | [] | nein |
deb_packages | Eine Liste von Paketen, die das passende Verpackungsmodul basierend auf dem Zielsystem in Ansible für .deb-Pakete verwenden | Liste | [] | nein |
rpm_packages | Eine Liste von Paketen, die das passende Verpackungsmodul basierend auf dem Zielsystem in Ansible für .rpm-Pakete verwenden | Liste | [] | nein |
pacman_packages | Eine Liste von Paketen, die das pacman-Ansible-Verpackungsmodul verwenden | Liste | [] | nein |
generic_package_specs | Eine Liste von Paket-Spezifikationen, die das package -Modul in Ansible verwenden. |
Liste | [] | nein |
deb_package_specs | Eine Liste von Paket-Spezifikationen, die das passende Verpackungsmodul basierend auf dem Zielsystem in Ansible für .deb-Paket-Spezifikationen verwenden | Liste | [] | nein |
rpm_package_specs | Eine Liste von Paket-Spezifikationen, die das passende Verpackungsmodul basierend auf dem Zielsystem in Ansible für .rpm-Paket-Spezifikationen verwenden | Liste | [] | nein |
pacman_package_specs | Eine Liste von Paket-Spezifikationen, die das pacman-Ansible-Verpackungsmodul verwenden | Liste | [] | nein |
Abhängigkeiten angeben
Die Variablen generic_packages
, deb_packages
, pacman_packages
und rpm_packages
sind Listen von zu installierenden Paketen. Sie sind einfach Listen von Zeichenfolgen, die sichergestellt werden, dass sie installiert werden:
generic_packages:
- gcc
- tmux
- vim
Andere Zustände als vorhanden verwenden
Die Variablen generic_package_specs
, deb_package_specs
usw. werden verwendet, um eine feinere Kontrolle über die Paketinstallation zu haben. Sie können auch verwendet werden, um Pakete zu entfernen, die neueste Version zu installieren oder spezifische Installationen von Paketen im Ansible-Ausgang zu erhalten. Um eine Paket-Spezifikation zu verwenden, sieht es folgendermaßen aus:
generic_package_specs:
- name: gcc
state: latest
Die Liste deb_package_specs
erlaubt zusätzlich die Angabe der Option update_cache
:
deb_package_specs:
- name: gcc
state: latest
update_cache: yes
Beispiel-Playbook
- hosts: all
roles:
- role: os-packages
Lizenz
ansible-galaxy install chasinglogic.os_packages