Ansible è un software gratuito e open source che può essere utilizzato per automatizzare il provisioning del software, la gestione della configurazione e la distribuzione delle applicazioni. A differenza di Puppet o Chef, non è necessario configurare un ambiente client-server prima di utilizzare Ansible. Puoi gestire più host da una posizione centrale. Questo strumento è molto semplice ma potente per automatizzare complessi ambienti applicativi IT multilivello. Ansible comunica tramite i normali canali SSH per recuperare informazioni da macchine remote ed eseguire attività.
In questo tutorial impareremo come installare e utilizzare Ansible sul server Ubuntu 18.04.
Requisiti
- Due sistemi server Ubuntu 18.04 con server OpenSSH installato.
- Un indirizzo IP statico 192.168.0.101 è impostato sul sistema server e 192.168.0.104 è impostato sul sistema client.
- Un utente non root con privilegi sudo è impostato su entrambi i sistemi.
Per iniziare
Prima di iniziare, aggiorna il tuo sistema con l'ultima versione con il seguente comando:
sudo apt-get update -y
sudo apt-get upgrade -y
Una volta che il tuo sistema è aggiornato, riavvia il sistema per applicare le modifiche.
Installa e configura Ansible
Per impostazione predefinita, l'ultima versione di Ansible non è disponibile nel repository predefinito di Ubuntu 18.04. Quindi dovrai aggiungere Ansible PPA al tuo server. Puoi farlo eseguendo il seguente comando:
sudo apt-add-repository ppa:ansible/ansible
Quindi, aggiorna il repository e installa Ansible con il seguente comando:
sudo apt-get update -y
sudo apt-get install ansible -y
Una volta completata l'installazione, puoi verificare la versione di Ansible con il seguente comando:
sudo ansible --version
Uscita:
ansible 2.7.1 config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/dist-packages/ansible executable location = /usr/bin/ansible python version = 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0]
Successivamente, dovrai definire il tuo sistema client che desideri gestire nel file hosts di Ansible. Puoi farlo modificando il file /etc/ansible/hosts:
sudo nano /etc/ansible/hosts
Aggiungi le seguenti righe:
[Client] node1 ansible_ssh_host=192.168.0.104
Salva e chiudi il file, quando hai finito.
Configura le chiavi SSH per il sistema client
Ansible utilizza SSH per comunicare con l'host client. Quindi dovrai configurare l'autenticazione ssh basata su chiave per l'host client.
Innanzitutto, genera una coppia di chiavi SSH con il seguente comando:
ssh-keygen
Uscita:
Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:bTVjTCKqxD8rnIw7/6mB6ZH9cnhzzOFg+/+x4clSOow [email protected] The key's randomart image is: +---[RSA 2048]----+ | . . . | | . . . + | | o . * | | . o . o o | | . o S o | | O .oo.. . | | * Bo.* + oo | | ..oo+=.E =o = | | ooo*++...+* | +----[SHA256]-----+
Quindi, copia questa chiave pubblica sul sistema Client con il seguente comando:
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
Uscita:
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys [email protected]'s password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh '[email protected]'" and check to make sure that only the key(s) you wanted were added.
Lavorare con Ansible
Ansible è ora installato e configurato. È il momento della prova Ansible.
Sul server Ansible, prova a eseguire il ping del tuo sistema client utilizzando Ansible con il seguente comando.
ansible -m ping Client
Uscita:
node1 | SUCCESS => { "changed": false, "ping": "pong" }
Se nel file hosts di Ansible sono configurati più client. Quindi, puoi eseguire il ping di tutto il sistema Client con il seguente comando:
ansible -m ping all
Puoi controllare lo stato del web server Apache sul sistema Client con il seguente comando:
ansible -m shell -a 'service apache2 status' Client
Uscita:
node1 | CHANGED | rc=0 >> * apache2 is running
Per controllare la dimensione della partizione del sistema Client, eseguire il comando seguente:
ansible -m shell -a 'df -h' Client
Uscita:
node1 | CHANGED | rc=0 >> Filesystem Size Used Avail Use% Mounted on /dev/sda1 138G 48G 83G 37% / none 4.0K 0 4.0K 0% /sys/fs/cgroup udev 1.9G 4.0K 1.9G 1% /dev tmpfs 384M 1.2M 383M 1% /run none 5.0M 0 5.0M 0% /run/lock none 1.9G 67M 1.9G 4% /run/shm none 100M 36K 100M 1% /run/user /dev/sda5 225G 35G 180G 16% /Data
Congratulazioni! hai installato e configurato correttamente Ansible sul server Ubuntu 18.04. Ora puoi utilizzare facilmente Ansible per eseguire semplici attività in remoto.