Ansible

Installare più pacchetti facilmente su CentOS utilizzando Ansible

Installare più pacchetti facilmente su CentOS utilizzando Ansible
Su Ansible, puoi usare il dnf o yum modulo per installare pacchetti software su host CentOS o RHEL. Per impostazione predefinita, questi moduli installano solo un singolo pacchetto software. Puoi usare il dnf o yum modulo più volte nel tuo playbook Ansible per installare tutti i pacchetti software che desideri. Tuttavia, questo non è il modo più efficiente per farlo, poiché ci saranno molte ripetizioni di codice che vorremmo evitare se possibile. Fortunatamente, possiamo usare i loop per installare facilmente tutti i pacchetti software che vogliamo senza alcuna ripetizione del codice.

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 + 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 .

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: tutti
utente: ansible
diventa vero
compiti:
- nome: Installa il pacchetto httpd
dnf:
nome: httpd
stato: presente
update_cache: Vero

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

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: tutti
utente: 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 + X, seguito da e , per salvare il install_packages.igname file.

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 + X, seguito da e , per salvare il install_packages.igname file.

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 + X, seguito da e , per salvare il install_packages.igname playbook.

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

Come installare League Of Legends su Ubuntu 14.04
Se sei un fan di League of Legends, questa è un'opportunità per testare League of Legends. Nota che LOL è supportato su PlayOnLinux se sei un utente L...
Installa l'ultimo gioco di strategia OpenRA su Ubuntu Linux
OpenRA è un motore di gioco di strategia in tempo reale gratuito/libero che ricrea i primi giochi di Westwood come il classico Command & Conquer: Red ...
Installa l'ultimo Dolphin Emulator per Gamecube e Wii su Linux
L'emulatore Dolphin ti consente di giocare ai giochi Gamecube e Wii scelti su Personal Computer Linux (PC). Essendo un emulatore di giochi liberament...