Ansible

Come utilizzare il modulo di registrazione Ansible

Come utilizzare il modulo di registrazione Ansible
In Ansible, puoi eseguire qualsiasi comando shell sui tuoi host Ansible, gli host che configurerai con Ansible. Questi comandi della shell possono avere output. Per impostazione predefinita, l'output viene ignorato. Se vuoi memorizzare l'output in una variabile e utilizzarlo in seguito, puoi utilizzare Ansible Registrati modulo. Questo articolo ti mostrerà come usare Ansible Registrati modulo per memorizzare l'output del comando in una variabile e accedervi in ​​seguito nel tuo playbook Ansible.

Prerequisiti

Se vuoi provare gli esempi in questo articolo, devi:

1) Installa Ansible sul tuo computer.

2) Avere un host Ubuntu configurato per l'automazione Ansible.

Ci sono molti articoli su LinuxHint dedicati all'installazione di Ansible e alla configurazione degli host per l'automazione di Ansible. Puoi controllare questi articoli se necessario.

Configurazione di una directory di progetto

Prima di andare avanti, imposta una nuova directory di progetto Ansible, solo per mantenere le cose un po' organizzate.

Per creare la directory del progetto registrazione-demo/ e tutte le sottodirectory richieste (nella directory di lavoro corrente), esegui il seguente comando:

$ mkdir -pv register-demo/playbook

Una volta creata la directory del progetto, accedere alla directory del progetto, come segue:

$ cd registra-demo/

Creare un padroni di casa file di inventario, come segue:

$ nano host

Aggiungi l'IP host o il nome DNS del tuo host Ubuntu nel file di inventario (un host per riga), come mostrato nello screenshot qui sotto.

Qui ho aggiunto il mio Ubuntu 20.04 LTS host vm3.nodokite.come nel ubuntu20 gruppo.

Al termine, salvare il file premendo by + X, seguito da e .

Crea un file di configurazione Ansible ansible.cfg nella directory del progetto, come segue:

$ nano ansible.cfg

Quindi, digita le seguenti righe nel ansible.cfg file:

[predefiniti]
inventario           = host
host_key_checking   = Falso

Una volta che hai finito, salva il ansible.cfg file premendo + X, seguito da e .

Ora prova a eseguire il ping del tuo host Ubuntu, come segue:

$ ansible ubuntu20 -u ansible -m ping

Come puoi vedere, il mio Ubuntu 20.04 ospite vm3.nodokite.come è accessibile.

Esempio 1: le basi

In questo esempio, ti mostrerò alcune delle basi di Ansible Registrati modulo. Userò Ansible per generare una password casuale nel mio Ubuntu 20.04 host utilizzando il pwgen comando, memorizzare la password in una variabile utilizzando il comando Registrati modulo e stampare la password sullo schermo.

Per prima cosa, crea il nuovo playbook generate_pass.igname nel libri di gioco/ rubrica, come segue:

$ nano playbook/generate_pass.igname

Digita le seguenti righe nel generate_pass.igname file:

- host: ubuntu20
utente: ansible
diventa vero
compiti:
- nome: assicurarsi che pwgen sia installato
adatto:
nome: pwgen
stato: presente
update_cache: Vero
- nome: Genera password
shell: pwgen -N 1 -s 30
registrati: mypass
- nome: stampa la password generata
eseguire il debug:
msg: "La password è mypass "

Una volta terminato, premere + X, seguito da e , per salvare il generate_pass.igname file.

La riga seguente dice ad Ansible di eseguire il playbook generate_pass.igname su ogni host nel ubuntu20 gruppo. Nel mio caso, il playbook verrà eseguito sull'host vm3.nodokite.come.

In questo playbook, definirò tre compiti.

Il primo compito assicurerà che il pwgen il pacchetto è installato.

La seconda attività genererà una password casuale di 30 caratteri utilizzando il pulsante pwgen comando. userò il Registrati modulo per memorizzare la password generata nel miopass variabile.

La terza attività stamperà il miopass variabile utilizzando l'Ansible eseguire il debug modulo.

Esegui il playbook generate_pass.igname utilizzando il seguente comando:

$ playbook ansible-playbook/generate_pass.igname

