3. Implementieren Sie das Playbook #########
Das Ziel dieses Kapitels: Schreiben Sie ein grundlegendes ansible Spielbuch
3.1 Playbook schreiben und ausführen
3.1.1 Temporäre Befehle eines bestimmten Benutzers anzeigen
'Das yaml-Format hat normalerweise die Erweiterung yml, und yaml stellt keine strengen Anforderungen an die Einrückung, aber es gibt zwei Grundprinzipien.'
'1. Datenelemente auf derselben Ebene in derselben Hierarchie müssen dieselbe Einrückung haben.'
'2. Wenn das Element einem untergeordneten Element eines anderen Elements gehört, muss der Einzug größer sein als das übergeordnete Element. '
ansible -m user -a "name=student uid=1000state=present" servera.lab.example.com
Als Spielbuch umgeschrieben
[root@workstation ~]# cat user.yml
--- 开头三个破折号,文档的开始标记
- name: Configure User 可写可不写,但是建议使用
... 结尾三个省略号,结束标记(通常省略)
Das Spiel selbst besteht aus einer Reihe von Schlüssel- und Wertepaaren. Die Schlüssel im selben Spiel sollten dieselbe Einrückung verwenden.
Hosts ist ein Schlüssel, und der folgende Inhalt ist der Wert. Dies ist eine verschachtelte Sammlung.
Playbook-Ausführung:
3.1.2 Apache installieren
Erstellen Sie ein neues Verzeichnis für eine einfache Bedienung
mkdir /demo
vim webserver.yml
Es ist ersichtlich, dass der httpd-Dienst installiert wurde.
3.1.3 Stellen Sie sicher, dass der httpd-Dienst gestartet ist
vim service.yml
Wirkung:
3.1.4 Verbessern Sie die Detailgenauigkeit der Ausgabe
Die Standardausgabe von ansible-playbook enthält keine detaillierten Informationen zur Aufgabenausführung. Der Parameter -v bietet vier Ebenen:
- -v # Ergebnisse der Anzeige anzeigen
- -vv #Anzeigen von Aufgabenergebnissen und Aufgabenkonfiguration
- -vvv # enthält Informationen zu Verbindungen zu verwalteten Hosts
- -vvvv # Zusätzliche Ausführlichkeitsoptionen für Verbindungs-Plugins hinzufügen (einschließlich Benutzer, die Skripts ausführen, und Skripts, die auf verwalteten Hosts ausgeführt werden)
# Führen Sie am besten eine Syntaxüberprüfung durch, bevor Sie das Playbook ausführen.
# Kein Syntaxfehler
Ändern Sie das Playbook:
Wenn ein Grammatikfehler vorliegt, wird der falsche Speicherort angezeigt.
3.1.5 Trockenlauf durchführen, nur Vorschau des Ergebnisses
Wir entfernen zuerst den httpd-Dienst auf dem 71-Host
und führen dann das Playbook aus.
Ansible-Playbook -C webserver.yml
ist noch nicht installiert. Es kann gesehen werden.
"Bei einem Trockenlauf wird gemeldet, was passiert, wenn dieses Playbook ausgeführt wird, der Zielhost wird jedoch nicht geändert."
3.1.6 Installieren, konfigurieren Sie die Standard-Release-Seite und starten Sie Apache
vim site.yml
Erkennungsgrammatik
ansible-playbook --syntax-check site.yml
Kein Problem.
# Erstellen Sie die Konfigurationsdatei und -liste.
# Erstellen Sie die Standard-Veröffentlichungsseite
cat files / index.html,
um die Playbook:
Service-Installation auszuführen und zu aktivieren.
Die Veröffentlichungsseite wurde erfolgreich geändert.
# Test
curl Remote - Browser - Inhalte erhalten.
3.2 Implementieren Sie mehrere Spiele
Vorlage:
ansible-doc -l
#Listet alle Module auf ansible-doc yum #Listenverwendung und Beispiele für
yum ansible-doc -s yum #Verwenden Sie das Terminal, um die Verwendung jedes Parameters im yum-Modul auszugeben
3.3 Änderungen der PLAYBOOK-Yaml-Syntax
- Kommentare von yaml
- yaml string
direkt eingeben
dies ist ein String
einfache Anführungszeichen
'dies ist ein String'
mehrere Anführungszeichen
"dies ist ein String"
# Übung
Ändern Sie die Remote-Host-Seite, ohne die Firewall zu schließen, und besuchen Sie:
vim webserver.yml
---
- name: Enable internet service
hosts: web
become: yes
tasks:
- name: apache and firewalld installed # 检测firewalld和httpd是否为最新版
yum:
name:
- httpd
- firewalld
state: latest
- name: Configure index.html # 配置默认发布页面
copy:
content: "welcome to westos!\n"
dest: /var/www/html/index.html
- name: firewalld enabled and runing # 检测firewalld是否开机自启并启用
service:
name: firewalld
enabled: true
state: started
- name: firewald primits http # 检测firewalld是否添加http服务
firewalld:
service: http
permanent: true
state: enabled
immediate: yes
- name: httpd enabled and runing # 检测httpd服务是否自启并运行
service:
name: httpd
enabled: true
state: started
- name: test webserver 本地主机测试访问
hosts: localhost
become: no
tasks:
- name: connect web server
uri:
url: http://rhel71.com
return_content: yes
status_code: 200
# Erkennungsgrammatik
# ausführen
ansible-playbook -v webserver.yml
Sie können sehen, dass der Inhalt in Westos willkommen ist
und der Statuscode 200 zurückgegeben wird
3.4 Managementvariablen und Fakten
Verwenden Sie einige Variablen im Playbook anstelle von Variablen, um das Schreiben des Playbooks zu vereinfachen
3.4.1 Verwaltungsvariablen
Einführung in ansible Variablen
Variablen können die folgenden Werte enthalten:
zu erstellende Benutzer, zu
installierende Softwarepakete
, neu zu startende Dienste
, zu löschende Dateien,
aus dem Internet abzurufende Dokumente
Benannte Variable
Variablennamen müssen mit einem Buchstaben beginnen und darf nur Buchstaben, Zahlen und Unterstrichen
korrekte Fehler
Web Server web_server
westos.file remote_file
1file file1
Variablen definieren
Drei Bereichsebenen
Globaler Bereich: Über die Befehlszeile oder die Ansible-Konfiguration festgelegte Variablen
Spielbereich: Im Spiel festgelegte Variablen und verwandte Strukturen
Host-Bereich: Aufgaben, die nach Inventar, Fakten, auf Hostgruppen und einzelnen Hosts gesammelt oder registriert wurden Variablen
'Wenn Variablen mit demselben Namen auf mehreren Ebenen definiert sind, wird die Variable mit der höchsten Ebene bevorzugt, und der enge Bereich hat Vorrang vor dem breiten Bereich.'
3.4.2 Variablen im Playbook
Definieren Sie Variablen im Playbook
1. Allgemeine Vorgehensweise: Im vars-Block am Anfang des Playbooks:
2. Definieren Sie die Playbook-Variable in der externen Datei
cat user.yml
Verwenden Sie Variablen im Playbook
Setzen Sie den Variablennamen in geschweifte Klammern.
'Hinweis: Wenn die Variable als erstes Element zum Starten eines Werts verwendet wird, müssen Sie Anführungszeichen verwenden.'