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) È necessario disporre di 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 di host per Ansible Automation. Puoi verificarli se necessario.
Impostazione di una directory di progetto
Prima di muoverti oltre, creeremo una directory di 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 attuale), eseguire il seguente comando:
$ mkdir -pv centos -pkg/playbooks
Una volta creata la directory del progetto, vai alla directory del progetto, come segue:
$ CD CENTOS-PKG/
Quindi, crea un file ospiti File di inventario, come segue:
$ nano hosts
Aggiungi il nome IP o DNS host (VM3.nodekite.com, Nel mio caso) dei tuoi host CentOS/RHEL nel file di inventario (un host per riga).
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 .
Prova a eseguire il ping di tutti gli host CentOS/RHEL che hai aggiunto nel tuo ospiti File di inventario, come segue:
$ ansible tutto -u ansible -m ping
Come puoi vedere, l'host CentOS 8 è accessibile.
Installazione di un singolo pacchetto software
Questa sezione ti mostrerà come installare un singolo pacchetto software utilizzando il dnf O Yum Modulo di Ansible sui tuoi ospiti CentOS/RHEL.
Innanzitutto, crea il nuovo playbook install_package.Yaml nel playbooks/ Directory, come segue:
$ nano playbooks/install_package.YamlQuindi, digita le seguenti righe in install_package.Yaml file.
- Host: tuttoUna volta terminato, salva il file premendo + X, seguito da Y E .
Qui, ho aggiunto solo un'attività, Installa il pacchetto HTTPD. Lo scopo di questo compito è installare il httpd Pacchetto su CentOS/RHEL 8.
CentOS/RHEL 7 non usa il dnf pacchetti manager, utilizza il Yum Gestore dei pacchetti. Quindi, se stai usando CentOS/RHEL 7, cambia dnf A Yum, come contrassegnato nello screenshot seguente. Non sono richieste altre modifiche.
IL nome l'opzione viene utilizzata per dire il dnf O Yum modulo il nome del pacchetto che stai cercando di installare. In questo caso, sarà il httpd pacchetto.
IL stato l'opzione viene utilizzata per dire il dnf O Yum modulo l'azione (i.e. installare, aggiornare, rimuovere) dovrebbe assumere il pacchetto dato. In questo caso, l'azione è presente.
I valori supportati del stato L'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 che il pacchetto sia installato.
Corri il install_package.Yaml playbook, come segue:
$ ansible-playbook playbooks/install_package.YamlCome puoi vedere, il playbook install_package.Yaml ha corso con successo.
Come puoi vedere, il httpd Il pacchetto è installato sull'host CentOS 8, che ho aggiunto sul mio ospiti file di inventario.
$ Sudo DNF Elenco installato | grep httpdSe sei su CentOS/RHEL 7, usa il Yum Gestore dei pacchetti invece del dnf Gestione pacchetti per verificare se il pacchetto è installato.
$ Sudo Yum List installato | grep httpdInstallazione di più pacchetti software utilizzando With_Items Loop
La sezione precedente di questo articolo ha mostrato come installare un singolo pacchetto software sull'host CentOS/RHEL utilizzando l'Ansible dnf/Yum modulo. Questa sezione ti mostrerà come installare più pacchetti software sugli host CentOS/RHEL utilizzando l'Ansible con_items ciclo continuo.
Innanzitutto, crea il nuovo playbook install_packages.Yaml, come segue:
$ nano playbooks/install_packages.YamlDigitare le seguenti righe in install_packages.Yaml file.
- Host: tuttoUna volta terminato, premere + X, seguito da Y E , per salvare il install_packages.Yaml file.
Qui, ho definito i nomi dei pacchetti (httpd, PHP, vsftpd) che voglio installare usando con_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.Yaml playbook, come segue:
$ ansible-playbook playbooks/install_packages.YamlCome puoi vedere, il playbook install_packages.Yaml ha corso con successo.
IL httpd, PHP, E vsftpd I pacchetti sono installati sull'host CentOS 8, come puoi vedere nello screenshot qui sotto.
$ Sudo DNF Elenco installato | grep httpd
$ Sudo DNF Elenco installato | grep php
$ Sudo DNF Elenco installato | grep vsftpd
Installazione di più pacchetti software utilizzando il loop loop
A partire da Ansible 2.5, il modo consigliato di utilizzare i loop nel tuo playbook è usando il ciclo continuo parola chiave, invece del con_items parola chiave. Ecco perché hai visto un messaggio di avvertimento quando ho eseguito il install_packages.Yaml Playbook nella sezione precedente di questo articolo.
Lavorando con i loop usando il file ciclo continuo La parola chiave è molto semplice.
Innanzitutto, apri il playbook install_packages.Yaml (dall'esempio precedente), come segue:
$ nano playbooks/install_packages.YamlNel install_packages.Yaml playbook, basta sostituire il termine con_items con il termine ciclo continuo, come contrassegnato nello screenshot seguente. Non è necessario cambiare nient'altro.
Una volta terminato, premere + X, seguito da Y E , per salvare il install_packages.Yaml file.
Corri il install_packages.Yaml playbook, come segue:
$ ansible-playbook playbooks/install_packages.YamlCome puoi vedere, il compito Installa tutti i pacchetti ha gestito il dnf/Yum modulo tre volte in totale; Una volta per ogni ciclo articolo.
IL httpd, PHP, E vsftpd I pacchetti sono installati sull'host CentOS 8, come puoi vedere nello screenshot qui sotto.
$ Sudo DNF Elenco installato | grep httpdInstallazione di più pacchetti software utilizzando la sintassi dell'array
Le sezioni precedenti di questo articolo ti hanno mostrato come usare il con_items E ciclo continuo Loops 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 per array più semplice.
Innanzitutto, apri il install_packages.Yaml playbook, come segue:
$ nano playbooks/install_packages.YamlRimuovi il con_items O ciclo continuo sezione dalla attività e modificare il nome opzione a ['httpd', 'php', vsftpd '], come contrassegnato nello screenshot seguente.
Una volta terminato, premere + X, seguito da Y E , per salvare il install_packages.Yaml playbook.
Qui, ogni stringa citata all'interno delle staffe quadrate ([) è un elemento array (il nome del pacchetto software, nel mio caso). Ogni elemento di array dovrebbe essere separato da una virgola (,). Puoi aggiungere tutti gli elementi di array che desideri. Ho aggiunto solo tre elementi, httpd, PHP, E vsftpd.
Corri il install_packages.Yaml playbook, come segue:
$ ansible-playbook playbooks/install_packages.YamlCome puoi vedere, i pacchetti software httpd, PHP, E vsftpd sono installati sul mio host CentOS 8.
$ Sudo DNF Elenco installato | grep httpdConclusione
Questo articolo, ti ha mostrato come usare il con_items E ciclo continuo Loops, così come la sintassi dell'array, con l'ansible Yum/dnf Modulo per installare più pacchetti software sui tuoi host CentOS/RHEL 7 o 8.
Per ulteriori informazioni, consultare la documentazione ufficiale di Ansible.
[1] Documentazione ufficiale dei loop Ansible
[2] Documentazione ufficiale di Ansible with_items
[3] Documentazione ufficiale del modulo DNF Ansible
[4] Documentazione ufficiale del modulo Ansible Yum