GNU/Linux >> Znalost Linux >  >> Linux

RHCE Ansible série #5:Ansible smyčky

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
Linux
  1. Žádný seznam typů v ISPConfig 3.1.11

  2. Bash Beginner Series #8:Loops in Bash

  3. RHCE Ansible Series #11:Správa systémů s Ansible

  1. The Bash ‘?

  2. RHCE Ansible Series #10:Role systému RHEL

  3. RHCE Ansible Series #9:Ansible Role

  1. RHCE Ansible Series #8:Šifrování obsahu pomocí Ansible Vault

  2. RHCE Ansible Series #7:Jinja2 šablony

  3. RHCE Ansible Series #6:Rozhodování v Ansible