GNU/Linux >> Linux Esercitazione >  >> Linux

RHCE Ansible Series #5:Ansible Loops

A volte potresti voler ripetere un'attività più volte. Ad esempio, potresti voler creare più utenti, avviare/arrestare più servizi o modificare la proprietà di più file sui tuoi host gestiti.

In questo tutorial imparerai come utilizzare i loop Ansible per ripetere un'attività più volte senza dover riscrivere l'intera attività più e più volte.

Prima di esaminare i loop in Ansible, spero che tu abbia seguito altri capitoli di questa serie di tutorial di Ansible. Dovresti conoscere il concetto di playbook Ansible, conoscere i comandi ad hoc e conoscere la terminologia di base associata ad Ansible come elenco, dizionari ecc.

È anche apprezzata la conoscenza delle basi di YAML.

Ciclo sugli elenchi

Ansible utilizza le parole chiave loop per scorrere gli elementi di un elenco. Per dimostrare, creiamo un playbook molto semplice chiamato print-list.yml che mostra come stampare gli elementi in una lista:

[[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 }}"

Nota che utilizzo l'elemento variabile con cicli Ansible. L'attività verrebbe eseguita cinque volte, pari al numero di elementi nel primo elenco.

Alla prima esecuzione, l'elemento la variabile verrà impostata sul primo elemento nell'array principale (2). Nella seconda esecuzione, la variabile item verrà impostata sul secondo elemento nell'array prime (3) e così via.

Vai avanti ed esegui il playbook per vedere tutti gli elementi del prime elenco visualizzato:

[[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

Ora applichi i loop a un'applicazione reale. Ad esempio, puoi creare un add-users.yml playbook che aggiungerebbe più utenti su tutti gli host nei dbservers gruppo:

[[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 }}"

Per prima cosa ho creato un dbusers list che è fondamentalmente un elenco di hash/dizionari. Ho quindi utilizzato l'utente modulo insieme a un ciclo per aggiungere gli utenti e impostare le password per tutti gli utenti nei dbusers elenco.

Nota che ho utilizzato anche la notazione tratteggiata item.username e item.pass per accedere ai valori delle chiavi all'interno degli hash/dizionari dei dbusers elenco.

Vale anche la pena notare che ho usato la password_hash('sha512') filtro per crittografare le password degli utenti con sha512 algoritmo di hashing come utente il modulo non consente di impostare password utente non crittografate.

Suggerimento per l'esame RHCE:avrai accesso alla pagina docs.ansible.com del tuo esame. È una risorsa molto preziosa, soprattutto nella sezione "Domande frequenti"; troverai numerose domande How-to con risposte e spiegazioni.

Ora eseguiamo add-users.yml playbook:

Leggi la storia completa

Il resto dell'articolo è disponibile solo per i membri LHB. Puoi iscriverti ora GRATUITAMENTE per leggere il resto di questo articolo insieme all'accesso a tutti i post riservati ai membri. Ti iscrivi anche alla nostra newsletter quindicinale Linux.

IscrivitiHai già un account?Accedi
Linux
  1. Decostruire un playbook Ansible

  2. Comprendere YAML per Ansible

  3. Nessun elenco di tipi in ISPConfig 3.1.11

  4. Il Bash '?

  5. Bash Beginner Series #8:Loop in Bash

Come utilizzare i loop in Ansible Playbook

Un'introduzione ai fatti Ansible

RHCE Ansible Series #2:Esecuzione di comandi ad hoc

RHCE Ansible Series #1:Saluta Ansible

RHCE Ansible Series #3:Ansible Playbook

RHCE Ansible Series #12:Risoluzione dei problemi di Ansible