Někdy můžete chtít opakovat úkol vícekrát. Můžete například chtít vytvořit více uživatelů, spustit/zastavit více služeb nebo změnit vlastnictví několika souborů na spravovaných hostitelích.
V tomto tutoriálu se naučíte, jak používat Ansible smyčky k opakování úkolu vícekrát, aniž byste museli celý úkol znovu a znovu přepisovat.
Než se podíváte na smyčky v Ansible, doufám, že jste sledovali další kapitoly této série výukových programů Ansible. Měli byste znát koncept Ansible playbooků, znát ad-hoc příkazy a znát základní terminologii spojenou s Ansible jako seznam, slovníky atd.
Oceňujeme také znalost základů YAML.
Opakování seznamů
Ansible používá klíčová slova loop iterovat přes prvky seznamu. Abychom to demonstrovali, vytvoříme velmi jednoduchou příručku s názvem print-list.yml který ukazuje, jak vytisknout prvky v seznamu:
[[email protected] plays]$ cat print-list.yml
---
- name: print list
hosts: node1
vars:
prime: [2,3,5,7,11]
tasks:
- name: Show first five prime numbers
debug:
msg: "{{ item }}"
loop: "{{ prime }}"
Všimněte si, že používám položku proměnná se smyčkami Ansible. Úloha by se spustila pětkrát, což se rovná počtu prvků v prime seznam.
Při prvním spuštění položka proměnná bude nastavena na první prvek v primárním poli (2). Při druhém spuštění bude proměnná item nastavena na druhý prvek v primárním poli (3) a tak dále.
Pokračujte a spusťte příručku, abyste viděli všechny prvky primárního zobrazený seznam:
[[email protected] plays]$ ansible-playbook print-list.yml
PLAY [print list] **************************************************************
TASK [Gathering Facts] *********************************************************
ok: [node1]
TASK [Show first five prime numbers] *******************************************
ok: [node1] => (item=2) => {
"msg": 2
}
ok: [node1] => (item=3) => {
"msg": 3
}
ok: [node1] => (item=5) => {
"msg": 5
}
ok: [node1] => (item=7) => {
"msg": 7
}
ok: [node1] => (item=11) => {
"msg": 11
}
PLAY RECAP *********************************************************************
node1 : ok=2 changed=0 unreachable=0 failed=0
Nyní použijete smyčky na reálnou aplikaci. Můžete například vytvořit add-users.yml playbook, který by přidal více uživatelů na všechny hostitele v dbservers skupina:
[[email protected] plays]$ cat add-users.yml
---
- name: Add multiple users
hosts: dbservers
vars:
dbusers:
- username: brad
pass: pass1
- username: david
pass: pass2
- username: jason
pass: pass3
tasks:
- name: Add users
user:
name: "{{ item.username }}"
password: "{{ item.pass | password_hash('sha512') }}"
loop: "{{ dbusers }}"
Nejprve jsem vytvořil dbusers seznam, což je v podstatě seznam hashů/slovníků. Potom jsem použil uživatele modul spolu s smyčkou přidat uživatele a nastavit hesla pro všechny uživatele v dbusers seznam.
Všimněte si, že jsem také použil tečkovaný zápis item.username a item.pass pro přístup k hodnotám klíčů uvnitř hashů/slovníků dbuserů seznam.
Za zmínku také stojí, že jsem použil password_hash('sha512') filtr pro šifrování uživatelských hesel pomocí sha512 hashovací algoritmus jako uživatel modul by neumožňoval nastavení nešifrovaných uživatelských hesel.
Tip ke zkoušce RHCE:Během zkoušky budete mít přístup na stránku docs.ansible.com. Je to velmi cenný zdroj, zejména v části „Často kladené otázky“; najdete mnoho otázek typu Jak na to s odpověďmi a vysvětleními.Nyní spusťte soubor add-users.yml příručka:
Přečíst celý příběh
Zbytek článku je k dispozici pouze členům LHB. Nyní se můžete ZDARMA zaregistrovat a přečíst si zbytek tohoto článku spolu s přístupem ke všem příspěvkům pouze pro členy. Také se přihlásíte k odběru našeho čtrnáctidenního zpravodaje o Linuxu.
OdebíratUž máte účet?Přihlaste se