Cosa è run_once in ansible

Cosa è run_once in ansible
Il parametro Ansible Run_once devia il ciclo perso e costringe un'attività specifica da eseguire sul primo host nel batch. Il risultato può quindi essere applicato ad altri host attivi nel playbook.

Questa guida discuterà di come è possibile utilizzare il modulo Ansible Run_once per eseguire una serie di operazioni.

Uso di base

Il parametro Ansible Run_once viene applicato a un'attività specifica che si desidera essere eseguita sul primo host.

Il seguente playbook di esempio mostra come è possibile impostare il parametro run_once in un playbook.

---
- Host: tutto
#..
compiti:
- Nome: esegui questo comando una volta
Shell: comando
run_once: vero

Il playbook di esempio sopra mostra la sintassi generale per implementare un'attività run_once.

Vediamo alcuni esempi e vediamo vari casi d'uso del parametro run_once.

Esempio 1

Implementeremo un semplice playbook che scarica un file zip da un URL nel nostro primo esempio. Dal momento che non ha senso caricare ripetutamente il file su ciascun host, possiamo usare il parametro run_once.

Prendi il playbook di esempio mostrato di seguito:

---
- Host: tutto
Gather_Facts: Sì
compiti:
- Nome: scarica il file solo una volta
run_once: vero
get_url:
URL: https: // file-examples-com.github.IO/Uploads/2017/02/zip_10mb.cerniera lampo
dest: ~/zip_10mb.cerniera lampo
- Nome: Unarchive
Unarchive:
src: ~/zip_10mb.cerniera lampo
dest: ~/zip_10mb

Il playbook di esempio sopra scaricherà il file nel primo batch e poi lo inarcherà sugli host remoti.

Esempio 2

Il prossimo esempio di playbook crea un archivio da un repository git.

---
- Host: tutto
Gather_Facts: Sì
compiti:
- Nome: Crea archivio da Repo
idiota:
Repo: https: // github.com/campioni/repository.idiota
DEST:/Home/User/Repo
Archivio:/Home/Utente/Repo.cerniera lampo
run_once: vero

Esempio 3

Possiamo anche utilizzare il parametro run_once per creare un backup e quindi sincronizzare il database con gli host remoti utilizzando il protocollo RSYNC. Considera il playbook di esempio qui sotto:

---
- Host: tutto
Gather_Facts: Sì
diventa vero
compiti:
- Nome: crea un archivio di backup
archivio:
sentiero:
/var/log/
/personalizzato/tutto
DEST: /backup /system0-backup.BZ2
Formato: BZ2
Rimuovi: no
run_once: vero
- Nome: Sync Backup con rsync
sincronizzare:
SRC: /backup /system0-backup.BZ2
dest: rsync: // inventor_hostname/backups

Il playbook creerà un archivio di backup sul locale e sincronizzerà i file a tutti gli host remoti.

Esempio 4

Il playbook di esempio utilizza il parametro run_once per inviare la posta a tutti gli host.

---
- Host: tutto
Gather_Facts: Sì
diventa vero
compiti:
- Nome: crea un archivio di backup
Local_Action:
Modulo: posta
Oggetto: "Mail da Ansible."
a: ubuntu@localhost
Body: "Aggiornato alla nuova versione di Redis."
run_once: vero

Il playbook invia la posta a un utente specifico.

Conclusione

Questa guida mostra come utilizzare il parametro run_once in Ansible per eseguire un'attività su un singolo host e applicare i risultati ad altri host.