chasinglogic.os_packages

Ansible Rolle: os-packages

Pakete mit Variablendateien installieren

GitHub Actions GitHub Actions

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

Apache Lizenz

Über das Projekt

Install packages using variable files

Installieren
ansible-galaxy install chasinglogic.os_packages
GitHub Repository
Lizenz
apache-2.0
Downloads
240
Besitzer
Linux and FOSS Enthusiast.