Prerequisiti
Se vuoi provare gli esempi in questo articolo, devi:
1) Avere Ansible installato 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 di host per Ansible Automation. È possibile controllare questi articoli se necessario.
Impostazione di una directory di progetto
Prima di andare oltre, impostare una nuova directory di progetti Ansible, solo per mantenere le cose un po 'organizzate.
Per creare la directory del progetto Register-demo/ e tutte le sottodirectory richieste (nella directory di lavoro attuale), eseguire il seguente comando:
$ mkdir -pv register -demo/playbooks
Una volta creata la directory del progetto, vai alla directory del progetto, come segue:
$ CD Register-Demo/
Creare un ospiti File di inventario, come segue:
$ nano hosts
Aggiungi il nome IP o DNS host del tuo host Ubuntu nel file di inventario (un host per riga), come mostrato nello screenshot seguente.
Qui, ho aggiunto il mio Ubuntu 20.04 LTS host VM3.nodekite.com nel Ubuntu20 gruppo.
Una volta terminato, salva il file premendo + X, seguito da Y E .
Crea un file di configurazione Ansible Ansible.cfg Nella directory del progetto, come segue:
$ nano ansible.cfg
Quindi, digitare le seguenti righe in Ansible.cfg file:
[impostazioni predefinite]Una volta terminato, salva il Ansible.cfg File premendo + X, seguito da Y 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 host VM3.nodekite.com è accessibile.
Esempio 1: le basi
In questo esempio, ti mostrerò alcune delle basi dell'Ansible Registrati modulo. Userò Ansible per generare una password casuale nel mio Ubuntu 20.04 host usando il pwgen comando, memorizzare la password in una variabile utilizzando il Registrati modulo e stampare la password sullo schermo.
Innanzitutto, crea il nuovo playbook Generate_Pass.Yaml nel playbooks/ Directory, come segue:
$ nano playbooks/generate_pass.YamlDigitare le seguenti righe in Generate_Pass.Yaml file:
- Host: Ubuntu20Una volta terminato, premere + X, seguito da Y E , per salvare il Generate_Pass.Yaml file.
La riga seguente dice ad Ansible di eseguire il playbook Generate_Pass.Yaml su ogni ospite del Ubuntu20 gruppo. Nel mio caso, il playbook verrà eseguito sull'host VM3.nodekite.com.
In questo playbook, definirò tre compiti.
Il primo compito entrerà che il pwgen Il pacchetto è installato.
La seconda attività genererà una password casuale di 30 caratteri utilizzando il pwgen comando. Userò il Registrati modulo per archiviare la password generata in mypass variabile.
La terza attività stamperà il file mypass variabile usando l'ansible debug modulo.
Esegui il playbook Generate_Pass.Yaml usando il seguente comando:
$ ansible-playbook playbooks/generate_pass.YamlCome puoi vedere, il playbook ha funzionato con successo. È stata anche generata una password.
Ma perché la variabile mypass Stampa così tanti articoli?
Bene, la variabile mypass è un oggetto che contiene alcune proprietà importanti.
Le proprietà più importanti di ciascuno dei Registrati Le variabili sono le seguenti:
cmd - Il comando che ha funzionato per generare l'output.
stdout - L'output del comando.
Stderr - L'output di errore del comando.
inizio - La data e l'ora in cui il comando ha iniziato a eseguire.
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 il FINE e il inizio proprietà.
stdout_lines - Un array contenente ciascuna riga di output del comando. Uguale a stdout, Ma stdout separa le righe usando un nuovo linee (\ n) anziché array.
stderr_lines - Un array contenente ogni riga di output di errore del comando. Uguale a Stderr, Ma Stderr separa le linee usando i caratteri di nuove linee (\ n) anziché array.
Se si desidera semplicemente stampare/accedere alla stringa password (che è molto probabile), è possibile stampare/accedere al stdout proprietà del mypass variabile nel tuo playbook, come contrassegnato nello screenshot qui sotto.
$ nano playbooks/generate_pass.YamlUna volta che hai finito, esegui il playbook Generate_Pass.Yaml Ancora. Verrà stampata solo la stringa password, come puoi vedere nello screenshot seguente.
Che copre le basi dell'ansible Registrati modulo.
Esempio 2: contenuti della directory di archiviazione
In questo esempio, ti mostrerò come archiviare il contenuto di una directory in una variabile usando l'ansible Registrati modulo, oltre a come iterare su di loro.
Innanzitutto, crea il nuovo playbook get_dir_contents.Yaml nel playbooks/ directory.
$ nano playbooks/get_dir_contents.YamlQuindi, digitare le seguenti righe in get_dir_contents.Yaml Playbook:
- Host: Ubuntu20Una volta terminato, premere + X, seguito da Y E , per salvare il Generate_Pass.Yaml file.
In questo playbook, definirò due compiti.
La prima attività elenca tutti i contenuti del /Home/Ansible directory e li memorizza nel dir_contents variabile.
La seconda attività stampica il file dir_contents variabile.
Corri il get_dir_contents.Yaml playbook, come segue.
$ ansible-playbook playbooks/get_dir_contents.YamlCome puoi vedere, il stdout_lines Proprietà memorizzata il contenuto della directory come un array. IL stdout La proprietà è inoltre memorizzata nel contenuto della directory. Queste proprietà sono separate da caratteri newline (\ n). In questo esempio, il stdout_lines la proprietà è facile da lavorare con.
Successivamente, iterare il contenuto della directory usando un loop.
Per fare questo, aprire il get_dir_contents.Yaml playbook e modifica il secondo compito, come contrassegnato nello screenshot seguente.
$ nano playbooks/get_dir_contents.YamlQui, sto ripetendo il dir_contents.stdout_lines Array usando un ciclo e stampare gli elementi dell'array usando l'ansible debug modulo. In questo compito, il articolo La variabile è una variabile loop usata per iterare sugli elementi dell'array.
Corri il get_dir_contents.Yaml playbook, come segue:
$ ansible-playbook playbooks/get_dir_contents.YamlCome puoi vedere, il contenuto del /Home/Ansible La directory è stampata sullo schermo.
Esempio 3: directory di backup
In questo esempio, ti mostrerò come eseguire il backup di una directory usando l'ansible Registrati, file, E copia moduli.
Innanzitutto, crea il nuovo playbook backup_home_dir.Yaml nel playbooks/ Directory, come segue:
$ nano playbooks/backup_home_dir.YamlQuindi, digitare le seguenti righe in backup_home_dir.Yaml file.
- Host: Ubuntu20Una volta terminato, premere + X, seguito da Y E , per salvare il backup_home_dir.Yaml file.
In questo playbook, definirò tre compiti.
La prima attività memorizza il contenuto del /Home/Ansible Directory (la directory che eseguirò il backup) nel dir_contents variabile usando l'ansible Registrati modulo.
La seconda attività crea una nuova directory /tmp/ansible usando l'ansible file modulo. Questa è la directory in cui verrà memorizzato il backup.
La terza attività si aggira attraverso il dir_contents.stdout_lines array e usa l'ansible copia modulo per copiare ogni directory su /tmp/ansible/ directory.
Corri il backup_home_dir.Yaml playbook, come segue:
$ ansible-playbook playbooks/backup_home_dir.YamlCome puoi vedere, sul mio Ubuntu 20.04 LTS host, il backup ha avuto successo.
Esempio 4: eseguire o saltare le attività
In questo esempio, ti mostrerò come eseguire o saltare le attività, a seconda della variabile che hai registrato, usando il Registrati modulo.
Innanzitutto, crea il nuovo playbook Register_conditions.Yaml nel playbooks/ directory come segue:
$ nano playbooks/register_conditions.YamlQuindi, digitare le seguenti righe in Register_conditions.Yaml file.
- Host: Ubuntu20Una volta terminato, premere + X, seguito da Y E , per salvare il Register_conditions.Yaml file.
In questo playbook, ho definito due compiti.
La prima attività memorizza il contenuto del /home/ansible/test3 directory nel dir_contents variabile.
La seconda attività controlla 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 Register_conditions.Yaml playbook, come segue:
$ ansible-playbook playbooks/register_conditions.YamlCome puoi vedere, il playbook ha funzionato con successo.
Dalla directory /home/ansible/test3 è vuoto, il playbook ha stampato il messaggio La directory è vuota.
Quindi, crea un nuovo file in /home/ansible/test3 directory.
$ touch test3/myfile
Dal /home/ansible/test3 La directory non è più vuota, l'attività Controlla se la directory è vuota viene saltato, come puoi vedere nello screenshot qui sotto.
$ ansible-playbook playbooks/register_conditions.YamlConclusione
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 della directory e il backup e per le attività di directory in esecuzione.