Die Installation mehrerer Pakete auf CentOS mit Ansible

Die Installation mehrerer Pakete auf CentOS mit Ansible
Auf Ansible können Sie die verwenden DNF oder Yum Modul zum Installieren von Softwarepaketen auf CentOS- oder RHEL -Hosts. Standardmäßig installieren diese Module nur ein einzelnes Softwarepaket. Du kannst den ... benutzen DNF oder Yum Modul mehrmals in Ihrem Ansible Playbook, um so viele Softwarepakete zu installieren, wie Sie möchten. Dies ist jedoch nicht die effizienteste Art, dies zu tun, da es eine Menge Code -Wiederholung geben wird, die wir nach Möglichkeit vermeiden möchten. Glücklicherweise können wir Schleifen verwenden, um so viele Softwarepakete zu installieren, wie wir es möchten, ohne eine Code -Wiederholung.

In diesem Artikel werden Ihnen angezeigt. Also lasst uns anfangen.

Voraussetzungen

Wenn Sie die Beispiele in diesem Artikel ausprobieren möchten,
1) Sie müssen Ansible auf Ihrem Computer installiert haben.
2) Sie müssen mindestens ein CentOS/RHEL 7 oder 8 Host haben, das für die Ansible -Automatisierung konfiguriert ist.

Es gibt viele Artikel unter LinuxHint, die der Installation von Ansible und Konfigurieren von Hosts für Ansible Automation gewidmet sind. Sie können diese bei Bedarf überprüfen.

Einrichten eines Projektverzeichnisses

Bevor wir uns weiter bewegen, werden wir ein Projektverzeichnis erstellen, um die Dinge ein wenig zu organisieren.

Um das Projektverzeichnis zu erstellen CentOS-PKG/ und alle erforderlichen Unterverzeichnisse (in Ihrem aktuellen Arbeitsverzeichnis) führen Sie den folgenden Befehl aus:

$ mkdir -pv Centos -PKG/Playbooks

Sobald das Projektverzeichnis erstellt wurde, navigieren Sie wie folgt zum Projektverzeichnis:

$ cd Centos-pkg/

Als nächstes erstellen Sie eine Gastgeber Inventardatei wie folgt:

$ nano Gastgeber

Fügen Sie den Host -IP- oder DNS -Namen hinzu (VM3.Nodekite.com, in meinem Fall) Ihrer CentOS/Rhel -Hosts in der Inventardatei (ein Host pro Zeile).

Sobald Sie fertig sind, speichern Sie die Datei durch Drücken + X, gefolgt von Y Und .

Erstellen Sie eine ansible Konfigurationsdatei Ansible.CFG In Ihrem Projektverzeichnis wie folgt:

$ nano ansible.CFG

Geben Sie dann die folgenden Zeilen in die Ansible.CFG Datei.

[Standardeinstellungen]
Inventory = Hosts
host_key_checking = false

Sobald Sie fertig sind, speichern Sie die Ansible.CFG Datei durch Drücken + X, gefolgt von Y Und .

Versuchen Sie, alle CentOS/Rhel -Hosts zu pingen, die Sie in Ihrem hinzugefügt haben Gastgeber Inventardatei wie folgt:

$ ANSIBLE ALL -U ANSIBLE -M PING

Wie Sie sehen können, ist mein CentOS 8 -Host zugänglich.

Installieren eines einzelnen Softwarepakets

In diesem Abschnitt wird angezeigt, wie Sie ein einzelnes Softwarepaket mit dem installieren DNF oder Yum Modul der Ansible auf Ihren Centos/Rhel -Hosts.

Erstellen Sie zunächst das neue Spielbuch Installationspaket.Yaml im Playbooks/ Verzeichnis wie folgt:

$ nano playbooks/install_package.Yaml

Geben Sie als nächstes die folgenden Zeilen in die Installationspaket.Yaml Datei.

- Hosts: Alles
Benutzer: Ansible
wahr werden
Aufgaben:
- Name: Installieren Sie das HTTPD -Paket
DNF:
Name: httpd
Zustand: Gegenwart
update_cache: true

Sobald Sie fertig sind, speichern Sie die Datei durch Drücken + X, gefolgt von Y Und .

