Ansible è uno strumento usato per gestire e amministrare più server da un computer centrale. È uno strumento di gestione dei server. Ansible non ha bisogno di alcuna configurazione sul lato server come Chef o Puppet. Basta installare Ansible sul tuo computer e gestire o amministrare i server tramite SSH. È molto semplice e facile da usare. In questo articolo, vi mostrerò come installare e utilizzare Ansible su CentOS 8. Quindi, cominciamo.

Installazione di Ansible:

Ansible è disponibile nel repository EPEL di CentOS 8. Quindi, si può facilmente installare Ansible su CentOS 8.

Prima, aggiorna la cache del repository dei pacchetti DNF con il seguente comando:

$ sudo dnf makecache

Ora, per abilitare il repository EPEL, installa il pacchetto epel-release con il seguente comando:

$ sudo dnf install epel-release

Per confermare l’installazione, premi Y e poi premi <Enter>.

il pacchetto EPEL-release dovrebbe essere installato e il repository EPEL dovrebbe essere abilitato.

Ora, aggiorna nuovamente la cache del repository dei pacchetti DNF con il seguente comando:

$ sudo dnf makecache

Ora, installa Ansible con il seguente comando:

$ sudo dnf install ansible

Per confermare l’installazione, premi Y e poi premi <Enter>.

DNF dovrebbe iniziare a scaricare tutti i pacchetti richiesti da internet.

Ti potrebbe essere chiesto di accettare la chiave GPG del repository EPEL. Premi Y e poi premi <Invio> per accettarla.

DNF dovrebbe iniziare ad installare tutti i pacchetti scaricati.

A questo punto, Ansible dovrebbe essere installato.

Ora, esegui il seguente comando:

$ ansible –version

Come puoi vedere, sto usando Ansible 2.9.3 e funziona bene.

Configurare i server per Ansible:

Per gestire o amministrare i server con Ansible, devi avere un server SSH installato e funzionante sui server. La porta SSH dei server deve essere aperta e i server devono essere accessibili dall’host Ansible. Questo è l’unico requisito per usare Ansible.

In questo articolo, userò 4 macchine virtuali (VM) (2 Ubuntu Server 18.04 LTS VMs e 2 Debian 10 VMs) per dimostrare le basi della gestione e amministrazione di server Ansible.

Le 4 VM sono:

linuxhint-f1a46 – 192.168.20.161
linuxhint-8ee7a – 192.168.20.166
linuxhint-s40 – 192.168.20.171
linuxhint-s41- 192.168.20.170

Puoi usare gli indirizzi IP dei server per gestirli o amministrarli con Ansible. Puoi anche usare i nomi DNS dei server.

In questo articolo, userò il file /etc/hosts per la risoluzione DNS degli indirizzi IP delle VM.

Se vuoi seguire, apri il tuo file /etc/hosts con l’editor di testo vi come segue:

$ sudo vi /etc/hosts

Ora, aggiungi le linee come segnato nello screenshot qui sotto e salva il file.

Ora, genera una chiave SSH sul tuo host CentOS 8 Ansible come segue:

$ ssh-keygen

Premi <Invio>.

Premi <Invio>.

Premi <Enter>.

La chiave SSH dovrebbe essere generata.

Ora, devi caricare la chiave SSH su tutti i server che vuoi gestire con Ansible.

Per copiare la chiave SSH sul server vm1.linuxhint.local server, esegui il seguente comando:

$ ssh-copy-id [email protected]

Ora, digita yes e poi premi <Enter>.

Ora, digita la password di login della vm1.linuxhint.local e premi <Enter>.

La chiave SSH dovrebbe essere copiata.

Fai la stessa cosa per il server vm2.linuxhint.local, vm3.linuxhint.local e vm4.linuxhint.local.

$ ssh-copy-id [email protected]

$ ssh-copy-id [email protected]

$ ssh-copy-id [email protected]

Una volta copiata la chiave SSH nelle VM, dovresti essere in grado di accedere a SSH senza alcuna password, come puoi vedere nello screenshot qui sotto.

Ora, esegui il seguente comando su ogni server per consentire l’accesso sudo senza password per l’utente di login. Questo è necessario per Ansible per eseguire qualsiasi comando di root.

$ echo “$(whoami) ALL=(ALL) NOPASSWD:ALL” | sudo tee /etc/sudoers.d/$(whoami)

Tutti i server sono ora pronti per essere configurati o gestiti da Ansible.

Usando Ansible:

Ansible mantiene una lista di tutti gli host che gestisce in un file chiamato file inventario. Il file inventario di Ansible è solo un semplice file di testo.

Creiamo prima una nuova directory del progetto Ansible ~/ansible/, poi creeremo il nostro file inventario.

$ mkdir ~/ansible

Ora, naviga nella directory ~/ansible.

$ cd ~/ansible

Ora, crea un file inventario Ansible come segue. Puoi chiamare questo file in qualsiasi modo. Io lo chiamerò hosts.

$ vi hosts

Ora, puoi aggiungere i tuoi server come segue. Qui, l’opzione ansible_user è usata per definire l’utente che Ansible userà per eseguire i comandi su questi server. Di solito è l’utente di login del server.

Puoi anche mescolare indirizzi IP e nomi DNS dei server nel file di inventario.

Puoi anche raggruppare i server. Qui, ho 2 gruppi, webserver e dbserver.

Nel gruppo webserver, ho aggiunto i server vm1 e vm2. Nel gruppo dbserver, ho aggiunto i server vm3 e vm4.

Una volta creato il file di inventario, è possibile utilizzare il file di inventario utilizzando l’opzione -i di Ansible.

Puoi elencare tutti gli host dal file di inventario come segue:

$ ansible -i hosts –list-hosts all

Puoi controllare se tutti gli host sono attivi come segue:

$ ansible -i hosts –list-hosts -m ping all

Come puoi vedere, tutti gli host sono attivi.

Puoi anche pingare tutti gli host in un singolo gruppo.

$ ansible -i hosts –list-hosts -m ping webserver

Puoi eseguire comandi di shell usando Ansible come segue:

$ ansible -i hosts -m shell -a ‘command’ <all|groupName>

Puoi anche eseguire comandi di shell (con privilegi sudo) come segue.

$ ansible -i hosts -b –become-method=sudo -m shell -a ‘command’ &lt;all
|groupName&gt;

Per esempio, puoi aggiornare la cache del repository dei pacchetti APT sugli host nel gruppo webserver usando Ansible come segue:

$ ansible -i hosts -b –become-method=sudo -m shell -a ‘apt update’ webserver

Come puoi vedere, la cache del repository dei pacchetti APT viene aggiornata per tutti gli host nel gruppo webserver.

Provo a installare Apache 2 web server su tutti gli host del gruppo webserver.

$ ansible -i hosts -b –become-method=sudo -m shell -a
‘apt install -y apache2’ webserver

Apache webserver dovrebbe essere installato in tutti gli host del gruppo webserver.

Come puoi vedere, il server web Apache sta lavorando su tutti gli host del gruppo webserver.

$ ansible -i hosts -b –become-method=sudo -m shell -a ‘curl -sI
http://localhost’ webserver

Allo stesso modo, puoi eseguire qualsiasi comando su tutti gli host nel gruppo dbserver.

$ ansible -i hosts -m shell -a ‘lsb_release -a’ dbserver

Puoi anche usare Ansible Playbook per gestire i tuoi server più facilmente. Ansible Playbook è fuori dallo scopo di questo articolo. Leggi la documentazione di Ansible per maggiori informazioni su Ansible Playbook.

Grazie per aver letto questo articolo.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.