Ansible Ubuntu · 8 min read · Dec 19, 2025

Come installare e configurare Ansible su Ubuntu 20.04

Ansible è uno strumento di gestione della configurazione molto popolare progettato per semplificare il processo di controllo di un gran numero di server. Puoi controllare quanti più server e eseguire processi su di essi simultaneamente da un singolo nodo.

Ansible non richiede alcun software speciale da installare sui nodi server e può controllarli tramite SSH.

In questa guida, impareremo come installare e configurare Ansible su un server Ubuntu 20.04.

Prerequisiti

  • Due o più sistemi server basati su Ubuntu 20.04 con OpenSSH server installato.
  • Sia il server che i nodi sono accessibili tramite indirizzi IP pubblici.
  • Un utente non root con privilegi sudo configurato sul server Ansible e un utente root con una password configurata sui client Ansible.

Installare Ansible

Il repository ufficiale di Ansible non supporta Ubuntu 20.04 a causa di un bug nella libreria python di Ubuntu al momento della scrittura di questo tutorial.

Fortunatamente, Ubuntu include Ansible 2.9 che è ciò che installeremo. Esegui il seguente comando per installare Ansible.

$ sudo apt install ansible -y

Testa la tua installazione eseguendo il seguente comando.

$ ansible --version
ansible 2.9.6
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/username/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.8.5 (default, Jan 27 2021, 15:41:15) [GCC 9.3.0]

Configurare il file di inventario

Per poter connettersi a più host, è necessario un file che registri i dettagli dei nodi. Questo file è chiamato file di inventario.

A seconda di quanti server desideri controllare, il file di inventario di Ansible ti consente anche di organizzarli in gruppi e sottogruppi. Puoi anche impostare variabili personalizzate applicabili a host o gruppi selezionati che possono essere utilizzate ulteriormente durante il passaggio delle istruzioni.

Ansible include un file di inventario predefinito disponibile in /etc/ansible/hosts. Aprilo con l’editor Nano.

$ sudo nano /etc/ansible/hosts

Incolla il seguente codice in fondo al file.

[servers]
server1 ansible_host=203.0.113.111
server2 ansible_host=203.0.113.112
server3 ansible_host=203.0.113.113

[all:vars]
ansible_python_interpreter=/usr/bin/python3

La sezione servers definisce l’elenco dei nodi a cui desideri connetterti. Puoi creare quanti più gruppi per organizzare i server in più gruppi.

Il gruppo all:vars imposta il parametro ansible_python_interpreter su tutti gli host nell’inventario. Assicura che Ansible utilizzi l’eseguibile Python 3 invece di Python 2, che è stato rimosso dalle versioni recenti di Ubuntu.

Quando hai finito, salva e chiudi il file premendo CTRL+X, poi Y e ENTER per confermare le modifiche.

Nota: Puoi anche creare il tuo file di inventario in qualsiasi posizione di tua scelta che puoi poi passare utilizzando il parametro -i durante l’esecuzione dei comandi Ansible.

Puoi controllare la tua lista di inventario con il seguente comando.

$ ansible-inventory --list -y
all:
  children:
    servers:
      hosts:
        server1:
          ansible_host: 203.0.113.111
          ansible_python_interpreter: /usr/bin/python3
        server2:
          ansible_host: 203.0.113.112
          ansible_python_interpreter: /usr/bin/python3
        server3:
          ansible_host: 203.0.113.113
          ansible_python_interpreter: /usr/bin/python3
    ungrouped: {}

Organizzare i server in gruppi e sottogruppi

Questo è un utile suggerimento se hai molti server con alcuni server che svolgono funzioni specifiche. Ad esempio, puoi utilizzare questo metodo per raggruppare i server web e i server di database separatamente. Puoi anche rendere un host parte di più gruppi. Puoi anche rendere un host parte di più gruppi. Per ottenere ciò, il tuo file di inventario dovrebbe apparire simile al seguente.

[webservers]
203.0.113.111
203.0.113.112

[dbservers]
203.0.113.113
server_hostname

[development]
203.0.113.111
203.0.113.113

[production]
203.0.113.112
server_hostname

Configurare le chiavi SSH

Affinché Ansible possa connettersi ai server, devi configurare le chiavi SSH tra il tuo server Ansible e gli host specificati nel file di inventario. Questo funzionerà solo se i client Ansible non hanno una chiave pubblica abilitata e hanno un account root abilitato con una password.

Utilizza i seguenti passaggi per creare e configurare una chiave SSH per Ansible e i suoi nodi.

Crea la chiave per Ansible.

$ ssh-keygen -t rsa -b 4096 -C "Chiave Ansible"

Copia la chiave pubblica nei tuoi account sui server remoti. Per questo, utilizzeremo il comando ssh-copy-id.

$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email protected]
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email protected]
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email protected]

Questo è tutto. Ora Ansible dovrebbe essere in grado di comunicare con i tuoi server.

Configurare le chiavi SSH sui nodi con chiave pubblica esistente

Se i client hanno già le chiavi pubbliche abilitate, dovrai seguire alcuni passaggi extra. Per questo, devi creare un nuovo utente accessibile solo da Ansible su ogni server nodo. Quell’utente avrà privilegi sudo accessibili senza password e potrà essere accessibile solo dal tuo server ansible.

Per creare un utente ansible, esegui il seguente comando.

