Tuttavia, ci sono casi in cui potrebbe essere necessario eseguire un'azione specifica sulla macchina locale anziché su host remoti. In tali casi, una funzione simile locale_action torna utile.
Questa guida ti mostrerà come lavorare con il modulo Ansible Local_Action per eseguire le attività a livello locale.
Come funziona il modulo ANSIBE Local_Action
Come accennato in precedenza, durante la creazione di playbook, l'obiettivo è in genere host remoto. Se è necessario eseguire un'attività su host diversi dagli host remoti, è possibile utilizzare moduli Ansible come local_action e delegate_to.
Delegate_to è utile quando è necessario impostare un'attività da eseguire su un host specifico. Si punta il modulo delegate_to agli host di destinazione specificando il suo nome host o l'indirizzo IP.
Local_Action, d'altra parte, eseguirà solo le attività impostate sulla macchina locale. È simile all'impostazione del valore di delegate_to su localhost o 127.0.0.1
delegate_to: localhostIl modulo Local_Action è conveniente quando è necessario eseguire un'attività sulla macchina locale prima di inviarla a sistemi remoti. Questi sono principalmente comandi personalizzati o shell all'interno del sistema locale.
Il modo migliore per capire come utilizzare il modulo Local_Action è usando Esempio di playbook.
ANSIBLE LOCAL_ACTION Esempio di casi d'uso
Per semplicità, cercheremo di mantenere i playbook brevi e non troppo complessi.
Prima di concentrarci sui playbook, descriviamo la nostra configurazione Ansible, che ci permetterà di capire come funziona il modulo Local_Action.
Nel nostro esempio di configurazione, abbiamo un Ubuntu 20.04 Server che ha installato Ansible. Questo fungerà da nodo di controllo Ansible.
Successivamente, abbiamo tre macchine remote: un Ubuntu 21.04 server, un server Debian 11 e un server CentOS 8.
Abbiamo il file di inventario Ansible contenente tutti e tre gli indirizzi IP degli host nel nodo di controllo.
Una volta eseguito un playbook, esegue su tutti e tre gli host.
NOTA: Limiteremo l'output a un singolo host per evitare complessità e confusione.
Local_Action usando un modulo
Considera il seguente playbook:
---Nel primo blocco, specifichiamo gli host di destinazione per eseguire le attività se non diversamente specificato.
Il playbook continua a disabilitare la raccolta di fatti sugli host remoti impostando il blocco Gather_Facts su NO.
Per avere l'autorizzazione di lettura e scrittura, impostiamo il blocco diventato true.
Nei blocchi successivi, definiamo due compiti:
La prima attività crea un archivio dei file di registro dal sistema locale. Delegare l'attività di eseguire nel sistema locale utilizzando il blocco locale_actiob. Nel nostro esempio, utilizziamo un modulo community che possiamo installare usando il comando:
collezione Ansible-Galaxy Installa comunità.generaleLa prossima attività copia l'archivio di registro dal sistema locale al percorso specificato sull'host remoto.
Salva il playbook ed eseguilo usando il comando:
Ansible-Playbook Local_Action.YMLAl completamento con successo, dovresti vedere un output simile a quello mostrato di seguito:
Local_Action usando un comando shell
L'esempio seguente mostra come eseguire comandi shell usando il modulo Local_Action.
---Nell'esempio di playbook sopra, utilizziamo il modulo Local_Action per eseguire un comando shell. Il comando shell conta il numero di file e directory salvati su una variabile.
Quindi utilizziamo il modulo di debug per stampare il numero di file sia sul remoto che sul locale.
Esegui il file come:
Ansible-Playbook FileCount.YMLLocal_Action con run_once
È possibile utilizzare il modulo Local_Action insieme al parametro run_once.
---Il playbook sopra eseguirà il blocco Local_Action una volta sul sistema locale.
Conclusione
Il modulo Local_Action è utile quando si desidera delegare un'attività da eseguire sulla macchina locale. Puoi usarlo entrambi con un modulo Ansible o un comando shell.