Playbook ist nichts anderes als Ansibles Konfigurationsverwaltungsskripts und kann verwendet werden, um Bereitstellungen und Konfigurationen von verwalteten Knoten zu verwalten. Das Playbook enthält eine Reihe von Richtlinien, die Ihre verwalteten Knoten durchsetzen sollen, oder eine Reihe von Schritten in einem allgemeinen IT-Prozess.
Playbooks werden in einer einfachen Textsprache geschrieben und entwickelt. Die Syntax, die wir in Playbooks verwenden, unterscheidet sich von normalen Befehlen, die wir im vorherigen Tutorial getestet haben.
Im vorherigen Tutorial haben wir gesehen, wie man Ansible unter CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 &Debian 9 installiert .
Ansible-Playbook erstellen
Für diese Demo erstellen wir ein Playbook namens web.yml zum Konfigurieren eines Hosts zum Ausführen eines Apache-Webservers . Jedes Playbook besteht aus einem oder mehreren Plays in einer Liste.
Für jeden Spielzug im Playbook können Sie auswählen, auf welche Computer in Ihrer Infrastruktur Sie abzielen und welcher Remote-Benutzer die Aufgaben ausführen soll.
vi web.yml
CentOS/RHEL-Playbook:
--- - hosts: 192.168.1.20 remote_user: raj become: yes become_method: su tasks: - name: Install Apache yum: pkg=httpd state=latest - name: Copying the demo file template: src=/etc/ansible/index.html dest=/var/www/html owner=apache group=apache mode=0644 - name: Enable Apache on System Boot service: name=httpd enabled=yes notify: - start apache - setup firewalld - reload firewalld handlers: - name: start apache service: name=httpd state=started - name: setup firewalld firewalld: service: http permanent: true state: enabled - name: reload firewalld service: name=firewalld state=restarted
Ubuntu/Debian-Playbook:
--- - hosts: 192.168.1.30 remote_user: raj become: yes become_method: sudo tasks: - name: Install Apache apt: name: apache2 update_cache: yes - name: Copying the demo file template: src=/etc/ansible/index.html dest=/var/www/html owner=www-data group=www-data mode=0644
Erstellen Sie eine Demo-HTML-Datei (/etc/ansible/index.html ). Diese HTML-Datei wird im standardmäßigen DocumentRoot des Apache-Servers abgelegt auf dem verwalteten Knoten.
vi /etc/ansible/index.html
HTML:
<html> <head> <title>Apache is installed by Ansible</title> </head> <body> <h1>Apache is installed by Ansible</h1> <p>Now, Apache is managed through Ansible</p> </body> </html>
Aufschlüsselung des Ansible-Playbooks
Jetzt gehen wir die einzelnen Abschnitte des Playbooks web.yml durch Datei, um zu verstehen, was das bedeutet.
Datei beginnt mit
---
Alle YAML-Dateien sollten mit (drei Bindestrichen) ---
beginnen und dies zeigt den Beginn eines Dokuments an. YAML ist sehr platzempfindlich und nutzt diesen, um verschiedene Informationen zusammenzufassen. Leerzeichen müssen in Ihrer Datei konsistent sein, um richtig gelesen zu werden. Elemente auf derselben Einrückungsebene werden als gleichgeordnete Elemente betrachtet.
Host und Benutzer
--- - hosts: 192.168.1.20 remote_user: raj
Die Hosts-Zeile ist eine Liste mit einer oder mehreren Gruppen (z. B. Demo-Servern) oder Hostmustern (z. B. 192.168.1.20), getrennt durch Doppelpunkte. Zusammen mit dem Host können Sie das Remote-Benutzerkonto erwähnen.
--- - hosts: 192.168.1.20 remote_user: raj become: yes become_method: su
Sie müssen Root-Benutzer werden, um Pakete auf einem System zu installieren. Dazu können Sie Privilegien-Eskalationsmethoden wie su verwenden oder sudo . Wann immer Sie diese Art von Privilegien-Eskalationsmethoden verwenden, müssen Sie ein Ansible-Playbook mit --ask-become-pass
ausführen Argument.
Aufgaben
Jetzt haben wir eine Reihe von Aufgaben.
tasks: - name: Install Apache yum: pkg=httpd state=latest - name: Copying the demo file template: src=/etc/ansible/index.html dest=/var/www/html owner=apache group=apache mode=0644 - name: Enable Apache on System Boot service: name=httpd enabled=yes
Jedes Spiel enthält eine Liste von Aufgaben, die der Reihe nach einzeln gegen alle Maschinen ausgeführt werden, die mit dem Host-Muster übereinstimmen, bevor mit der nächsten Aufgabe fortgefahren wird.
Wenn Sie das Playbook ausführen, wird es von oben nach unten ausgeführt, und Hosts mit fehlgeschlagenen Aufgaben werden für das gesamte Playbook aus der Rotation genommen.
Jede Aufgabe sollte einen Namen haben und wird verwendet, um die aktuelle Aktivität anzuzeigen, während das Playbook ausgeführt wird. Diese Ausgabe ist für Menschen, daher ist es schön, einigermaßen gute Beschreibungen für jeden Aufgabenschritt zu haben.
Hier wird die neueste Version von Apache installiert und die Demo-HTML (/etc/ansible/index.html) in das Verzeichnis /var/www/html des verwalteten Knotens kopiert und dann der Apache-Dienst aktiviert, damit er während des Systemstarts automatisch gestartet wird.
Benachrichtigen
Diese benachrichtigen Aktionen werden am Ende jedes Aufgabenblocks in einem Playbook ausgelöst und werden nur einmal ausgelöst, selbst wenn sie von mehreren verschiedenen Aufgaben benachrichtigt werden.
notify: - start apache - setup firewalld - reload firewalld
Die benachrichtigen item enthält ein Item namens apache starten , Firewall einrichten und firewalld neu laden . Dies sind die Verweise auf Handler, die bestimmte Funktionen ausführen, wenn sie innerhalb einer Aufgabe aufgerufen werden. Wir definieren den Start-Apache und den Firewalld-Handler.
Handler
Handler sind Aufgabenlisten, die sich nicht wirklich von normalen Aufgaben unterscheiden. Sie werden jedoch nur ausgeführt, wenn ihnen von einem Task mitgeteilt wurde, dass Änderungen auf dem Clientsystem aufgetreten sind.
handlers: - name: start apache service: name=httpd state=started - name: setup firewalld firewalld: service: http permanent: true state: enabled - name: reload firewalld service: name=firewalld state=restarted
In unserem Fall haben wir einen Handler, der den Apache-Dienst startet und die Firewall konfiguriert, nachdem das Paket installiert wurde.
Diese Aktion geschieht, weil der Melder den Handler über Änderungen am System benachrichtigt hat, was bedeutet, dass das Apache-Paket installiert und zusammen mit dieser Demodatei nach DocumentRoot kopiert werden musste.
Ansible Playbook ausführen
Sobald Sie ein Playbook fertig haben, können Sie es mit dem folgenden Befehl ausführen.
ansible-playbook web.yml -f 1 --ask-become-pass OR ansible-playbook web.yml -f 1 --ask-become-pass -u raj --ask-pass
Ansible-Playbook :Befehl zum Ausführen von Ansible-Playbooks.
web.yml: YAML-Datei (Ansible Playbook-Datei – die wir zu Beginn dieses Tutorials erstellt haben)
-f 1 :Playbook mit einem Parallelitätslevel von 1
–fragen-werden-passieren :Da wir Root-Benutzer werden müssen, um Pakete zu installieren.
-u raj :Benutzer auf dem verwalteten Knoten
Ausgabe:
Angenommen, Sie haben ein Playbook für eine Gruppe (z. B. Demo-Server) von Servern erstellt und möchten ein Playbook auf einem bestimmten Host ausführen. Der folgende Befehl führt Playbook nur auf 192.168.1.40 aus .
ansible-playbook -l 192.168.1.40 web.yml -u raj --ask-become-pass
Ansible Playbook-Aktionen überprüfen
Nachdem Sie ein Playbook ausgeführt haben, öffnen Sie Ihren Browser und navigieren Sie zu dem Remote-Host, der im Ansible-Inventar erwähnt wird.
In meinem Fall lautet die URL
http://192.168.1.20Sie sollten nun die obige Seite Apache is installed by Ansible erhalten , und diese Seite bestätigt uns, dass Apache von Ansible installiert wurde.
Sie haben gelernt, wie Sie ein einfaches Playbook für die Automatisierung der Apache-Installation erstellen. Weitere Informationen zum Erstellen von Playbooks finden Sie hier .
Das ist alles.