Come puoi vedere, il playbook è stato eseguito correttamente. È stata generata anche una password.

Ma perché la variabile? miopass stampa tanti articoli?

Bene, la variabile miopass è un oggetto che contiene alcune proprietà importanti.

Le proprietà più importanti di ciascuna delle Registrati le variabili sono le seguenti:

cmd - Il comando eseguito per generare l'output.

stdout - L'output del comando.

stderr - L'output di errore del comando.

inizio - La data e l'ora in cui è iniziata l'esecuzione del comando.

fine - La data e l'ora in cui il comando ha terminato l'esecuzione.

delta - Il tempo impiegato per eseguire il comando. Questa è la differenza tra fine e il inizio proprietà.

stdout_lines - Un array contenente ogni riga di output del comando. Uguale a stdout, ma stdout separa le righe usando un carattere di nuova riga (\n) invece di array.

stderr_lines -  Un array contenente ogni riga di output di errore del comando. Uguale a stderr, ma stderr separa le righe usando caratteri di nuova riga (\n) invece di array.

Se vuoi solo stampare/accedere alla stringa della password (cosa molto probabile), puoi stampare/accedere al stdout proprietà del miopass variabile nel tuo playbook, come indicato nello screenshot qui sotto.

$ nano playbook/generate_pass.igname

Una volta terminato, esegui il playbook generate_pass.igname ancora. Verrà stampata solo la stringa della password, come puoi vedere nello screenshot qui sotto.

Che copre le basi di Ansible Registrati modulo.

Esempio 2: contenuto della directory del negozio

In questo esempio, ti mostrerò come archiviare il contenuto di una directory in una variabile utilizzando Ansible Registrati modulo, nonché come eseguire l'iterazione su di essi.

Per prima cosa, crea il nuovo playbook get_dir_contents.igname nel libri di gioco/ directory.

$ nano playbook/get_dir_contents.igname

Quindi, digita le seguenti righe nel get_dir_contents.igname libro di gioco:

- host: ubuntu20
utente: ansible
diventa vero
compiti:
- name: elenca tutti i file e le directory in /home/ansible
shell: ls /home/ansible
registrati: dir_contents
- nome: stampa il contenuto della directory usando i loop
eseguire il debug:
messaggio: " articolo "
ciclo: " dir_contents.stdout_lines "

Una volta terminato, premere + X, seguito da e , per salvare il generate_pass.igname file.

In questo playbook, definirò due compiti.

La prima attività elenca tutti i contenuti del /home/ansible directory e li memorizza nella dir_contents variabile.

La seconda attività stampa il dir_contents variabile.

Corri il get_dir_contents.igname playbook, come segue.

$ playbook ansible-playbook/get_dir_contents.igname

Come puoi vedere, il stdout_lines proprietà memorizzava il contenuto della directory come un array. Il stdout la proprietà è anche memorizzata nel contenuto della directory. Queste proprietà sono separate da caratteri di nuova riga (\n). In questo esempio, il stdout_lines la proprietà è facile da lavorare.

Quindi, scorrere il contenuto della directory utilizzando un ciclo.

Per fare ciò, apri il get_dir_contents.igname playbook e cambia la seconda attività, come indicato nello screenshot qui sotto.

$ nano playbook/get_dir_contents.igname

Ecco, sto iterando sul dir_contents.stdout_lines array usando un ciclo e stampando gli elementi dell'array usando Ansible eseguire il debug modulo. In questo compito, il articolo variabile è una variabile di ciclo utilizzata per scorrere gli elementi dell'array.

Corri il get_dir_contents.igname playbook, come segue:

$ ansible-playbook playbooks/get_dir_contents.igname

Come puoi vedere, il contenuto del /home/ansible le directory sono stampate sullo schermo.

Esempio 3: directory di backup

In questo esempio, ti mostrerò come eseguire il backup di una directory utilizzando Ansible Registrati, file, e copia moduli.

Per prima cosa, crea il nuovo playbook backup_home_dir.igname nel libri di gioco/ rubrica, come segue:

$ nano playbook/backup_home_dir.igname

Quindi, digita le seguenti righe nel backup_home_dir.igname file.

