I loop sono insiemi di comandi o istruzioni impostati per ripetere un determinato numero di volte secondo i requisiti dell'utente. I loop consentono un migliore flusso di controllo negli script e rimuovi la ridondanza complessiva da essi.
Ansible viene inoltre fornito con più metodi di blocco di codice. Questa guida è pensata per aiutarti a conoscere i loop in Ansible. Copriremo le basi del looping in Ansible, insieme alla sintassi ed esempi appropriati.
Detto questo, diamo un'occhiata ai loop in Ansible.
Parole chiave per i loop in Ansible
Ansible utilizza le seguenti parole chiave per le sue strutture ad anello:
Come suggerisce il nome, "Loop" è il comando di riferimento per l'implementazione di loop in blocchi di codice.
Simile a "Loop", hai "with_". Questo comando richiede di fornirgli un plug -in di ricerca. Si consiglia di utilizzare con_* anziché loop quando sono coinvolti plugin di ricerca.
"Fino" ti consente di continuare a eseguire un'attività fino a quando non viene soddisfatta la condizione richiesta. È il più vicino alla condizione "while" nel flusso di controllo.
Ora che hai un'idea delle parole chiave per i loop, puoi procedere a conoscere come implementarle nel codice.
Loop standard in Ansible
Inizieremo discutendo su come implementare i loop standard in Ansible. Per i loop standard, useremo la parola chiave "with_".
Questo esempio dimostra come possiamo usare loop per aggiungere utenti.
- Nome: aggiungi più utentiOra, il prossimo passo sarebbe quello di eseguire il playbook. Puoi farlo con l'aiuto del seguente comando nel terminale Linux:
libro di prova Ansible-Playbook.YMLQui, "oggetto" è il termine di ricerca. "With_Item" ha due host, VM1 e VM2 rispettivamente. Il loop fa lo stesso del codice seguente:
- Nome: aggiungi l'utente VM1Come puoi vedere, usando "with_item", siamo in grado di rimuovere la ridondanza dal nostro codice. Aggiungendo più utenti in "with_items:", possiamo aggiungere più utenti secondo necessità.
Il prossimo esempio coprirà come eseguire loop nidificati in Ansible.
Loop nidificati in Ansible
Ansible ti consente di implementare loop nidificati nei suoi script. Di seguito è riportato un esempio di tale ciclo.
- Nome: fornisce agli utenti l'accesso ai databaseIn alternativa, puoi scrivere lo stesso codice con "Loop" di segue:
- Nome: fornisce agli utenti l'accesso ai databaseGli utenti verranno forniti l'accesso a tutti i database uno per uno. Come affermato in precedenza, è più facile capire che il "with_" è migliore con i plugin di ricerca piuttosto che con "loop" come sintassi.
Diamo un'occhiata ad altri esempi che evidenziano la capacità di Ansible.
Usare Ansible per iterare su hash
Ansible ti consente di eseguire il loop su un elenco di hash. Questo può essere visto dall'esempio indicato di seguito.
Supponiamo di aver dichiarato un elenco di utenti come segue.
utenti:Per stampare tutti i nomi e i seriali, eseguire lo script di seguito.
compiti:Questo stamperà rispettivamente i nomi degli utenti e i seriali. Aggiungendo più utenti nel pannello "utenti:", è possibile stampare più utenti senza dover scrivere di nuovo il codice.
Utilizzo di loop per set di dati paralleli
Puoi anche utilizzare loop per set di dati paralleli. Questo è dimostrato nell'esempio seguente:
Supponiamo di avere i seguenti dati:
Alphabets: ['a', 'b', 'c', 'd']Puoi eseguire il loop di questi comandi come segue:
compiti:Il codice sopra riporterà entrambi i set di dati insieme come (a, 2), (b, 4), ecc.
Luci a scelta casuale
Una delle caratteristiche fornite con i loop "with_" è "random_choice".
Come suggerisce il nome, la funzione di scelta casuale viene utilizzata per selezionare gli elementi in modo casuale da un determinato set di istruzioni.
Questo esempio illustra come fare loop per la selezione di un'azione da un determinato elenco di stringhe.
- debug:Qui, la stringa "Esegui azione" è arbitraria e può essere sostituita con qualsiasi cosa. Il comando with_random_choice selezionerebbe dall'elenco di azioni indicato a caso.
Esempi di loop "fino"
Questa sezione della guida riguarderà la sintassi del loop "fino".
Come affermato in precedenza, il comando "fino" ripeterà una determinata serie di istruzioni fino a quando non soddisfa una determinata condizione.
Ecco un esempio del ciclo "fino" in azione.
Shell:/usr/bin/fooQuesto è un esempio di un ciclo ricorsivo. Il blocco di codice sopra continuerà a funzionare fino a quando la shell non riceverà "tutti i sistemi pronti" come output di testo. Se non è così, si fermerà dopo aver eseguito 10 volte poiché i tentativi specificati sono "10".
Il ritardo corrisponde al ritardo in secondi. Per impostazione predefinita, è impostato a 5.
Conclusione
Questa era una guida su come puoi usare i loop in Ansible. Abbiamo coperto le basi dei loop e la loro sintassi in Ansible e abbiamo dimostrato il loro uso attraverso diversi esempi. Con questo, speriamo che tu sia un passo più vicino all'automazione dei processi usando Ansible.