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=0Nyní 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