Se sei un amministratore di sistema, è importante disporre di un modo coerente per gestire tutti i server e i computer che utilizzi. I sistemi di gestione della configurazione possono semplificare notevolmente il processo. Gestiscono tutti i sistemi in modo efficiente da una posizione centrale.
Su Linux, sono disponibili molteplici sistemi di gestione della configurazione. Ad esempio, Puppet, Chef, Ansible, Bcfg2, Juju, CFEngine, ecc. Mentre strumenti come Puppet e Chef tendono ad essere più complessi e avanzati, Ansible offre semplicità e facilità d'uso. Non è necessario installare alcun software client aggiuntivo sui nodi per far funzionare Ansible. Al contrario, Ansible utilizza SSH per gestire e automatizzare i sistemi. Ansible è un software open-source. È anche altamente scalabile, coerente e affidabile.
Questa guida mostra come installare e configurare Ansible su Ubuntu 20.04.
Ansible su Ubuntu
Ansible può realizzare tre tipi di automazione:
-
Provisioning: Può configurare vari server in base alle esigenze dell'infrastruttura.
-
Gestione della configurazione: Può eseguire varie modifiche di configurazione dei server. Ad esempio, avviare e arrestare servizi, installare applicazioni e aggiornamenti, implementare criteri di sicurezza, ecc.
-
Distribuzione delle applicazioni: Semplifica il DevOps con la distribuzione automatizzata di applicazioni sviluppate internamente sul sistema di produzione.
Ansible può funzionare perfettamente in quasi tutti gli ambienti IT – che si tratti di server ospitati o tradizionali, piattaforme di virtualizzazione o nel cloud. Supporta inoltre la gestione di vari sistemi come database, reti, firewall, dispositivi di archiviazione e molti altri. Anche CloudSigma supporta Ansible per la nostra infrastruttura cloud.
Prerequisiti
Per questa guida, abbiamo bisogno di un paio di macchine:
-
Nodo di controllo: Il nodo di controllo è il nodo centrale che si connette a tutti i nodi host, assegna i compiti e gestisce vari aspetti del sistema. Il nodo di controllo può essere qualsiasi cosa – una macchina locale o un server remoto.
-
Nodo host: Gli host Ansible sono le macchine che il nodo di controllo Ansible può automatizzare.
Come suggerisce il titolo della guida, si prevede che tutte queste macchine siano configurate con Ubuntu 20.04 con i pacchetti più recenti. Ecco una guida rapida su come configurare un server Ubuntu. Poiché Ansible utilizza SSH to connettersi alle macchine, tutti i nodi host devono essere configurati correttamente con le chiavi SSH con il nodo di controllo. Assicurati che tutti i nodi host abbiano la chiave SSH pubblica del nodo di controllo aggiunta al file authentication_keys. Segui il nostro tutorial per imparare come generare e aggiungere chiavi SSH ai server Linux.
Passaggio 1: Installazione di Ansible
Nel caso di Ubuntu, non è necessaria alcuna configurazione aggiuntiva di pacchetti o repository. Ansible è direttamente disponibile dai server dei pacchetti ufficiali di Ubuntu. L'esecuzione di qualsiasi modifica a livello di sistema richiede l'accesso amministrativo – l'utente root o un utente non root con privilegi sudo. Il file sudoers gestisce i permessi sudo per utenti e gruppi.
Per prima cosa, installeremo Ansible sul computer che fungerà da nodo di controllo. Per installare Ansible sul nodo di controllo, esegui i seguenti comandi:
|
1 |
sudo apt update |

|
1 |
sudo apt install ansible -y |

Se intendi utilizzare una password come meccanismo di autenticazione SSH, devi avere il pacchetto sshpass installato:
|
1 |
sudo apt install sshpass |

Passaggio 2: Configurazione del file di inventario
In Ansible, il file di inventario contiene informazioni su tutti gli host che Ansible gestirà. Possono essere decine o centinaia di server registrati nel file di inventario. I server possono anche essere divisi in gruppi e sottogruppi. In genere, il file di inventario viene utilizzato per stabilire variabili che saranno valide solo per gli specifici host o gruppi. È una tecnica utile nella scrittura di playbook e template. Alcune variabili possono anche influenzare il modo in cui viene eseguito un playbook.
Ansible viene fornito con un file di inventario predefinito. Per prima cosa, apri il file in un editor di testo:
|
1 |
sudo vim /etc/ansible/hosts |

