Introduzione
Ansible è un sistema di gestione per semplificare il controllo di un numero elevato di server contemporaneamente. Questo tool ti permette di controllare molti sistemi diversi in modo automatico da una posizione centrale.
In questo tutorial vederemo come installare e configurare Ansible su Ubuntu 18.04 LTS.
Con Ansible è possibile connettersi contemporaneamente tramite SSH a più server in remoto ed effettuare tutte le operazioni normalmente utilizzate per gestire un server.
Qualsiasi server che puoi amministrare tramite SSH, puoi anche amministrarlo tramite Ansible.
Prerequisiti
Prima di iniziare con questa guida, dovresti avere:
-
Un utente non root con i privilegi sudo impostati sul tuo server. Segui questa guida: Configurazione Iniziale su Ubuntu 18.04 LTS.
-
SSH Keys generate per l'utente non root sul tuo server Ansible. Seguire il primo passaggio di questa guida: Come impostare SSH Keys su Ubuntu 18.04.
-
Due o più server di Ubuntu 18.04. Uno di questi verrà utilizzato come server Ansible, mentre il resto verrà utilizzato come host Ansible. Ognuno dovrebbe avere un utente non root con privilegi sudo e un firewall di base configurato.
Installare Ansible
Installare Ansible sul computer che utilizzerete per connettervi ai vostri server.
Aggiornare l'elenco dei pacchetti di Ubuntu, da terminale:
sudo apt update
Installare il seguente pacchetto, per facilitare la configurazione di alcuni software:
sudo apt install software-properties-common
Aggiungere il repository di Ansible:
sudo apt-add-repository ppa:ansible/ansible
Premere INVIO quando richiesto.
Aggiornare nuovamente l'elenco dei pacchetti (su Ubuntu 18.04 dovrebbero essersi già aggiornati):
sudo apt update
Installare Ansible:
sudo apt install ansible
Configurare l'accesso l'SSH
Sul server Ansible (generalmente il computer locale), usare il comando cat per stampare il contenuto del file SSH Public Key (Chiave Pubblica) dell'utente:
cat ~/.ssh/id_rsa.pub
Copiare il contenuto del file e connettersi tramite SSH ad uno dei server che volete gestire utilizzando Ansible:
ssh utente@indirizzo_ip
Una volta connessi al server, creare la directory ~/.ssh, questo comando creerà la directory, se necessario, o non farà nulla se già esiste:
mkdir -p ~/.ssh
Eseguire il seguente comando, sostituendo chiave_pubblica con il messaggio di output ricevuto dal comando precedente cat ~/.ssh/id_rsa.pub:
echo chiave_pubblica >> ~/.ssh/authorized_keys
ESEMPIO (non utilizzare questa chiave pubblica):
echo AAAAB3NzaC1yc2EAAAADAQABAAABAQDdTV41d4YIf0EqISOryVM4zF2Ucv8ekGtOg6t3RjSJqKfW/XS6n7bzI5yZd3QlvI0M8P+xdUnKxIQpDSkBJaySOmVq1QmmE74iRFvWygsqB3jlEyagnH8h3SKjh5FLTxxUZQxwU351BRCUSxoqLdA30KgrXKOWM/C9lm7dx3DsucV/iGdsv8m2ojwdwwRUFTfWo4PsjJOZ8XX+JciqdTVIbKnPklsosu+8+WvVKiuZYqaq4EMmQXX/wHXAo77FqWg+czDFwexYkFSIC6Lt5p3eS0RVNp4HyU36MmXvHsfIXhkaAJp5Myxd6FdFLcM/5zm52SqAZDnMwIXDr71aArId user@nome >> ~/.ssh/authorized_keys
Aggiornare l'indice dei pacchetti del server:
sudo apt update
Installare Python, necessario per comunicare con Ansible:
sudo apt install python
Chiudere la connessione con il server che volete gestire tramite Ansible:
exit
Ripetere questi passaggi per ogni server che volete gestire con Ansible dal vostro computer.
Configurare Ansible
Apri il file hosts per configurare Ansible, dal vostro computer principale, in modo tale che possa connettersi ai server configurati precedentemente:
sudo nano /etc/ansible/hosts
Impostare il nome del gruppo, l'alias e l'indirizzo IP del server. Il nome del gruppo e l'alias non hanno vincoli, potete inserire quello che preferite.
In questo esempio inseriamo due server, che gestiremo con Ansible.
[primo_gruppo]
Primo ansible_ssh_host=ip_primo
Secondo ansible_ssh_host=ip_secondo
Questi due server sono accessibili da Ansible utilizzando l'SSH. La password non dovrebbe essere richiesta se è stata impostata correttamente la Public Key.
Se siete connessi come utente non root e provate a connettervi adesso ai vostri server con Ansible, riceverete un errore, poiché la chiave SSH è incorporata per l'utente root sui sistemi remoti e Ansible tenterà per impostazione predefinita di connettersi come utente corrente, ovvero con l'utente con il quale siete connessi.
Sul vostro computer, sul quale avete installato Ansible, state utilizzando un utente chiamato per esempio "XXX". Ansible proverà a collegarsi a ciascun server con ssh XXX@indirizzo_ip. Questo comando non funzionerà se sul server al quale provate a connettervi, non esiste un utente con lo stesso nome, nel nostro caso "XXX".
Per risolvere questo problema, possiamo creare un file, per ogni gruppo, che indica a tutti i server dello stesso gruppo di connettersi come utente root.
Creare una cartella per i gruppi:
sudo mkdir /etc/ansible/miei_gruppi
Creare un file per il primo gruppo:
sudo nano /etc/ansible/miei_gruppi/primo_gruppo
I file YAML iniziano con ---, quindi assicurarsi di inserire questi caratteri correttamente.
Incollare le seguenti righe:
---
ansible_ssh_user: root
Salvare e chiudere il file.
Utilizzare Ansible
Adesso è possibile utilizzare Ansible, la configurazione di base è terminata.
Alcuni esempi per utilizzare Ansible.
Effettuare il ping di tutti i server configurati digitando:
ansible -m ping all
Dovreste ricevere un messaggio di output simile al seguente:
Primo | SUCCESS => {
"changed": false,
"ping": "pong"
}
Secondo | SUCCESS => {
"changed": false,
"ping": "pong"
}
Con il parametro -m si intende il "modulo", quindi in questo caso il comando ha richiesto il modulo "ping".
Con il parametro all è possibile selezionare tutti i server e i gruppi contemporaneamente.
Per specificare solo un gruppo:
ansible -m ping primo_gruppo
Oppure per specificare un singolo server:
ansible -m ping Primo
Per specificare piu server:
ansible -m ping Primo:Secondo
Per un secondo esempio sull'utilizzo di Ansible, possiamo vedere lo spazio su disco suoi nostri server:
ansible -m shell -a 'df -h' Primo:Secondo
L'installazione e la configurazione di Ansible su Ubuntu 18.04 LTS è terminata.