Questo articolo ti mostrerà come installare più pacchetti software su host CentOS/RHEL utilizzando Ansible loop. Quindi iniziamo.
Prerequisiti
Se vuoi provare gli esempi in questo articolo,
1) Devi avere Ansible installato sul tuo computer.
2) Devi avere almeno un host CentOS/RHEL 7 o 8 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 dare un'occhiata a questi se necessario.
Configurazione di una directory di progetto
Prima di procedere oltre, creeremo una directory del progetto, solo per mantenere le cose un po' organizzate.
Per creare la directory del progetto centos-pkg/ e tutte le sottodirectory richieste (nella directory di lavoro corrente), esegui il seguente comando:
$ mkdir -pv centos-pkg/playbook
Una volta creata la directory del progetto, accedere alla directory del progetto, come segue:
$ cd centos-pkg/
Quindi, crea un padroni di casa file di inventario, come segue:
$ nano host
Aggiungi l'IP host o il nome DNS (vm3.nodokite.come, nel mio caso) dei tuoi host CentOS/RHEL nel file di inventario (un host per riga).
Al termine, salvare il file premendo by
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
Prova a eseguire il ping di tutti gli host CentOS/RHEL che hai aggiunto nel tuo padroni di casa file di inventario, come segue:
$ ansible all -u ansible -m ping
Come puoi vedere, il mio host CentOS 8 è accessibile.
Installazione di un singolo pacchetto software
Questa sezione ti mostrerà come installare un singolo pacchetto software usando il dnf o yum modulo di Ansible sui tuoi host CentOS/RHEL.
Per prima cosa, crea il nuovo playbook install_package.igname nel libri di gioco/ rubrica, come segue:
$ nano playbook/install_package.igname
Quindi, digita le seguenti righe nel install_package.igname file.
- host: tuttiutente: ansible
diventa vero
compiti:
- nome: Installa il pacchetto httpd
dnf:
nome: httpd
stato: presente
update_cache: Vero
Al termine, salvare il file premendo by
Qui, ho aggiunto solo un compito, Installa il pacchetto httpd. Lo scopo di questa attività è installare il httpd pacchetto su CentOS/RHEL 8.
CentOS/RHEL 7 non utilizza il dnf gestore di pacchetti, usa il yum gestore di pacchetti. Quindi, se stai usando CentOS/RHEL 7, cambia dnf per yum, come indicato nello screenshot qui sotto. Non sono necessarie altre modifiche.
Il nome l'opzione è usata per dire al dnf o yum module il nome del pacchetto che stai tentando di installare. In questo caso, sarà il httpd pacchetto.
Il stato l'opzione è usata per dire a dnf o yum modulo l'azione (i.e. installa, aggiorna, rimuovi) dovrebbe assumere il pacchetto indicato. In questo caso, l'azione è presente.
I valori supportati di stato opzione sono:
presente - installerà il pacchetto se non è già installato.
ultimo - installerà il pacchetto se non è già installato; se già installato, il modulo verificherà gli aggiornamenti; se è disponibile una versione aggiornata del pacchetto, installerà la nuova versione.
assente - rimuoverà il pacchetto se è installato.
Se la update_cache l'opzione è impostata su Vero, la cache del repository del pacchetto DNF/YUM verrà aggiornata prima dell'installazione del pacchetto.
Corri il install_package.igname playbook, come segue:
$ ansible-playbook playbooks/install_package.igname
Come puoi vedere, il playbook install_package.igname eseguito con successo.
Come puoi vedere, il httpd pacchetto è installato sul mio host CentOS 8, che ho aggiunto sul mio padroni di casa file di inventario.
$ sudo dnf list installato | grep httpd
Se sei su CentOS/RHEL 7, usa il yum gestore di pacchetti invece di dnf gestore di pacchetti per verificare se il pacchetto è installato.
$ sudo yum list installato | grep httpd
Installazione di più pacchetti software utilizzando il ciclo with_items
La sezione precedente di questo articolo ti ha mostrato come installare un singolo pacchetto software sul tuo host CentOS/RHEL utilizzando Ansible dnf/yum modulo. Questa sezione ti mostrerà come installare più pacchetti software sui tuoi host CentOS/RHEL utilizzando Ansible with_items ciclo continuo.
Per prima cosa, crea il nuovo playbook install_packages.igname, come segue:
$ nano playbook/install_packages.igname
Digita le seguenti righe nel install_packages.igname file.
- host: tuttiutente: ansible
diventa vero
compiti:
- nome: Installa tutti i pacchetti
dnf:
nome: ' articolo '
stato: presente
update_cache: Vero
with_items:
httpd
php
vsftpd
Una volta terminato, premere
Qui ho definito i nomi dei pacchetti (httpd, php, vsftpd) che voglio installare usando with_items ciclo continuo.
Ho sostituito il nome del pacchetto con la variabile articolo. Il articolo la variabile verrà aggiornata con il nome del pacchetto in ogni iterazione.
Corri il install_packages.igname playbook, come segue:
$ ansible-playbook playbook/install_packages.igname
Come puoi vedere, il playbook install_packages.igname eseguito con successo.
Il httpd, php, e vsftpd i pacchetti sono installati sul mio host CentOS 8, come puoi vedere nello screenshot qui sotto.
$ sudo dnf list installato | grep httpd$ sudo dnf list installato | grep php
$ sudo dnf list installato | grep vsftpd
Installazione di più pacchetti software utilizzando il loop Loop
A partire da Ansible 2.5, il modo consigliato per utilizzare i loop nel tuo playbook è usare il ciclo continuo parola chiave, invece di with_items parola chiave. Ecco perché hai visto un messaggio di avviso quando ho eseguito il install_packages.igname playbook nella sezione precedente di questo articolo.
Lavorare con i loop usando il ciclo continuo la parola chiave è molto facile.
Per prima cosa, apri il playbook install_packages.igname (dall'esempio precedente), come segue:
$ nano playbook/install_packages.igname
Nel install_packages.igname playbook, basta sostituire il termine with_items con il termine ciclo continuo, come indicato nello screenshot qui sotto. Non devi cambiare nient'altro.
Una volta terminato, premere
Corri il install_packages.igname playbook, come segue:
$ ansible-playbook playbook/install_packages.igname
Come puoi vedere, il compito Installa tutti i pacchetti corse il dnf/yum modulo tre volte in totale; una volta per ogni ciclo articolo.
Il httpd, php, e vsftpd i pacchetti sono installati sul mio host CentOS 8, come puoi vedere nello screenshot qui sotto.
$ sudo dnf list installato | grep httpd$ sudo dnf list installato | grep php
$ sudo dnf list installato | grep vsftpd
Installazione di più pacchetti software utilizzando la sintassi dell'array
Le sezioni precedenti di questo articolo ti hanno mostrato come usare il with_items e ciclo continuo loop in Ansible per installare più pacchetti software su CentOS/RHEL 7 o 8, senza alcuna ripetizione del codice. Questa sezione ti mostrerà come fare la stessa cosa con una sintassi di array più semplice.
Per prima cosa, apri il install_packages.igname playbook, come segue:
$ nano playbook/install_packages.igname
Rimuovi il with_items o ciclo continuo sezione dall'attività e modificare il nome opzione per ['httpd', 'php', vsftpd'], come indicato nello screenshot qui sotto.
Una volta terminato, premere
Qui, ogni stringa tra virgolette all'interno delle parentesi quadre ([]) è un elemento dell'array (il nome del pacchetto software, nel mio caso). Ogni elemento dell'array deve essere separato da una virgola (,). Puoi aggiungere tutti gli elementi dell'array che desideri. Ho aggiunto solo tre elementi, httpd, php, e vsftpd.
Corri il install_packages.igname playbook, come segue:
$ ansible-playbook playbook/install_packages.igname
Come puoi vedere, i pacchetti software httpd, php, e vsftpd sono installati sul mio host CentOS 8.
$ sudo dnf list installato | grep httpd$ sudo dnf list installato | grep php
$ sudo dnf list installato | grep vsftpd
Conclusione
Questo articolo ti ha mostrato come usare il with_items e ciclo continuo loop, così come la sintassi Array, con l'Ansible yum/dnf modulo per installare più pacchetti software sui tuoi host CentOS/RHEL 7 o 8.
Per maggiori informazioni, controlla la documentazione ufficiale di Ansible.
[1] Documentazione ufficiale di Ansible loop
[2] Documentazione ufficiale di Ansible with_items
[3] Documentazione ufficiale del modulo Ansible dnf
[4] Documentazione ufficiale del modulo Ansible yum