Hier habe ich nur eine Aufgabe hinzugefügt, Installieren Sie das HTTPD -Paket. Der Zweck dieser Aufgabe besteht darin, die zu installieren httpd Paket auf CentOS/RHEL 8.

CentOS/rhel 7 verwendet die nicht DNF Paketmanager, es verwendet die Yum Paket-Manager. Wenn Sie also CentOS/RHEL 7 verwenden, ändern Sie sich DNF Zu Yum, wie im Screenshot unten markiert. Es sind keine anderen Änderungen erforderlich.

Der Name Option wird verwendet, um das zu sagen DNF oder Yum Modul den Namen des Pakets, das Sie installieren möchten. In diesem Fall wird es das sein httpd Paket.

Der Zustand Option wird verwendet, um das zu sagen DNF oder Yum Modul die Aktion (i.e. Installieren, Upgrade, Entfernen) Es sollte das angegebene Paket übernehmen. In diesem Fall ist die Aktion gegenwärtig.

Die unterstützten Werte der Zustand Option sind:

gegenwärtig - installiert das Paket, wenn es nicht bereits installiert ist.

neueste - installiert das Paket, wenn es nicht bereits installiert ist. Wenn bereits installiert, prüft das Modul nach Updates. Wenn eine aktualisierte Version des Pakets verfügbar ist, wird die neue Version installiert.

abwesend - Entfernen Sie das Paket, wenn es installiert ist.

Wenn der update_cache Option ist auf WAHR, Der DNF/YUM -Paket -Repository -Cache wird aktualisiert, bevor das Paket installiert ist.

Leiten Sie die Installationspaket.Yaml Spielbuch wie folgt:

$ Ansible-Playbook-Playbooks/install_package.Yaml

Wie Sie sehen können, das Spielbuch Installationspaket.Yaml lief erfolgreich.

Wie Sie sehen können, die httpd Das Paket ist auf meinem CentOS 8 -Host installiert, den ich zu meinem hinzugefügt habe Gastgeber Inventardatei.

$ sudo dnf liste installiert | grep httpd

Wenn Sie sich bei CentOS/RHEL 7 befinden, verwenden Sie die Yum Paketmanager anstelle der DNF Paketmanager, um zu überprüfen, ob das Paket installiert ist.

$ sudo yum liste installiert | grep httpd

Installieren mehrerer Softwarepakete über die With_items -Schleife

Der vorherige Abschnitt dieses Artikels hat Ihnen gezeigt DNF/Yum Modul. In diesem Abschnitt werden Sie angezeigt, wie Sie mehrere Softwarepakete auf Ihren CentOS/RHEL -Hosts mithilfe des Ansible installieren können With_items Schleife.

Erstellen Sie zunächst das neue Spielbuch install_packages.Yaml, folgendermaßen:

$ nano playbooks/install_packages.Yaml

Geben Sie die folgenden Zeilen in die install_packages.Yaml Datei.

- Hosts: Alles
Benutzer: Ansible
wahr werden
Aufgaben:
- Name: Installieren Sie alle Pakete
DNF:
Name: 'item'
Zustand: Gegenwart
update_cache: true
With_items:
httpd
Php
vsftpd

Sobald Sie fertig sind, drücken Sie + X, gefolgt von Y Und , um die zu retten install_packages.Yaml Datei.

Hier habe ich die Paketnamen definiert (httpd, Php, vsftpd) was ich verwenden möchte With_items Schleife.

Ich habe den Paketnamen durch die Variable ersetzt Artikel. Der Artikel Die Variable wird in jeder Iteration mit dem Paketnamen aktualisiert.

Leiten Sie die install_packages.Yaml Spielbuch wie folgt:

$ Ansible-Playbook-Playbooks/install_packages.Yaml

Wie Sie sehen können, das Spielbuch install_packages.Yaml lief erfolgreich.

Der httpd, Php, Und vsftpd Pakete werden auf meinem CentOS 8 -Host installiert, wie Sie im Screenshot unten sehen können.

$ sudo dnf liste installiert | grep httpd
$ sudo dnf liste installiert | Grep Php
$ sudo dnf liste installiert | Grep vsftpd

