Úvod
Ansible je nástroj Infrastructure as Code, který vám umožňuje spravovat a monitorovat řadu vzdálených serverů pomocí jediného řídicího uzlu.
S Ansible můžete spravovat vzdálené servery pomocí playbooků. Tyto příručky předávají pokyny vzdáleným serverům a umožňují jim provádět předdefinované úlohy.
V tomto tutoriálu si projdeme, co jsou to Ansible playbooky, jak fungují a jak je můžete vytvářet a spouštět.
Předpoklady
- Systém Linux (používáme Ubuntu 20.04)
- Přístup do příkazového řádku / okna terminálu
- Ansible nainstalován a nakonfigurován
Co je Ansible Playbook?
Ansible playbook je seznam instrukcí pro úlohy, které jsou automaticky prováděny vzdálenými počítači v síti Ansible.
Ansible playbook se skládá z her. Hry jsou uspořádané sady úkolů, které jsou dokončeny po spuštění playbooku. Do jednoho playbooku můžete přidat více her.
Hry používají moduly k definování změn, které je třeba provést, aby byl úkol dokončen. Každý modul poskytuje rámec pro určitou kategorii úloh a lze jej přizpůsobit pomocí argumentů a proměnné .
Ansible playbooky se ukládají jako soubory .yaml, díky čemuž jsou flexibilní a snadno se používají.
Příručky se většinou používají pro:
- Deklarování konfigurací.
- Automatizace určitých opakovatelných úkolů, jejichž ruční provádění by trvalo příliš dlouho.
- Spouštění úloh synchronně nebo asynchronně.
Proměnné Ansible Playbook
Příručky Ansible používají proměnné, které poskytují flexibilitu a snadné použití. Proměnné mohou býtzabudovány (jako jsou systémové informace) nebo definované uživatelem .
V Ansible playbooku jsou proměnné definovány pomocí vars
klíčové slovo:
Ve výše uvedeném příkladu definujeme greeting
proměnná s přiřazenou hodnotou Hello World!
.
Chcete-li získat přístup k hodnotě, zadejte název proměnné greeting
ve dvojitých složených závorkách:
Po spuštění playbook vytiskne zprávu Hello World!
Kromě proměnných s jednou hodnotou existuje několik dalších typů proměnných Ansible. Použití proměnných s poli , přiřaďte více hodnot jedné proměnné s následující syntaxí:
vars:
array_name:
- value1
- value2
…
- valueN
Ke konkrétní hodnotě přistupte pomocí {{ array_name[value number] }}
, například:
Proměnné se slovníky zkombinovat více polí hodnot do jedné proměnné:
vars:
array_name:
dictionary_name1:
item1: value1
item2: value2
dictionary_name2:
item1: value1
item2: value2
Nakonec speciální proměnné jsou předdefinovány Ansible a nemohou být nastaveny uživateli. Pomocí následujícího příkazu získáte seznam speciálních proměnných:
ansible -m setup hostname
Jak napsat Ansible Playbook?
Vytvořte si knihu Ansible pomocí libovolného textového editoru dostupného ve vašem systému. Vytvořte si například příručku s Nano:
sudo nano /path/to/playbook/directory/playbook_name.yaml
Ansible playbooky se řídí základními pravidly syntaxe YAML.
Příručka začíná třemi n-pomlčkami (---
), za kterým následuje název playbooku, název skupiny vzdálených hostitelů, která spouští playbook, a další parametry, jako je become
(spusťte playbook jako správce).
Další část obsahuje všechny uživatelem definované proměnné. Začíná to vars
tag ve stejné úrovni odsazení jako v předchozí části, následovaný seznamem proměnných v dalším odsazení.
Nakonec seznam úkolů začíná tasks
tag, s úrovní odsazení v závislosti na typu úlohy a použitých parametrech.
Syntaxe YAML vám umožňuje používat tři tečky (…
) pro ukončení playbooku. Ačkoli většina příruček končí tímto způsobem, není nutné, aby příručka fungovala správně.
Syntaxe Ansible Playbook
Některé důležité prvky syntaxe YAML, které je třeba mít na paměti při psaní příruček Ansible:
- Při sestavování seznamů použijte mezeru mezi pomlčkami (
-
) a položku seznamu. - Při použití
key: value
tvaru, za dvojtečkou musí následovat mezera. - Booleovské hodnoty mohou používat obě
yes
ano
, stejně jakotrue
afalse
. - Použijte mezeru následovanou
#
k označení komentáře.
Příklad Ansible Playbook
Pro tento příklad vytvoříme playbook v instalační složce Ansible:
sudo nano /etc/ansible/example_playbook.yaml
Tato příručka obsahuje následující prvky:
---
:Signalizuje začátek playbooku.name
:Definuje název pro Ansible playbook.hosts
:Definuje, kteří hostitelé spouštějí playbook. Ve výše uvedeném příkladu se playbook spustí na všech hostitelích zahrnutých v souboru inventáře.become
:Instruuje vzdáleného hostitele, aby spustil playbook jako správce. Použití této značky vyžaduje, abyste při spouštění playbooku zadali heslo správce pro vzdálený hostitel.vars
:Definuje proměnné – v našem případě proměnnou s názvemgreeting
s hodnotouHello World!
.tasks
:Seznam úkolů, které má playbook provést. Ve výše uvedeném příkladu první úloha vytvoří adresář s názvem example_playbook na vzdáleném hostiteli. Druhá úloha vytvoří nový textový soubor v tomto adresáři a umístí hodnotugreeting
proměnná jako obsah....
:Signalizuje konec playbooku.
Jak se spouští příručka?
Ansible playbooky se spouštějí v pořadí, shora dolů. To platí jak pro jednotlivé hry, tak pro úkoly uvedené v těchto hrách.
Ve výše uvedeném příkladu provádí příručka následující akce v tomto pořadí:
- Definuje seznam proměnných.
- Vytvoří novou složku na vzdáleném hostiteli.
- Vytvoří textový soubor v nové složce.
- Přidá hodnotu proměnné jako obsah souboru.
Jak spustit Ansible Playbook
Chcete-li spustit knihu Ansible, použijte:
ansible-playbook /path/to/playbook/directory/playbook_name.yaml
Pro účely tohoto článku budeme používat example_playbook.yaml
pomocí -K
argument, který nám umožňuje zadat heslo uživatele root pro vzdáleného hostitele a spustit playbook jako admin:
ansible-playbook /etc/ansible/example_playbook.yaml -K
Jak ověřit příručky
Spusťte playbook v režimu kontroly pomocí --check
příznak pro ověření. To vám umožní vidět změny, které by vaše příručka provedla, aniž byste je skutečně provedli:
ansible-playbook /path/to/playbook/directory/playbook_name.yaml --check
Pro podrobnější přehled potenciálních změn použijte kombinaci --check
a --diff
příznaky:
ansible-playbook /path/to/playbook/directory/playbook_name.yaml --check --diff
Užitečné tipy pro Ansible Playbook
Existuje několik způsobů, jak usnadnit čtení a používání příruček Ansible:
Vždy pojmenovávejte hry a úkoly
Použijte name
klíčové slovo pro definování názvů her a úkolů. Přidáním krátkých a srozumitelných názvů je mnohem snazší na první pohled zjistit, co každá hra nebo úkol dělá.
Použijte komentáře
Ujistěte se, že přidáváte spoustu komentářů, zejména při definování proměnných a úkolů.
Podrobné komentáře pomáhají učinit příručku ještě jasnější a srozumitelnější. Pomáhají také komukoli dalšímu, kdo používá vaše příručky.
Formátujte příručku pro snadné použití
Aby učebnice fungovala, musíte dodržovat pravidla pro odsazení, ale stále můžete používat mezery (jako jsou prázdné řádky mezi úkoly), aby se příručka lépe četla.