Come installare e configurare Ansible su Debian 11
introduzione
I sistemi di gestione della configurazione sono progettati per semplificare il processo di controllo di un gran numero di server, per amministratori e team operativi. Consentono di controllare molti sistemi diversi in modo automatizzato da una postazione centrale.
Sebbene siano disponibili molti popolari strumenti di gestione della configurazione per i sistemi Linux, come Ansible è un'ottima alternativa a queste opzioni perché offre un'architettura che non richiede l'installazione di software speciale sui nodi, utilizzando SSH per eseguire le attività di automazione e YAML file per definire i dettagli di provisioning.
In questa guida, discuteremo come installare Ansible su un server Debian 11 e analizzeremo alcuni fondamenti su come utilizzare questo software. Per una panoramica di più alto livello su Ansible come strumento di gestione della configurazione, fare riferimento a Introduzione alla gestione della configurazione con Ansible.
Prerequisiti
Per seguire questo tutorial, avrai bisogno di:
- Un nodo di controllo Ansible: il nodo di controllo Ansible è la macchina che useremo per connetterci e controllare gli host Ansible tramite SSH. Il tuo nodo di controllo Ansible può essere la tua macchina locale o un server dedicato all'esecuzione di Ansible, anche se questa guida presuppone che il tuo nodo di controllo sia un sistema Debian 11. Assicurati che il nodo di controllo abbia:
- Un utente non root con privilegi sudo. Per configurarlo, puoi seguire i passaggi 2 e 3 della nostra Guida alla configurazione iniziale del server per Debian 11. Tuttavia, tieni presente che se stai utilizzando un server remoto come nodo Ansible Control, dovresti seguire ogni passaggio di questa guida. In questo modo configurerai un firewall sul server con
ufw
e abiliterai l'accesso esterno al tuo profilo utente non root, entrambi i quali aiuteranno a mantenere sicuro il server remoto. - Una coppia di chiavi SSH associata a questo utente. Per configurarlo, puoi seguire il passaggio 1 della nostra guida su Come configurare le chiavi SSH su Debian 11.
Uno o più host Ansible: un host Ansible è qualsiasi macchina che il tuo nodo di controllo Ansible è configurato per automatizzare. Questa guida presuppone che i tuoi host Ansible siano server Debian 11 remoti. Assicurati che ogni host Ansible abbia:
- La chiave pubblica SSH del nodo di controllo Ansible aggiunta alle
authorized_keys
di un utente di sistema. Questo utente può essere root o un utente normale con privilegi sudo. Per configurarlo, puoi seguire il passaggio 2 di Come configurare le chiavi SSH su Debian 11.
Passaggio 1: installazione di Ansible
Per iniziare a utilizzare Ansible come mezzo per gestire l'infrastruttura del server, è necessario installare il software Ansible sulla macchina che fungerà da nodo di controllo Ansible.
Dal tuo nodo di controllo, esegui il seguente comando per includere il PPA (archivio dei pacchetti personali) del progetto ufficiale nell'elenco delle fonti del tuo sistema:
- sudo apt-add-repository ppa:ansible/ansible
Premi
INVIO
quando ti viene chiesto di accettare l'aggiunta PPA.Successivamente, aggiorna l'indice dei pacchetti del tuo sistema in modo che sia a conoscenza dei pacchetti disponibili nel PPA appena incluso:
- sudo apt update
Dopo questo aggiornamento, puoi installare il software Ansible con:
- sudo apt install ansible
Il tuo nodo di controllo Ansible ora dispone di tutto il software necessario per amministrare i tuoi host. Successivamente, esamineremo come aggiungere i tuoi host al file di inventario del nodo di controllo in modo che possa controllarli.
Passaggio 2: impostazione del file di inventario
Il file di inventario contiene informazioni sugli host che gestirai con Ansible. È possibile includere ovunque da uno a diverse centinaia di server nel file di inventario e gli host possono essere organizzati in gruppi e sottogruppi. Il file di inventario viene spesso utilizzato anche per impostare variabili che saranno valide solo per host o gruppi specifici, in modo da poter essere utilizzate all'interno di playbook e modelli. Alcune variabili possono anche influenzare il modo in cui viene eseguito un playbook, come la variabile
ansible_python_interpreter
che vedremo tra poco.Per modificare i contenuti del tuo inventario Ansible predefinito, apri il file
/etc/ansible/hosts
utilizzando il tuo editor di testo preferito, sul tuo nodo di controllo Ansible:- sudo nano /etc/ansible/hosts
Nota: sebbene Ansible in genere crei un file di inventario predefinito in
etc/ansible/hosts
, sei libero di creare file di inventario in qualsiasi posizione più adatta alle tue esigenze. In questo caso, dovrai fornire il percorso del tuo file di inventario personalizzato con il parametro-i
quando esegui i comandi e i playbook di Ansible. L'utilizzo di file di inventario per progetto è una buona pratica per ridurre al minimo il rischio di eseguire un playbook nel gruppo di server sbagliato.Il file di inventario predefinito fornito dall'installazione di Ansible contiene una serie di esempi che puoi utilizzare come riferimento per configurare il tuo inventario. L'esempio seguente definisce un gruppo denominato
[servers]
contenente tre diversi server, ciascuno identificato da un alias personalizzato: server1, server2 e server3. Assicurati di sostituire gli IP evidenziati con gli indirizzi IP dei tuoi host Ansible.[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
Il sottogruppo
all:vars
imposta il parametro hostansible_python_interpreter
che sarà valido per tutti gli host inclusi in questo inventario. Questo parametro assicura che il server remoto utilizzi l'eseguibile Python 3/usr/bin/python3
invece di/usr/bin/python
(Python 2.7), che non è presente su versioni recenti di Debian.Al termine, salva e chiudi il file premendo
CTRL+X
quindiY
eINVIO
per confermare le modifiche.Ogni volta che vuoi controllare il tuo inventario, puoi eseguire:
- ansible-inventory --list -y
Vedrai un output simile a questo, ma contenente la tua infrastruttura server come definita nel tuo file di inventario:
Outputall: 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: {}Ora che hai configurato il tuo file di inventario, hai tutto ciò che ti serve per testare la connessione ai tuoi host Ansible.
Passaggio 3: verifica della connessione
Dopo aver configurato il file di inventario per includere i tuoi server, è il momento di verificare se Ansible è in grado di connettersi a questi server ed eseguire comandi tramite SSH.
Per questa guida, utilizzeremo l'account root di Debian perché in genere è l'unico account disponibile per impostazione predefinita sui server appena creati. Se i tuoi host Ansible hanno già creato un normale utente sudo, sei incoraggiato a utilizzare quell'account.
Puoi usare l'argomento
-u
per specificare l'utente del sistema remoto. Se non fornito, Ansible proverà a connettersi come utente di sistema corrente sul nodo di controllo.Dal computer locale o dal nodo di controllo Ansible, esegui:
- ansible all -m ping -u root
Questo comando utilizzerà il modulo
ping
integrato di Ansible per eseguire un test di connettività su tutti i nodi dall'inventario predefinito, connettendosi come root. Il moduloping
verificherà:- se gli host sono accessibili;
- se disponi di credenziali SSH valide;
- se gli host sono in grado di eseguire moduli Ansible utilizzando Python.
Dovresti ottenere un output simile a questo:
Outputserver1 | SUCCESS => { "changed": false, "ping": "pong" } server2 | SUCCESS => { "changed": false, "ping": "pong" } server3 | SUCCESS => { "changed": false, "ping": "pong" }Se è la prima volta che ti connetti a questi server tramite SSH, ti verrà chiesto di confermare l'autenticità degli host a cui ti stai connettendo tramite Ansible. Quando richiesto, digita
yes
e poi premiINVIO
per confermare.Quando ricevi una risposta
pong
da un host, significa che sei pronto per eseguire comandi e playbook Ansible su quel server.Nota: se non riesci a ottenere una risposta positiva dai tuoi server, consulta la nostra guida Ansible Cheat Sheet per ulteriori informazioni su come eseguire i comandi Ansible con diverse opzioni di connessione.
Passaggio 4: esecuzione di comandi ad hoc (facoltativo)
Dopo aver confermato che il tuo nodo di controllo Ansible è in grado di comunicare con i tuoi host, puoi iniziare a eseguire comandi e playbook ad-hoc sui tuoi server.
Qualsiasi comando che normalmente eseguiresti su un server remoto tramite SSH può essere eseguito con Ansible sui server specificati nel tuo file di inventario. Ad esempio, puoi controllare l'utilizzo del disco su tutti i server con:
- ansible all -a "df -h" -u root
Outputserver1 | 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 ...Il comando evidenziato
df -h
può essere sostituito da qualsiasi comando desideri.Puoi anche eseguire moduli Ansible tramite comandi ad-hoc, in modo simile a quanto abbiamo fatto prima con il modulo
ping
per testare la connessione. Ad esempio, ecco come possiamo usare il moduloapt
per installare l'ultima versione divim
su tutti i server nel tuo inventario:- ansible all -m apt -a "name=vim state=latest" -u root
Puoi anche scegliere come target singoli host, nonché gruppi e sottogruppi, quando esegui i comandi Ansible. Ad esempio, questo è il modo in cui dovresti controllare il
uptime
di ogni host nel grupposervers
:- ansible servers -a "uptime" -u root
Possiamo specificare più host separandoli con i due punti:
- ansible server1:server2 -m ping -u root
Per ulteriori informazioni su come utilizzare Ansible, incluso come eseguire playbook per automatizzare la configurazione del server, puoi consultare la nostra Guida di riferimento Ansible.
Conclusione
In questa guida, hai installato Ansible e impostato un file di inventario per eseguire comandi ad hoc da un nodo di controllo Ansible.
Dopo aver confermato di essere in grado di connettere e controllare la tua infrastruttura da una macchina controller Ansible centrale, puoi eseguire qualsiasi comando o playbook che desideri su quegli host.
Per ulteriori informazioni su come utilizzare Ansible, consulta la nostra Guida ai cheat sheet di Ansible.
- Un utente non root con privilegi sudo. Per configurarlo, puoi seguire i passaggi 2 e 3 della nostra Guida alla configurazione iniziale del server per Debian 11. Tuttavia, tieni presente che se stai utilizzando un server remoto come nodo Ansible Control, dovresti seguire ogni passaggio di questa guida. In questo modo configurerai un firewall sul server con