GNU/Linux >> Linux Esercitazione >  >> Linux

Come installare e testare Ansible su Linux

Ansible è uno strumento di gestione della configurazione ampiamente utilizzato scritto in linguaggio Python che aiuta a configurare una o più macchine contemporaneamente. Ansible può essere utilizzato per eseguire le attività seguenti

  • Configurazione da zero di uno o più nodi
  • Distribuzioni
  • Modifiche alla configurazione
  • Patch
  • Gestione del servizio
  • e molti altri

Ansible è ampiamente utilizzato per la sua semplicità. Anche il codice Ansible è scritto in linguaggio YAML, non ha bisogno di un agente per essere installato su una macchina remota. Ansible utilizza la porta 22 (SSH) per connettersi a una macchina remota e apportare le modifiche necessarie.

Qualsiasi macchina, che può connettersi alla macchina remota su 22 porte, può diventare un nodo di controllo. Un nodo di controllo è il punto in cui è possibile installare Ansible e un nodo gestito viene gestito tramite i nodi di controllo.

Diamo un'occhiata all'installazione di Ansible sul nodo controller.

Installa Ansible su CentOS 7: 

Poiché Python è l'unico prerequisito per installare Ansible, installiamo Python eseguendo il comando seguente.

$sudo yum install python3 -y

Per installare Ansible su CentOS 7, assicurati innanzitutto che il repository EPEL di CentOS 7 sia installato. Esegui il comando seguente per installare il repository epel.

$sudo yum install epel-release

Aggiorna l'indice del pacchetto di sistema eseguendo il comando di aggiornamento seguente.

$sudo yum update -y

Una volta installato il repository, installa Ansible con yum package manager. Esegui il comando indicato di seguito per installare Ansible.

$sudo yum install ansible -y

Verifica se Ansible è installato correttamente e la sua versione.

$ansible -v

Installa Ansible su CentOS 8:

Diamo un'occhiata ai passaggi di installazione per CentOS 8. Installiamo python su CentOS 8.

$sudo dnf install python3

Una volta installato Python, installiamo EPEL repo eseguendo il comando seguente.

$sudo dnf install epel-release -y

Aggiorna l'indice del pacchetto di sistema eseguendo il comando di aggiornamento seguente.

$sudo dnf update -y

Ora siamo pronti per installare Ansible. Esegui il comando seguente per installare Ansible.

$sudo dnf install ansible -y

Verifica se Ansible è installato correttamente e la sua versione.

$ansible -v

Installa Ansible su Ubuntu:

Python è un pacchetto predefinito al giorno d'oggi nella maggior parte delle distribuzioni Linux. Se non hai installato python, esegui il comando seguente per installare il pacchetto python.

$sudo apt-get install python3

Per installare Ansible in Ubuntu, installiamo prima il repository eseguendo il comando seguente.

$sudo apt-add-repository ppa:ansible/ansible

Aggiorna l'indice del pacchetto di sistema eseguendo il comando di aggiornamento seguente.

$sudo apt-get update -y

Ora installa Ansible.

$sudo apt-get install -y ansible

Verifica se Ansible è installato correttamente e la sua versione.

$ansible -v

Installa Ansible con Python PIP su CentOS, Debian e Ubuntu:

Indipendentemente dal sistema operativo in uso, puoi installare Ansible con il programma di installazione del pacchetto Python. Eseguiamo il comando seguente per installare python3-pip.

Per CentOS 7 e versioni precedenti:

$sudo yum install python3 python3-pip -y

Per CentOS 8:

$sudo dnf install python3 python3-pip -y

Per Ubuntu e Debian:

$sudo apt-get install python3 python3-pip

Poiché abbiamo installato python e pip, eseguiamo il comando seguente su qualsiasi sistema operativo per installare Ansible.

$sudo pip3 install ansible

Verifica se Ansible è installato correttamente e la sua versione.

$ansible -v

Configurazione degli host controller Ansible:

Dobbiamo prima impostare il file "hosts" prima di poter iniziare a comunicare con gli altri nostri nodi. Questo file avrà tutti gli IP o i nomi host dei nodi gestiti.

Nota :Non è sempre necessario utilizzare un file hosts per connettersi ai nodi gestiti. Ma poi, ogni volta, dobbiamo utilizzare l'IP del server del nodo gestito o il nome host durante l'esecuzione di ogni comando.

Crea il file (se non è già presente) con i privilegi di root eseguendo il comando seguente:

$sudo touch /etc/ansible/hosts

Prima di scrivere il file, diamo un'occhiata e comprendiamo il file host di esempio:

[group_name]
alias ansible_ssh_host=your_node_server_ip

Un file hosts dovrebbe seguire la sintassi sopra. Diamo un'occhiata a ciascun parametro.

[nome_gruppo] :Questo parametro creerà un gruppo. Tutti gli indirizzi IP del nodo gestito o i nomi host nel parametro nome_gruppo rientreranno nello stesso gruppo. Ad esempio, se disponiamo di più server Web nella nostra infrastruttura, possiamo aggiungere qui tutti gli indirizzi IP o i nomi host del nodo gestito.

alias :questo parametro viene utilizzato per assegnare al server del nodo gestito un alias per identificare il server del nodo gestito. Ad esempio, se disponiamo di più server Web nella nostra infrastruttura, possiamo fornire host1, host2, host3 come alias. Il principale vantaggio di fornire un alias è quando eseguiremo il comando Ansible per modificare la configurazione di un singolo server, possiamo utilizzare un alias per identificare ed eseguire l'attività richiesta sul server.