- host: ubuntu20
utente: ansible
diventa vero
compiti:
- nome: Ottieni la directory home /home/contenuti ansible
shell: ls /home/ansible
registrati: dir_contents
- nome: Crea una nuova directory /tmp/ansible
file:
percorso: /tmp/ansible
stato: directory
- nome: directory home di backup /home/ansible in /tmp/ansible
copia:
src: /home/ansible/ item
dest: /tmp/ansible/
remote_src: Vero
ciclo: " dir_contents.stdout_lines

Una volta terminato, premere + X, seguito da e , per salvare il backup_home_dir.igname file.

In questo playbook, definirò tre compiti.

La prima attività memorizza il contenuto del /home/ansible directory (la directory di cui eseguirò il backup) in) dir_contents variabile utilizzando l'Ansible Registrati modulo.

La seconda attività crea una nuova directory /tmp/ansible usando l'Ansible file modulo. Questa è la directory in cui verrà archiviato il backup.

La terza attività scorre attraverso il dir_contents.stdout_lines array e usa Ansible copia modulo per copiare ogni directory nel /tmp/ansible/ directory.

Corri il backup_home_dir.igname playbook, come segue:

$ ansible-playbook playbooks/backup_home_dir.igname

Come puoi vedere, sul mio Ubuntu 20.04 LTS host, il backup è andato a buon fine.

Esempio 4: eseguire o saltare attività

In questo esempio, ti mostrerò come eseguire o saltare le attività, a seconda della variabile che hai registrato, usando il pulsante Registrati modulo.

Per prima cosa, crea il nuovo playbook condizioni_di registro.igname nel libri di gioco/ directory come segue:

$ nano playbook/condizioni di registrazione.igname

Quindi, digita le seguenti righe nel condizioni_di registro.igname file.

- host: ubuntu20
utente: ansible
diventa vero
compiti:
- nome: Elenca i contenuti della directory
shell: ls /home/ansible/test3
registrati: dir_contents
- nome: controlla se la directory è vuota
eseguire il debug:
msg: "La directory è vuota."
quando: dir_contents.stdout == ""

Una volta terminato, premere + X, seguito da e , per salvare il condizioni_di registro.igname file.

In questo playbook, ho definito due attività.

La prima attività memorizza il contenuto del /home/ansible/test3 directory nel dir_contents variabile.

La seconda attività verifica se dir_contents.stdout è una stringa vuota, o se la directory /home/ansible/test3 è vuoto. Se la directory è vuota, il messaggio La directory è vuota stamperà.

Corri il condizioni_di registro.igname playbook, come segue:

$ ansible-playbook playbooks/register_conditions.igname

Come puoi vedere, il playbook è stato eseguito correttamente.

Dal momento che la directory /home/ansible/test3 è vuoto, il playbook ha stampato il messaggio La directory è vuota.

Quindi, crea un nuovo file nel /home/ansible/test3 directory.

$ touch test3/miofile

Dal momento che /home/ansible/test3 la directory non è più vuota, il compito Controlla se la directory è vuota viene saltato, come puoi vedere nello screenshot qui sotto.

$ ansible-playbook playbooks/register_conditions.igname

Conclusione

L'Ansible Registrati il modulo è molto utile per l'automazione del server. Questo articolo ti ha mostrato le basi del Registrati modulo, inclusi esempi di utilizzo di Ansible Registrati modulo per l'archiviazione e il backup di directory e per l'esecuzione di attività di directory.

Trackpad e puntatore del mouse su schermo AppyMouse per tablet Windows
Gli utenti di tablet spesso mancano il puntatore del mouse, soprattutto quando sono abituati a usare i laptop laptop. Gli smartphone e i tablet touchs...
Il pulsante centrale del mouse non funziona in Windows 10
Il tasto centrale del mouse ti aiuta a scorrere lunghe pagine web e schermate con molti dati. Se si ferma, finirai per usare la tastiera per lo scorri...
Come cambiare i pulsanti sinistro e destro del mouse su PC Windows 10
È abbastanza normale che tutti i mouse dei computer siano progettati ergonomicamente per gli utenti destrimani. Ma sono disponibili dispositivi mouse ...