$ sudo adduser ansible

Scegli una password forte e lascia vuoti tutti gli altri campi.

Ora, configura l’accesso sudo senza password per questo utente tramite il seguente comando.

$ echo "ansible ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ansible

Ora, che hai aggiunto e configurato il nuovo utente, puoi copiare la chiave SSH dal tuo server ansible al server nodo utilizzando il seguente comando.

$ ssh-copy-id [email protected]

Ti verrà chiesta una password per l’utente ansible. Inseriscila e la chiave SSH sarà copiata.

Successivamente, disabilita il login basato su password per l’utente ansible sul server nodo.

$ sudo usermod -L ansible

Ora, il tuo server nodo è accessibile solo dal server Ansible poiché solo quel server ha la chiave pubblica per esso e non puoi usarlo con privilegi sudo sul server nodo direttamente poiché il login con password è disabilitato.

Dovrai ripetere questi passaggi per ogni server nodo. Inoltre, sostituisci l’utente root con l’utente ansible in questo tutorial.

Testare la connessione

Dopo aver configurato il file di inventario e le chiavi SSH, dovremmo controllare se Ansible è in grado di connettersi ai server.

Digita il seguente comando per controllare la connessione. Questo comando testerà la connessione a tutti i server dal file di inventario.

$ ansible all -m ping -u root

Questo comando utilizza il modulo ping di Ansible per eseguire un test di connettività su tutti i server. Dovresti ricevere un output simile al seguente.

server1 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
server2 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
server3 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

Se è la prima volta che utilizzi Ansible, ti verrà chiesto di confermare l’autenticità di tutti i server. Quando richiesto, digita yes e premi ENTER per confermare.

Eseguire alcuni comandi di base

Eseguiamo alcuni comandi di base sui server utilizzando Ansible. Per eseguire un comando sul server, viene utilizzato il seguente formato.

$ ansible all -a "comando" -u 

Controllare l’utilizzo del disco

Per prima cosa, controlliamo l’utilizzo del disco su tutti i nostri server.

$ ansible all -a "df -h" -u root
server1 | CHANGED | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
udev            3.9G     0  3.9G   0% /dev
tmpfs           798M  624K  798M   1% /run
/dev/vda1       155G  2.3G  153G   2% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/vda15      105M  3.6M  101M   4% /boot/efi
tmpfs           798M     0  798M   0% /run/user/0

server2 | CHANGED | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
udev            2.0G     0  2.0G   0% /dev
tmpfs           395M  608K  394M   1% /run
/dev/vda1        78G  2.2G   76G   3% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/vda15      105M  3.6M  101M   4% /boot/efi
tmpfs           395M     0  395M   0% /run/user/0

Targetizzare host e gruppi individuali

Fino ad ora, stavamo eseguendo comandi su tutti i server remoti contemporaneamente. Ma non è sempre così. Per eseguire un comando su un solo server, dovresti utilizzare il seguente formato.

$ ansible server1 -a "uptime" -u root
server1 | CHANGED | rc=0 >>
 21:38:26 up 11 min,  2 users,  load average: 0.00, 0.20, 0.19

Il comando sopra controlla l’uptime su server1 dal gruppo di inventario.

Puoi anche targetizzare più server utilizzando il seguente formato.

$ ansible server1:server2 -m ping -u root

Puoi anche targetizzare gruppi o sottogruppi direttamente dal file di inventario.

$ ansible groupname -m ping -u 

Aggiornare tutti i server

Per questo tutorial, stiamo assumendo che tutti i server remoti stiano eseguendo il sistema operativo Debian o Ubuntu.

Esegui il seguente comando per aggiornare il software su tutti i tuoi server.

$ ansible all -m apt -a "update_cache=yes upgrade=yes" -u root

Il parametro -m definisce il modulo che Ansible deve eseguire. -a si riferisce agli argomenti o ai comandi per il modulo associato. Qui, stiamo utilizzando il modulo apt di Ansible per aggiornare i server proprio come abbiamo utilizzato il modulo ping nel nostro ultimo esempio. update_cache aggiorna la cache APT sul server e upgrade=yes dice ad Ansible di eseguire il comando apt upgrade.

Per aggiornare i tuoi server CentOS, puoi utilizzare lo stesso comando sostituendo apt con yum e per i server Fedora, puoi sostituire apt con dnf.

Se stai utilizzando l’utente ansible come documentato sopra, devi modificare il comando ansible per eseguire con privilegi sudo elevati.

$ ansible server2 -m apt -a "update_cache=yes upgrade=yes" -K -b -u ansible

Qui, -K richiede la password per l’escalation dei privilegi. -b esegue l’operazione ansible con become che ti consente di essere un altro utente. Entrambe le variabili combinate consentono ad ansible di eseguire con privilegi sudo elevati. Dovrai utilizzare questo per tutti i comandi che richiedono privilegi sudo.

A volte, alcuni di questi comandi di aggiornamento potrebbero richiedere un riavvio, quindi esegui il seguente comando per riavviare tutti i tuoi server.

$ ansible all -a "reboot" -u root

Questi erano solo alcuni dei comandi di base che puoi eseguire utilizzando Ansible.

Conclusione

Questo conclude il nostro tutorial su come installare e configurare Ansible su un server basato su Ubuntu 20.04. Se hai domande, postale nei commenti qui sotto.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.