V průběhu psaní souborů Ansible playbook jste si mohli všimnout, že můžete znovu použít některý z kódů definovaných ve vašich stávajících playbookech. Můžete například znovu použít kód pro instalaci databázového serveru MariaDB na jednom spravovaném hostiteli s různými názvy hostitelů, uživateli a hesly pro jiného vzdáleného hostitele. To ušetří spoustu času a energie, které by byly vynaloženy při psaní nových souborů playbooku od začátku. A zde přichází na řadu koncept Ansible rolí.
Ansible role je koncept přeskupování úkolů do jednotlivých souborů, které se snáze spravují a manipulují. Každá role poskytuje sadu úkolů, proměnných a obslužných rutin – abychom zmínili několik –, které jsou nutné pro její implementaci. Role umožňují uživatelům reorganizovat dlouhé a složité struktury playbooků do jednodušších, kratších a přehlednějších souborů playbooků. Jak jsme zmínili dříve, role mají být opakovaně použitelné a vyvolání rolí v souboru playbooku zjednodušuje kód a odstraňuje duplicitu. Opakující se úlohy, jako je instalace a konfigurace aplikací, mohou být zabaleny do samostatných souborů a znovu použity na různých spravovaných hostitelích.
V této příručce se dozvíte, jak vytvářet a používat role Ansible v playbookech. Pro demonstraci vytvoříme roli, která nainstaluje webový server Apache a nakonfiguruje firewall tak, aby otevřel port 80.
Jak vytvořit roli Ansible
Začneme vytvořením jednoduché role Ansible. Chcete-li vytvořit roli, jednoduše použijte syntaxi příkazu níže, kde myrole je název role.
$ ansible-galaxy init myrole
Chcete-li například vytvořit roli s názvem test_role vyvolejte příkaz.
$ ansible-galaxy init test-role
Z výstupu zjistíme, že příkaz vytvoří testovací roli a ve výchozím nastavení obsahuje některé výchozí adresáře. Můžete použít strom příkaz k jejich zobrazení podle obrázku.
$ tree test-role
Pojďme si udělat stručný přehled toho, co každý adresář obsahuje
„Výchozí ’ složka – Tento adresář obsahuje výchozí proměnné, které bude role vyžadovat. Tyto proměnné mají nejnižší prioritu, a proto je lze celkem snadno přepsat.
„soubory ’ složka – Tato složka obsahuje soubory, které mají být zkopírovány do spravovaného nebo vzdáleného hostitele.
„ovladače Složka ’ – Adresář obsahuje handlery, které jsou obvykle vyvolány direktivou ‚notify‘. Můžete se dozvědět více o obslužných nástrojích Ansible.
„meta ’ složka – Skládá se z metadat role, například autora, závislostí atd.
„Úkoly ’ složka – Obsahuje soubor YAML, který definuje seznam úloh, které má samotná role provést. Obsahuje main.yml soubor.
„šablony Složka ’ – Adresář obsahuje soubory šablon, které lze upravit podle potřeby pro konfiguraci role.
„testy Složka ’ – Integruje testování se soubory Ansible playbook.
The vars ’ složka – Obsahuje proměnné, které bude role později používat. role. Tyto proměnné mají vyšší prioritu ve srovnání s proměnnými ve „výchozích nastaveních ' adresář.
Pro demonstrační účely vytvoříme dvě role:
git role – Tím se nainstaluje nejnovější verze Git.
Apache role- Tím se nainstaluje webový server Apache
Vytvořte je následovně:
$ sudo ansible-galaxy init git
$ sudo ansible-galaxy init apache
Poté musíme definovat každou roli úpravou main.yml soubor v ‘úkoly složka v každé roli. Začněme definováním git role.
$ sudo vim git/tasks/main.yml
Definujte úlohu pro roli git, jak je znázorněno.
Uložte main.yml soubor a ukončete.
Dále definujte úlohu pro roli Apache.
$ sudo vim apache/tasks/main.yml
Zadejte úlohu, která nainstaluje webový server Apache.
Podobně uložte main.yml soubor a ukončete.
Vytvořte soubor s příručkou a zavolejte role
Jakmile budou úkoly pro každou roli definovány v main.yml soubor pro každou roli, vytvořte soubor playbooku a odkazujte na role, jak je znázorněno.
$ sudo vim roles_demo.yml
POZNÁMKA:
Musíte zadat úplnou cestu k roli v příručce.
role:
- /cesta/k/roli
V tomto příkladu jsou role umístěny ve stejném adresáři jako soubor playbooku a stačí je nazvat jejich jmény.
Nakonec spusťte soubor playbooku.
$ sudo ansible-playbook /etc/ansible/roles_demo.yml
Bude odkazováno na role definované v souboru playbooku a budou provedeny jejich příslušné úkoly. Zde Ansible nainstaluje webový server git i Apache.
Instalaci můžete ověřit spuštěním zobrazených příkazů.
$ git --version
$ apachectl -v
Jak jste si všimli, soubor playbooku je stručný a snadno sledovatelný, protože na úkoly byly odkazovány role specifikované v souboru playbooku.
Shrnutí
Dostupné role pomáhají při organizaci souborů playbooků a pomáhají vyhnout se duplicitě kódu. Mohou být znovu použity a odkazovány jinými soubory playbooků k provádění podobných úkolů na různých uzlech, čímž se šetří čas a energie, které by mohly být použity při psaní nových playbooků. Role celkově usnadňují práci.