Playbook není nic jiného než Ansible's skripty pro správu konfigurace a lze jej použít ke správě nasazení a konfigurací spravovaných uzlů. Příručka obsahuje sadu zásad, které mají vaše spravované uzly uplatňovat, nebo sadu kroků v obecném procesu IT.
Příručky jsou psány a vyvíjeny v jednoduchém textovém jazyce. Syntaxe, kterou používáme v příručkách, se liší od běžných příkazů, které jsme používali k testování v předchozím tutoriálu.
V předchozím tutoriálu jsme viděli, jak nainstalovat Ansible na CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 a Debian 9 .
Vytvořit Ansible Playbook
Pro toto demo vytvoříme playbook s názvem web.yml pro konfiguraci hostitele pro provozování webového serveru Apache . Každá příručka se skládá z jedné nebo více her v seznamu.
Pro každou hru v playbooku si můžete vybrat, na které stroje ve vaší infrastruktuře chcete cílit, a na kterého vzdáleného uživatele, který bude úkoly plnit.
vi web.yml
Příručka CentOS / RHEL:
--- - 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
Příručka Ubuntu / Debian:
--- - 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
Vytvořte ukázkový soubor HTML (/etc/ansible/index.html ). Tento soubor HTML bude umístěn do výchozího kořenového adresáře dokumentu serveru Apache na spravovaném uzlu.
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>
Breaking Down Ansible Playbook
Nyní si projdeme jednotlivé sekce příručky web.yml soubor, abyste pochopili, co to znamená.
Soubor začíná
---
Všechny soubory YAML by měly začínat (tři pomlčky) ---
a to označuje začátek dokumentu. YAML je velmi citlivý na prostor a využívá jej k seskupování různých částí informací dohromady. Aby bylo možné správně číst, musí být mezery v celém souboru konzistentní. Položky na stejné úrovni odsazení jsou považovány za sourozenecké prvky.
Hostitel a uživatelé
--- - hosts: 192.168.1.20 remote_user: raj
Řádek hostitelů je seznam jedné nebo více skupin (např. demo servery) nebo vzorů hostitelů (např. 192.168.1.20), oddělených dvojtečkami. Spolu s hostitelem můžete zmínit vzdálený uživatelský účet.
--- - hosts: 192.168.1.20 remote_user: raj become: yes become_method: su
Chcete-li nainstalovat jakékoli balíčky do systému, musíte se stát uživatelem root. K tomu můžete použít metody eskalace oprávnění, jako je su nebo sudo . Kdykoli použijete tento druh metod eskalace oprávnění, musíte spustit ansible playbook pomocí --ask-become-pass
argument.
Úkoly
Nyní máme sadu úkolů.
Úlohytasks: - 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
Každá hra obsahuje seznam úkolů, které jsou prováděny v pořadí, jeden po druhém, proti všem strojům odpovídajícím hostitelskému vzoru, než se přejde k dalšímu úkolu.
Když spouštíte příručku, běží shora dolů a hostitelé s neúspěšnými úlohami jsou vyjmuti z rotace pro celou příručku.
Každý úkol by měl mít název a používá se k zobrazení aktuální aktivity při spuštění playbooku. Tento výstup je pro lidi, takže je hezké mít přiměřeně dobrý popis každého kroku úkolu.
Zde nainstaluje nejnovější verzi Apache a zkopíruje ukázkové HTML (/etc/ansible/index.html) do adresáře /var/www/html spravovaného uzlu a poté povolí automatické spouštění služby Apache během spouštění systému.
Upozornit
Tyto upozorňují akce se spouštějí na konci každého bloku úkolů v playbooku a budou spuštěny pouze jednou, i když na to upozorní několik různých úkolů.
notify: - start apache - setup firewalld - reload firewalld
Oznámení položka obsahuje položku s názvem spustit apache , nastavení brány firewall a znovu načtěte firewall . Jedná se o odkazy na handlery, které provádějí specifické funkce, když jsou volány z úlohy. Definujeme startovací apache a firewalld handler.
Obslužný program
Handlery jsou seznamy úkolů, které se ve skutečnosti neliší od běžných úkolů. Spustí se však pouze tehdy, když jim úloha sdělí, že na klientském systému došlo ke změnám.
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
V našem případě máme handler, který spustí službu Apache a nakonfiguruje firewall po instalaci balíčku.
K této akci dochází, protože oznamovatel upozornil na změny v systému, což znamená, že balíček Apache musel být nainstalován a spolu s tímto demo souborem musel být zkopírován do DocumentRoot.
Spustit Ansible Playbook
Jakmile budete mít připravenou příručku, můžete ji spustit pomocí níže uvedeného příkazu.
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 :Příkaz ke spuštění Ansible playbooků.
web.yml: YAML soubor (Ansible Playbook soubor – který jsme vytvořili na začátku tohoto tutoriálu)
-f 1 :playbook používající úroveň paralelismu 1
–ask-become-pass :Protože se pro instalaci balíčků musíme stát uživatelem root.
-u raj :Uživatel ve spravovaném uzlu
Výstup:
Předpokládejme, že jste vytvořili playbook pro skupinu (např. demo servery) serverů a chcete spustit playbook na konkrétním hostiteli. Níže uvedený příkaz spustí playbook pouze na 192.168.1.40 .
ansible-playbook -l 192.168.1.40 web.yml -u raj --ask-become-pass
Ověřte akce Ansible Playbook
Po spuštění playbooku otevřete prohlížeč a přejděte ke vzdálenému hostiteli uvedenému v ansible inventáři.
V mém případě bude adresa URL
http://192.168.1.20Nyní byste se měli dostat nad stránku Apache je nainstalován společností Ansible a tato stránka nám potvrzuje, že Apache byl nainstalován Ansible.
Naučili jste se vytvořit jednoduchý playbook pro automatizaci instalace Apache. Další informace o vytváření příruček naleznete zde .
To je vše.