ansible_ssh_host=your_node_server_ip :questo parametro indirizzerà l'alias a un indirizzo IP o a un nome host di un nodo gestito.

Utilizzeremo CentOS 8 come nodo controllato con Ansible. Come accennato in precedenza, Ansible utilizza 22 porte dell'host remoto per la connessione.

Assumiamo che gli indirizzi IP del nostro server del nodo gestito CentOS siano 192.168.0.2, 192.168.0.3 e 192.168.0.4.

Per consentire al nodo del controller Ansible di comunicare con i nodi gestiti, è necessario confermare che i nodi gestiti siano accessibili sulla porta 22 che è una porta SSH. Eseguire il comando seguente per confermare la connettività uno per uno su tutti e tre i nodi gestiti dal controller.

$ssh [email protected]192.168.0.2
$ssh [email protected]192.168.0.3
$ssh [email protected]192.168.0.4

Ti verrà richiesta la password dell'utente root di tutti i nodi. Ansible funziona molto bene se hai configurato l'autenticazione senza password tra il controller Ansible e i nodi gestiti. Con parametri diversi nel comando Ansible, anche l'autenticazione della password può funzionare.

Poiché abbiamo configurato la connettività ssh tra il controller Ansible e i nodi gestiti, configuriamo il file hosts per la connessione a tutti i nodi gestiti. Come accennato in precedenza, possiamo aggiungere più alias di server del nodo in un singolo gruppo. In questo caso, aggiungiamo tutti e tre i nodi e assegniamo un alias rispettivamente come host1, host2 e host3. Il nostro file hosts dovrebbe apparire come di seguito dopo aver aggiunto tutti i dettagli del nodo gestito. Esegui il comando seguente per modificare il file hosts che abbiamo creato in precedenza.

Apri il file con i privilegi di root eseguendo il comando seguente:

$sudo vi /etc/ansible/hosts

Aggiungiamo la configurazione di seguito menzionata nel file hosts.

[node_servers]
host1 ansible_ssh_host=192.168.0.2
host2 ansible_ssh_host=192.168.0.3
host3 ansible_ssh_host=192.168.0.4

Qui abbiamo aggiunto tutti gli IP e gli alias dei nodi gestiti in un gruppo chiamato node_servers .

Proviamo ora a connetterci ai nodi gestiti dal controller Ansible.

$ansible -m ping node_servers

Il comando precedente utilizza un modulo ping per connettersi al gruppo "node_servers" che abbiamo definito nel file hosts sopra.

Potresti incontrare errori per diversi motivi.

  1. Ansible, per impostazione predefinita, proverà a connettersi al nodo gestito utilizzando il tuo nome utente attuale se non ne hai fornito uno. Se quell'utente non esiste sul server del nodo, riceverai il seguente messaggio di errore.
  2. Se la porta ssh 22 non è aperta per la connessione sui nodi gestiti. (Come accennato in precedenza, Ansible si connette sulla porta ssh)
  3. Se l'IP nel file hosts non è corretto.

Se una qualsiasi delle condizioni di cui sopra non riesce, si verificherà l'errore seguente.

host1 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh.",
    "unreachable": true
}
host2 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh.",
    "unreachable": true
}
host3 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh.",
    "unreachable": true
}

Diciamo in particolare ad Ansible che dovrebbe connettersi ai nodi gestiti nel gruppo "node_servers" con l'utente james. Crea la directory group_vars come indicato di seguito.

$sudo mkdir /etc/ansible/group_vars

I file in questa directory vengono utilizzati specificamente per configurare le variabili che possiamo utilizzare nei nostri playbook Ansible.

Creiamo un file variabile per la nostra configurazione eseguendo il comando seguente:

$sudo vim /etc/ansible/group_vars/node_servers.yml


Aggiungi sotto il codice al file:

---
ansible_ssh_user: james

Il file YML inizia sempre con "---" nella prima riga. Salviamo e chiudiamo questo file quando hai finito. Ora Ansible utilizzerà sempre i james utente per il gruppo node_servers, indipendentemente dall'utente corrente che stai utilizzando per eseguire un comando.

Verifica la connessione del nodo gestito:

Ora che abbiamo configurato i nostri host e dettagli di configurazione sufficienti per consentirci di connetterci correttamente ai nostri nodi gestiti, possiamo provare lo stesso comando che eseguivamo prima.

$ansible -m ping servers 

Ansible restituirà un output in questo modo:

host1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
host2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

host3 | SUCCESS => {
    "changed":false,
    "ping":"pong"
}

Questo è un test di base per assicurarsi che Ansible abbia una connessione ai suoi nodi gestiti.

Conclusione: 

Non è necessario utilizzare il sistema operativo CentOS per i nodi gestiti. Puoi utilizzare la stessa configurazione di test che abbiamo utilizzato sopra per CentOS, RedHat, Ubuntu e qualsiasi altra distribuzione Linux.


Linux
  1. Come installare e utilizzare Flatpak in Linux

  2. Come installare e utilizzare Traceroute in Linux

  3. Come installare e configurare Ansible su Rocky Linux/CentOS 8

  4. Come installare Ansible su CentOS 8 Linux

  5. Come installare Ansible su Oracle Linux 8

Installa e configura Ansible in Linux

Come installare e utilizzare phpMyAdmin in Linux

Come installare e utilizzare il comando fd in Linux

Come installare e utilizzare Nu Shell su Linux

Come installare Ansible su Ubuntu e altre distribuzioni Linux

Come installare Ansible su Linux Mint 20