Per impostazione predefinita, il file di inventario contiene vari esempi di riferimento. Ecco un esempio con un gruppo denominato servers contenente tre server diversi. La variabile ansible_python_interpreter definisce l'interprete Python per tutti gli host inclusi nell'inventario. Con la direttiva ansible_user, possiamo dichiarare l'account utente a cui Ansible si connetterà:
|
1 2 3 4 5 6 7 |
[servers] server_1 ansible_host=<server_1_ip> ansible_user=<server_1_username> server_2 ansible_host=<server_2_ip> ansible_user=<server_2_username> server_3 ansible_host=<server_3_ip> ansible_user=<server_3_username> [all:vars] ansible_python_interpreter=/usr/bin/python3 |

Successivamente, salva il file e chiudi l'editor. Per verificare l'inventario, esegui il seguente comando:
|
1 |
ansible-inventory --list -y |
L'output dovrebbe essere simile a questo:

Passo 3: Test di connessione
Dopo aver configurato il file di inventario, dobbiamo verificare se Ansible è in grado di connettersi a quei server tramite SSH. Possiamo farlo semplicemente inviando un ping a tutti i nodi host. Dal nodo di controllo, esegui il ping di tutti i nodi host :
|
1 |
ansible all -m ping |
Il modulo ping verifica le seguenti cose:
-
Accessibilità dell'host
-
Validità delle credenziali SSH
-
Gli host possono eseguire i moduli Ansible utilizzando Python
L'output dovrebbe essere simile a questo:

Se la risposta da un particolare nodo è pong, significa che il nodo è pronto per eseguire comandi e playbook Ansible sul server.
Passo 4: Esecuzione di comandi ad-hoc
Questo è un passaggio opzionale. Tuttavia, può essere utile per verificare la piena funzionalità di Ansible verso i server remoti. Questa sezione può anche servire come introduzione di base all'uso e alla configurazione aggiuntiva di Ansible. Una volta confermata la connettività ai nodi, possiamo iniziare a eseguire comandi ad-hoc e playbook. Qualsiasi comando che verrebbe eseguito normalmente sui server remoti può essere eseguito con Ansible su tutti i server.
Qui, esegui il seguente comando. Verificherà l'utilizzo del disco su tutti i nodi contemporaneamente:
|
1 |
ansible all -a "df -h" |

Possiamo anche eseguire vari moduli Ansible utilizzando la funzionalità dei comandi ad-hoc, proprio come abbiamo eseguito il ping modulo per il test. Ad esempio, il modulo apt funziona con il gestore di pacchetti APT su Ubuntu. Può gestire i pacchetti su un nodo Ubuntu remoto. Nota che richiede i permessi di root per apportare modifiche a livello di sistema. Il nodo remoto deve consentire l'accesso come root o l'utente deve disporre dei permessi per eseguire attività amministrative.
Nel seguente esempio, Ansible installa Nginx su tutti i nodi host:
|
1 |
ansible all -m apt -a "name=nginx state=latest" -u root |
Che ne dici di eseguire comandi su un solo server? Useremo il soprannome del server (assegnato all'interno del file di inventario) per specificare il server:
|
1 |
ansible server_1 -a "df -h" -u cloudsigma |

Possiamo anche specificare più server. Dichiarare il soprannome di ciascun server di destinazione con i due punti come delimitatore:
|
1 |
ansible server_1:server_2:server_3 -a "df -h" -u cloudsigma |

Considerazioni finali
In questa guida, ti abbiamo mostrato un metodo passo-passo per installare Ansible e configurare un file di inventario per eseguire comandi ad-hoc dal nodo di controllo Ansible. Una volta configurato, il nodo di controllo può eseguire qualsiasi comando o playbook che desideri eseguire sugli host.
Buon computing!
Commenti
Ancora nessun commento. Scrivi il primo.