Ansible este un instrument de gestionare a configurației utilizat pe scară largă, scris în limbajul Python, care ajută la configurarea unei singure sau mai multor mașini în același timp. Ansible poate fi folosit pentru a efectua sarcinile de mai jos
Ansible este utilizat pe scară largă datorită simplității sale. Codul Ansible este scris în limbaj YAML, de asemenea, nu are nevoie de un agent care să fie instalat pe o mașină la distanță. Ansible utilizează portul 22 (SSH) pentru a se conecta la o mașină de la distanță și a face modificările necesare.
Care mașină, care se poate conecta la mașina la distanță pe portul 22, poate deveni un nod de control. Un nod de control este locul în care puteți instala Ansible, iar un nod gestionat devine gestionat de nodurile de control.
Să aruncăm o privire la instalarea Ansible pe nodul de control.
Instalați Ansible pe CentOS 7:
Pentru că Python este singura condiție prealabilă pentru a instala Ansible, haideți să instalăm Python executând comanda de mai jos.
$sudo yum install python3 -y
Pentru a instala Ansible pe CentOS 7, asigurați-vă mai întâi că este instalat depozitul EPEL CentOS 7. Executați comanda de mai jos pentru a instala depozitul epel.
$sudo yum install epel-release
Actualizați indexul pachetelor de sistem executând comanda update de mai jos.
$sudo yum update -y
După ce depozitul este instalat, instalați Ansible cu managerul de pachete yum. Executați comanda menționată mai jos pentru a instala Ansible.
$sudo yum install ansible -y
Verificați dacă Ansible este instalat corect și versiunea acestuia.
$ansible -v
Instalați Ansible pe CentOS 8:
Să ne uităm la pașii de instalare pentru CentOS 8. Să instalăm python pe CentOS 8.
$sudo dnf install python3
După ce python este instalat, să instalăm repo-ul EPEL prin executarea comenzii de mai jos.
$sudo dnf install epel-release -y
Actualizați indexul pachetelor de sistem prin executarea comenzii update de mai jos.
$sudo dnf update -y
Acum suntem gata să instalăm Ansible. Executați comanda de mai jos pentru a instala Ansible.
$sudo dnf install ansible -y
Verificați dacă Ansible este instalat corect și versiunea acestuia.
$ansible -v
Instalați Ansible pe Ubuntu:
Python este un pachet implicit în zilele noastre în majoritatea distribuțiilor Linux. Dacă nu aveți instalat python, executați comanda de mai jos pentru a instala pachetul python.
$sudo apt-get install python3
Pentru a instala Ansible în Ubuntu, să instalăm mai întâi depozitul prin executarea comenzii de mai jos.
$sudo apt-add-repository ppa:ansible/ansible
Actualizați indexul pachetelor de sistem prin executarea comenzii update de mai jos.
$sudo apt-get update -y
Acum, instalați Ansible.
$sudo apt-get install -y ansible
Verificați dacă Ansible este instalat corect și versiunea acestuia.
$ansible -v
Instalați Ansible cu Python PIP pe CentOS, Debian și Ubuntu:
Indiferent de sistemul de operare pe care îl utilizați, puteți instala Ansible cu programul de instalare a pachetelor python. Să executăm comanda de mai jos pentru a instala python3-pip.
Pentru CentOS 7 și mai jos:
$sudo yum install python3 python3-pip -y
Pentru CentOS 8:
$sudo dnf install python3 python3-pip -y
Pentru Ubuntu și Debian:
$sudo apt-get install python3 python3-pip
Dacă avem python și pip instalate, să executăm comanda de mai jos pe orice sistem de operare pentru a instala Ansible.
$sudo pip3 install ansible
Verificați dacă Ansible este instalat corect și versiunea acestuia.
$ansible -v
Configurarea gazdelor controlerului Ansible:
Trebuie să configurăm mai întâi fișierul „hosts” înainte de a putea începe să comunicăm cu celelalte noduri ale noastre. Acest fișier va avea toate IP-urile sau numele de gazdă ale nodurilor gestionate.
Nota: Nu este întotdeauna necesar să folosim un fișier hosts pentru a ne conecta la nodurile gestionate. Dar atunci, de fiecare dată, trebuie să folosim IP-ul sau numele de gazdă al serverului nodului gestionat în timp ce executăm fiecare comandă.
Crearea fișierului (dacă nu există deja) cu privilegii de root prin executarea comenzii de mai jos:
$sudo touch /etc/ansible/hosts
Înainte de a scrie în fișier, să aruncăm o privire și să înțelegem exemplul de fișier de gazde:
alias ansible_ssh_host=your_node_server_ip
Un fișier de gazde trebuie să urmeze sintaxa de mai sus. Să aruncăm o privire la fiecare parametru.
: Acest parametru va crea un grup. Toate adresele IP ale nodurilor gestionate sau numele de gazdă de sub parametrul nume_grup se vor încadra în același grup. De exemplu, dacă avem mai multe servere web în infrastructura noastră, putem adăuga aici toate adresele IP sau numele de gazdă ale nodului gestionat.
alias: Acest parametru este utilizat pentru a da serverului nodului gestionat un alias pentru a identifica serverul nodului gestionat. De exemplu, dacă avem mai multe servere web în infrastructura noastră, putem da host1, host2, host3 ca alias. Principalul avantaj al atribuirii unui alias este că, atunci când vom executa comanda Ansible pentru a modifica configurația unui singur server, putem utiliza un alias pentru a identifica și a efectua sarcina necesară pe server.
ansible_ssh_host=your_node_server_ip: Acest parametru va îndrepta aliasul către o adresă IP sau un nume de gazdă a nodului gestionat.
Noi vom folosi CentOS 8 ca nod controlat cu Ansible. După cum s-a menționat mai sus, Ansible utilizează portul 22 al gazdei la distanță pentru a se conecta.
Vom presupune că adresele IP ale serverului nodului nostru gestionat CentOS sunt 192.168.0.2, 192.168.0.3 și 192.168.0.4.
Pentru a permite nodului controler Ansible să comunice cu nodurile gestionate, trebuie să confirmăm că nodurile gestionate sunt accesibile pe portul 22, care este un port SSH. Executați comanda de mai jos pentru a confirma conectivitatea unul câte unul pe toate cele trei noduri gestionate de la controler.
$ssh [email protected]
$ssh [email protected]
$ssh [email protected]
Vă va fi solicitată parola utilizatorului root al tuturor nodurilor. Ansible funcționează foarte bine dacă aveți configurată autentificarea fără parolă între controlerul Ansible și nodurile gestionate. Cu diferiți parametri în comanda Ansible, poate funcționa și autentificarea cu parolă.
Acum am configurat conectivitatea ssh între controlerul Ansible și nodurile gestionate, haideți să configurăm fișierul hosts pentru a ne conecta la toate nodurile gestionate. După cum am menționat anterior, putem adăuga mai multe aliasuri de server de nod într-un singur grup. În acest caz, să adăugăm toate cele trei noduri și să atribuim un alias ca gazdă1, gazdă2 și, respectiv, gazdă3. Fișierul nostru hosts ar trebui să arate ca mai jos după adăugarea tuturor detaliilor nodurilor gestionate. Executați comanda de mai jos pentru a edita fișierul hosts pe care l-am creat anterior.
Deschideți fișierul cu privilegii de root executând comanda de mai jos:
$sudo vi /etc/ansible/hosts
Să adăugăm configurația menționată mai jos în fișierul hosts.
host1 ansible_ssh_host=192.168.0.2
host2 ansible_ssh_host=192.168.0.3
host3 ansible_ssh_host=192.168.0.4
Aici, am adăugat toate IP-urile și alias-urile nodurilor administrate într-un grup numit node_servers.
Să încercăm acum să ne conectăm la nodurile gestionate din controlerul Ansible.
$ansible -m ping node_servers
Comanda de mai sus utilizează un modul ping pentru a se conecta la grupul „node_servers” pe care l-am definit în fișierul hosts de mai sus.
Este posibil să întâmpinați erori din diferite motive.
- Ansible va încerca, în mod implicit, să se conecteze la nodul gestionat folosind numele de utilizator curent, dacă nu ați furnizat unul. Dacă acel utilizator nu există pe serverul nodului, veți primi eroarea de mai jos.
- Dacă portul ssh 22 nu este deschis pentru conectare pe nodurile gestionate. (După cum s-a menționat anterior, Ansible se conectează pe portul ssh)
- Dacă IP-ul din fișierul hosts nu este corect.
Dacă oricare dintre condițiile de mai sus eșuează, veți primi eroarea de mai jos.
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
}
Să-i spunem în mod specific lui Ansible că trebuie să se conecteze la nodurile gestionate din grupul „node_servers” cu utilizatorul james. Creați directorul group_vars, așa cum se menționează mai jos.
$sudo mkdir /etc/ansible/group_vars
Filele din acest director sunt folosite în mod specific pentru a configura variabilele pe care le putem folosi în playbook-urile noastre Ansible.
Să creăm un fișier de variabile pentru configurația noastră executând comanda de mai jos:
$sudo vim /etc/ansible/group_vars/node_servers.yml
Adaugați codul de mai jos în fișier:
---
ansible_ssh_user: james
Filmul YML începe întotdeauna cu „—” în prima linie. Să salvăm și să închidem acest fișier atunci când ați terminat. Acum Ansible va utiliza întotdeauna utilizatorul james pentru grupul node_servers, indiferent de utilizatorul curent pe care îl utilizați pentru a executa o comandă.
Verificați conexiunea nodului administrat:
Acum că avem gazdele noastre configurate și suficiente detalii de configurare pentru a ne permite să ne conectăm cu succes la nodurile noastre administrate, putem încerca aceeași comandă pe care am rulat-o înainte.
$ansible -m ping servers
Ansible va returna o ieșire ca aceasta:
host1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
host2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
host3 | SUCCESS => {„changed”: false, „ping”: „pong”}
Acesta este un test de bază pentru a se asigura că Ansible are o conexiune cu nodurile sale gestionate.
Concluzie:
Nu este necesar să folosiți sistemul de operare CentOS pentru nodurile gestionate. Puteți folosi aceeași configurație de testare pe care am folosit-o mai sus pentru CentOS, RedHat, Ubuntu și orice alte distribuții Linux.
.