In diesem Schritt lernen Sie, wie Sie Variablen in einem Ansible-Playbook verwenden. Variablen sind unerlässlich, um Ihre Automatisierung flexibel, wiederverwendbar und einfacher zu lesen und zu warten zu machen. Anstatt Werte wie Paketnamen oder Dateipfade direkt in Ihre Tasks zu "hardcoden", können Sie sie als Variablen definieren und im gesamten Playbook darauf verweisen. Wir erstellen ein einfaches Playbook, das Variablen verwendet, um den Apache-Webserver (httpd
) zu installieren und eine grundlegende Webseite bereitzustellen.
-
Zum Projektverzeichnis navigieren
Stellen Sie zunächst sicher, dass Sie sich im richtigen Arbeitsverzeichnis befinden. Alle Ihre Arbeiten für dieses Labor werden im Verzeichnis ~/project
durchgeführt, das für Sie erstellt wurde.
cd ~/project
Installieren Sie das Paket ansible-core
.
sudo dnf install -y ansible-core
-
Das Ansible-Playbook erstellen
Nun erstellen wir unsere Playbook-Datei. Wir nennen sie playbook.yml
. Sie können einen Texteditor für die Kommandozeile wie nano
verwenden, um die Datei zu erstellen und zu bearbeiten.
nano playbook.yml
Dieser Befehl öffnet eine leere Datei im nano
-Editor. Fügen Sie nun den Anfang des Playbooks hinzu. Dieser Abschnitt definiert den Namen des Plays, den Zielhost (localhost
, da wir es auf demselben Rechner ausführen) und einen vars
-Abschnitt, in dem wir unsere Variablen definieren werden.
---
- name: Deploy Apache using variables
hosts: localhost
become: true
vars:
web_pkg: httpd
web_content: "Hello from Ansible Variables"
Hier ist eine Aufschlüsselung der Playbook-Struktur:
hosts: localhost
: Gibt an, dass das Playbook auf dem lokalen Rechner ausgeführt werden soll.
become: true
: Weist Ansible an, die Berechtigungseskalation (entspricht sudo
) für die Tasks zu verwenden, was für die Installation von Software erforderlich ist.
vars
: Dies ist ein Dictionary, in dem wir unsere Schlüssel-Wert-Paare für Variablen definieren. Wir haben web_pkg
für den Paketnamen und web_content
für den Inhalt unserer Testwebseite definiert.
-
Tasks zum Playbook hinzufügen
Fügen Sie als Nächstes unterhalb des vars
-Abschnitts die tasks
hinzu, die diese Variablen verwenden werden. Die erste Task installiert das Apache-Paket und die zweite erstellt eine index.html
-Datei. Fügen Sie den folgenden tasks
-Block zu Ihrer playbook.yml
-Datei hinzu, während Sie sich noch im nano
-Editor befinden.
tasks:
- name: Install the latest version of Apache
ansible.builtin.dnf:
name: "{{ web_pkg }}"
state: latest
- name: Create a basic index.html file
ansible.builtin.copy:
content: "{{ web_content }}"
dest: /var/www/html/index.html
Beachten Sie, wie wir {{ variable_name }}
verwenden, um auf die zuvor definierten Variablen zu verweisen. Dies ist Jinja2-Templating, das Ansible für Variablen verwendet. Dies macht die Task-Definitionen generisch; wenn Sie stattdessen Nginx installieren möchten, müssten Sie nur die Variable web_pkg
ändern, nicht die Task selbst.
-
Playbook überprüfen und speichern
Ihre vollständige playbook.yml
-Datei sollte nun wie folgt aussehen. Überprüfen Sie den Inhalt und die Einrückung sorgfältig, da YAML sehr empfindlich auf Leerzeichen reagiert.
---
- name: Deploy Apache using variables
hosts: localhost
become: true
vars:
web_pkg: httpd
web_content: "Hello from Ansible Variables"
tasks:
- name: Install the latest version of Apache
ansible.builtin.dnf:
name: "{{ web_pkg }}"
state: latest
- name: Create a basic index.html file
ansible.builtin.copy:
content: "{{ web_content }}"
dest: /var/www/html/index.html
Um die Datei in nano
zu speichern, drücken Sie Ctrl+X
, dann Y
zur Bestätigung der Änderungen und schließlich Enter
, um die Datei unter dem Namen playbook.yml
zu schreiben.
-
Playbook-Syntax überprüfen
Bevor Sie ein Playbook ausführen, ist es immer eine gute Praxis, dessen Syntax auf Fehler zu überprüfen.
ansible-playbook --syntax-check playbook.yml
Wenn die Syntax korrekt ist, sehen Sie den Dateipfad des Playbooks als Ausgabe, was bestätigt, dass es gültig ist:
playbook: playbook.yml
Wenn Sie Fehler sehen, öffnen Sie die Datei erneut mit nano playbook.yml
und beheben Sie diese. Achten Sie genau auf die korrekte Einrückung (normalerweise zwei Leerzeichen).
-
Playbook ausführen
Führen Sie nun das Playbook aus. Ansible wird eine Verbindung zu localhost
herstellen, die Variablen lesen und die Tasks ausführen.
ansible-playbook playbook.yml
Sie sollten eine Ausgabe sehen, die die erfolgreiche Ausführung jeder Task anzeigt. Der Status changed
bedeutet, dass Ansible eine Änderung am System vorgenommen hat, z. B. ein Paket installiert oder eine Datei erstellt hat.
PLAY [Deploy Apache using variables] *******************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Install the latest version of Apache] ************************************
changed: [localhost]
TASK [Create a basic index.html file] ******************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Wenn Sie das Playbook ein zweites Mal ausführen, sollten die Tasks ok
anstelle von changed
melden, da das Paket bereits installiert ist und die Datei bereits den richtigen Inhalt hat. Dies demonstriert die Idempotenz von Ansible.
-
Konfiguration manuell überprüfen
Obwohl das Playbook abgeschlossen ist, können Sie manuell überprüfen, ob die Tasks wie erwartet funktioniert haben. Überprüfen Sie zunächst, ob das httpd
-Paket installiert wurde:
rpm -q httpd
Die Ausgabe sollte den Paketnamen und die Version anzeigen:
httpd-2.4.57-7.el9.x86_64
Überprüfen Sie als Nächstes den Inhalt der index.html
-Datei:
cat /var/www/html/index.html
Die Ausgabe sollte mit dem Wert Ihrer web_content
-Variable übereinstimmen:
Hello from Ansible Variables
Sie haben erfolgreich Variablen in einem Ansible-Playbook verwendet, um ein System zu konfigurieren.