Installation mehrerer Softwarepakete über die Schleifenschleife

Ausgehend von Ansible 2.5, Die empfohlene Art, Schleifen in Ihrem Spielbuch zu verwenden, besteht darin, die zu verwenden Schleife Schlüsselwort anstelle der With_items Stichwort. Deshalb haben Sie eine Warnmeldung gesehen, als ich das leitete install_packages.Yaml Spielbuch im früheren Abschnitt dieses Artikels.

Arbeiten mit Schleifen mit der Schleife Schlüsselwort ist sehr einfach.

Öffnen Sie zunächst das Spielbuch install_packages.Yaml (Aus dem vorherigen Beispiel) wie folgt:

$ nano playbooks/install_packages.Yaml

Im install_packages.Yaml Spielbuch ersetzen Sie einfach den Begriff With_items mit dem Begriff Schleife, wie im Screenshot unten markiert. Sie müssen nichts anderes ändern.

Sobald Sie fertig sind, drücken Sie + X, gefolgt von Y Und , um die zu retten install_packages.Yaml Datei.

Leiten Sie die install_packages.Yaml Spielbuch wie folgt:

$ Ansible-Playbook-Playbooks/install_packages.Yaml

Wie Sie sehen können, die Aufgabe Installieren Sie alle Pakete lief die DNF/Yum Modul insgesamt dreimal; Einmal für jede Schleife Artikel.

Der httpd, Php, Und vsftpd Pakete werden auf meinem CentOS 8 -Host installiert, wie Sie im Screenshot unten sehen können.

$ sudo dnf liste installiert | grep httpd
$ sudo dnf liste installiert | Grep Php
$ sudo dnf liste installiert | Grep vsftpd

Installieren mehrerer Softwarepakete mithilfe der Array -Syntax

Frühere Abschnitte dieses Artikels zeigten Ihnen, wie Sie die verwenden sollen With_items Und Schleife Schleifen in Ansible, um mehrere Softwarepakete auf CentOS/RHEL 7 oder 8 zu installieren, ohne eine Code -Wiederholung. In diesem Abschnitt wird Ihnen angezeigt, wie Sie dasselbe mit einer einfacheren Array -Syntax tun.

Öffnen Sie zuerst die install_packages.Yaml Spielbuch wie folgt:

$ nano playbooks/install_packages.Yaml

Entferne das With_items oder Schleife Abschnitt aus der Aufgabe und ändern Sie die Name Option zu ['httpd', 'php', vsftpd '], wie im Screenshot unten markiert.

Sobald Sie fertig sind, drücken Sie + X, gefolgt von Y Und , um die zu retten install_packages.Yaml Spielbuch.

Hier, jede zitierte Zeichenfolge in den Quadratklammern ([]) ist ein Array -Element (der Softwarepaketname in meinem Fall). Jedes Array -Element sollte durch ein Komma getrennt werden (,). Sie können so viele Array -Elemente hinzufügen, wie Sie möchten. Ich habe nur drei Elemente hinzugefügt, httpd, Php, Und vsftpd.

Leiten Sie die install_packages.Yaml Spielbuch wie folgt:

$ Ansible-Playbook-Playbooks/install_packages.Yaml

Wie Sie sehen können, paketen die Softwarepakete httpd, Php, Und vsftpd sind auf meinem CentOS 8 -Host installiert.

$ sudo dnf liste installiert | grep httpd
$ sudo dnf liste installiert | Grep Php
$ sudo dnf liste installiert | Grep vsftpd

Abschluss

Dieser Artikel hat Ihnen gezeigt, wie man die benutzt With_items Und Schleife Schleifen sowie die Array -Syntax mit dem Ansible Yum/DNF Modul zum Installieren mehrerer Softwarepakete auf Ihren CentOs/RHEL 7 oder 8 Hosts.

Weitere Informationen finden Sie in der offiziellen Dokumentation der Ansible.

[1] Offizielle Dokumentation von Ansible Loops
[2] Offizielle Dokumentation von Ansible with_items
[3] Offizielle Dokumentation des Ansible DNF -Moduls
[4] Offizielle Dokumentation des Ansible Yum -Moduls