Erfahren Sie mehr über Ansible Playbook, um die Aufgaben zu automatisieren.
Zuvor haben wir diskutiert Ansible Einführung, InstallationsanleitungLassen Sie uns als nächstes über Playbook und seine Bausteine sprechen.
What is Ansible Playbook?
Das Playbook ist die Ansible-Automatisierungssprache. Es ist eine einfache Datei mit einer Reihe von Anweisungen. In Playbooks definieren wir, was Ansible tun soll. Playbooks enthalten Spiele, in denen Aufgaben ausgeführt werden, und in diesen Aufgaben werden Module ausgeführt. Ihre Aufgaben werden nacheinander ausgeführt.
Zum Beispiel kann es so einfach sein, eine Reihe von Befehlen auf verschiedenen Servern in einer Sequenz auszuführen und diese Server der Reihe nach neu zu starten. Oder es kann so komplex sein wie das Bereitstellen und Bereitstellen von Hunderten von VMs in einer öffentlichen und privaten Cloud, einschließlich Lastausgleich, Überwachung und Netzwerkeinstellungen.
Playbook Language
Playbooks sind einfache Dateien, die in YAML-Code geschrieben sind.
YAML ist eine Datenserialisierungssprache. Es ist menschlich und maschinenlesbar. Sie benötigen keine speziellen Codierungsfähigkeiten, um YAML-Codes zu schreiben. Sie können sich die Datenserialisierungssprache als Übersetzer vorstellen, um Ihre gesamte Datenstruktur aufzuschlüsseln und in einer Reihenfolge zu serialisieren, die für die spätere Verwendung erneut rekonstruiert werden kann. Sie können diese rekonstruierte Datenstruktur in derselben Umgebung oder sogar in einer anderen Umgebung verwenden.
Unten finden Sie eine YAML-Beispieldatei zum Installieren von MySQL:
---
- name: Install MySQL
hosts: geekflare-mysql-service
tasks:
- name: Install MySQL
action: $ansible_pkg_mgr pkg=mysql-server state=installed
- name: Add Python MySQL DB
action: $ansible_pkg_mgr pkg=python-mysqldb state=installed
Ansible Playbook Basics
Dieser Teil des Artikels behandelt die grundlegenden Ansible-Konzepte, um mehr über Ansible Playbook zu erfahren.
Hosts und Benutzer
Ansible benötigt Zielcomputer in der Infrastruktur, auf denen Spiele aus dem Ansible-Playbook bereitgestellt werden müssen. Hosts werden über ihre IP-Adressen zum Ansible-Inventar hinzugefügt. Hosts sind eine Liste von einer oder mehreren Gruppen oder Hostmustern, die durch einen Doppelpunkt getrennt sind. Der remote_user enthält den Namen des Benutzerkontos.
---
- hosts: ProdServers
remote_user: geekflare
Variablen
Mit Variablen können Sie die Ausführung eines Playbooks ändern. Sie können fast überall im Playbook verwendet werden und können von einem Inventar geerbt werden, das explizit zur Laufzeit festgelegt wurde und zu Beginn eines Playbook-Laufs ermittelt wurde. Sie können einen Variablennamen mit Buchstaben, Zahlen und Unterstrichen definieren, dieser darf jedoch nur mit einem Buchstaben beginnen.
Beispielsweise ist port_01 eine gültige Variable, während 01_post eine ungültige Variable ist. Hier ist ein Beispiel für Variablen in einem Ansible Playbook:
vars:
http_port: 80
max_clients: 200
Die Vorräte
Um ein Playbook auszuführen, benötigen Sie eine Liste von Zielen, auf denen die Automatisierung stattfinden soll. Dies ist, was ein Inventar tut. Inventarlisten können auf verschiedene Arten erstellt und gespeichert werden, einschließlich statischer Dateien, dh Ansible Hosts. Oder es kann dynamisch über ein Inventarskript generiert werden, das eine Liste von Hosts für eine externe Quelle abruft.
Sie können eine Variable auch als Teil einer Inventarliste angeben. Inventare sind letztendlich eine Liste von Dingen, die Sie automatisieren möchten.
[webservers]
192.168.20.1
192.168.20.2
192.168.20.4
[dbservers]
172.17.1.56
172.17.1.57
Aufträge
Spiele in ansible Playbook-Ausführungsaufgaben. Die Aufgabe ist für die Ausführung von Ansible-Modulen verantwortlich. Es kann jeweils nur eine Aufgabe ausgeführt werden, und Aufgaben werden in sequentieller Reihenfolge ausgeführt. Ihre Aufgaben sind in YAML geschrieben, einer Sprache, die Englisch ähnelt.
Beispiele: Installieren von Paketname, Aktualisieren des Software-Namens usw. Nachfolgend finden Sie ein Beispiel für eine Aufgabe im Ansible-Playbook zum Installieren von httpd:
tasks:
- name: Install httpd Package
yum: name=httpd state=latest
Handler
Handler sind eine besondere Art von Aufgaben.
Sie können durch eine Aufgabe ausgelöst werden und werden am Ende des Spiels einmal ausgeführt. Es wird verwendet, um Benachrichtigungen zu senden, wenn sich Änderungen an der Konfigurationsdatei ergeben, z. B. um den Dienst zu benachrichtigen, um Apache nach der Installation zu starten. Die Syntax "Benachrichtigen" wird zum Aufrufen von Handlern verwendet. Unten finden Sie ein Beispiel für einen Handler zum Neustarten von Apache:
---
- hosts: all
tasks:
- name: ensure apache is at the latest version
yum: name=httpd state=latest
notify:
- restart apache
- name: ensure apache is running (and enable it at boot)
service: name=httpd state=started enabled=yes
handlers:
- name: restart apache
service: name=httpd state=restarted
Create and Run Your First Ansible Playbook
Lassen Sie mich Ihnen sagen, wie man ein Spielbuch schreibt. Jedes Spielbuch beginnt mit drei Strichen (-) oben.
Das erste, was Sie in einem Ansible Playbook erwähnen, sind die Host-Computer, auf denen Sie das Playbook ausführen möchten.
Dann können Sie Variablen erwähnen, indem Sie Fakten sammeln. Dann können Sie die verschiedenen Aufgaben erwähnen, die Sie ausführen möchten. Denken Sie jetzt daran, dass die Aufgabe in derselben Reihenfolge ausgeführt wird, in der Sie sie geschrieben haben. Wenn Sie beispielsweise zuerst Software A und dann Software B installieren möchten, stellen Sie sicher, dass die erste im Playbook geschriebene Aufgabe darin besteht, Software A zu installieren, und dass die nächste Aufgabe Software B installieren kann.
Dann haben Sie unten Handler. Die Handler sind ebenfalls Aufgaben, aber der Unterschied besteht darin, dass Sie Handler ausführen, für die Sie eine Art Trigger in der Liste der Aufgaben benötigen, um Handler auszuführen.
Lassen Sie mich Ihnen zeigen, wie Sie ein ansibles Playbook erstellen, um nginx auf einem Host zu installieren, zu starten und zu starten.
Erstellen Sie eine .yml-Datei, in der Sie Ihre YAML-Codes für die Erstellung eines ansiblen Playbooks ablegen.
gedit nginx.yml
Fügen Sie den folgenden YAML-Code in diese Datei ein und speichern Sie die Datei.
---
- hosts: Client
sudo: yes
vars:
- server_port: 8080
tasks:
- name: Installs nginx web server
apt: pkg=nginx state=installed update_cache=true
notify:
- start nginx
handlers:
- name: start nginx
service: name=nginx state=started
Die obige YAML-Datei beginnt mit GastgeberIch möchte dieses Playbook auf dem Client-Computer (Client) ausführen. Die Client-IP-Adresse ist bereits in gespeichert /etc/ansible/hosts
Datei.
In der nächsten Zeile können Sie die Aufgaben mit ausführen sudo
Privilegien.
Dann habe ich definiert Server Port als Variable in diesem Spielbuch.
Dann kommt mein erster Auftrag in diesem ansible Playbook, um einen Nginx-Webserver zu installieren. Diese Aufgabe hat auch benachrichtigen Parameter, dh nach dieser Aufgabe einen Handler mit run.
Schließlich habe ich eine geschrieben Handler um nginx auf dem Client-Computer zu starten.
Nachdem Sie mit den YAML-Codes im Ansible-Playbook klar sind, führen Sie das Playbook aus. Unten finden Sie die Syntax zum Ausführen eines ansiblen Playbooks:
ansible-playbook file_name.yml
Jetzt werde ich das Ansible-Playbook ausführen, das ich zum Installieren und Starten von Nginx erstellt habe.
root@geekflare:/home/geekflare# ansible-playbook nginx.yml
PLAY [Client] ******************************************************************
TASK [Gathering Facts] *********************************************************
ok: [node1]
TASK [Installs nginx web server] ***********************************************
changed: [node1]
RUNNING HANDLER [start nginx] **************************************************
ok: [node1]
PLAY RECAP *********************************************************************
node1 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der Nginx-Server vom ansible-Playbook installiert und korrekt gestartet wurde.
root@geekflare:/home/geekflare# ps waux | grep nginx
root 3021 0.0 0.0 77676 1516 ? Ss 15:27 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
Conclusion
Das war über Ansible Playbook. Ich hoffe, dieser Artikel hat Ihnen geholfen zu lernen, wie Sie ein Ansible-Playbook erstellen und ausführen können. Schau dir das an Kurs, wenn Sie erweiterte Themen in Ansible lernen möchten, einschließlich Rollen, Jinja2, Lookups, Filter, Benutzerdefinierte Module.