![Slack a dezvăluit actualizarea de reproiectare simplificată, dar eficientă](/f/1fed725088e3ed129840b52913c98b64.png?width=100&height=100)
În articolul anterior din această serie Ansible, am explicat că Ansible este un instrument fără agent care vă permite să gestionați rapid și eficient mai multe mașini (cunoscute și sub numele de noduri - și efectuează implementări și la acestea) dintr-o singură sistem.
După instalarea software-ului în aparatul de control, creați fișierul chei pentru autentificare fără parolă și copiindu-le în noduri, este timpul să învățăm cum să optimizăm procesul de gestionare a acestor sisteme la distanță folosind Ansible.
De-a lungul acestui articol, precum și al următorului, vom folosi următorul mediu de testare. Toate gazdele sunt CentOS 7 cutii:
Mașină de control (unde este instalat Ansible): 192.168.0.19 Nodul 1: 192.168.0.29 Nodul 2: 192.168.0.30
În plus, vă rugăm să rețineți că ambele noduri au fost adăugate în secțiunea de servere web a localului /etc/ansible/hosts fişier:
Acestea fiind spuse, să începem cu subiectul la îndemână.
După cum este descris în ghidul anterior, puteți utiliza fișierul ansible utilitar pentru a rula comenzi în noduri la distanță după cum urmează:
# ansible -a "/ bin / hostnamectl --static" servere web.
În exemplul de mai sus, am fugit hostnamectl --static
pe nod1 și nod2. Nu durează mult până când cineva își dă seama că această metodă de executare a sarcinilor pe computerele la distanță funcționează bine pentru comenzi scurte, dar se poate repede devin împovărătoare sau dezordonate pentru sarcini mai complexe care necesită parametri de configurare bine structurați sau interacțiuni cu alții Servicii
De exemplu, configurarea și configurarea WordPress pe mai multe gazde - pe care le vom acoperi în următorul articol din această serie). Aici e locul Cărți de joc intră în scenă.
Pur și simplu pune, Cărți de joc sunt fișiere text simple scrise în YAML format și conține o listă cu elemente cu una sau mai multe perechi cheie / valoare (cunoscută și ca „hash”Sau un„dicţionar”).
În fiecare Playbook veți găsi unul sau mai multe grupuri de gazde (fiecare dintre aceste grupuri poartă și denumirea de a Joaca) unde trebuie îndeplinite sarcinile dorite.
Un exemplu din documentele oficiale ne va ajuta să ilustrăm:
1.gazde: aceasta este o listă de mașini (conform /etc/ansible/hosts) unde vor fi îndeplinite următoarele sarcini.
2.utilizator_distanță: cont la distanță care va fi utilizat pentru a efectua sarcinile.
3.vars: variabile utilizate pentru a modifica comportamentul sistemului (sistemelor) la distanță.
4. sarcinile sunt executate în ordine, una câte una, împotriva tuturor mașinilor care se potrivesc cu gazdele. În cadrul unei piese, toate gazdele vor primi aceleași directive de sarcină.
Dacă trebuie să executați un set diferit de sarcini asociate pentru o anumită gazdă, creați o altă piesă în curent Playbook (cu alte cuvinte, scopul unei piese este să mapeze o selecție specifică de gazde la sarcini bine definite).
În acest caz, începeți o nouă piesă prin adăugarea directivei hosts în partea de jos și începând din nou:
- hosts: webservers remote_user: root vars: variable1: value1 variable2: value2 remote_user: root tasks: - nume: descriere pentru task1 task1: parameter1 = value_for_parameter1 parameter2 = value_for_parameter2 - nume: descriere pentru task1 task2: parameter1 = value_for_parameter1 parameter2 = value_for_parameter2 handlers: - nume: descriere pentru serviciul handler 1: name = name_of_service state = service_status. - hosts: dbservers remote_user: root vars: variable1: value1 variable2: value2. …
5. handlerele sunt acțiuni care sunt declanșate la sfârșitul secțiunii de sarcini din fiecare redare și sunt utilizate mai ales pentru a reporni serviciile sau a declanșa reporniri în sistemele la distanță.
# mkdir / etc / ansible / playbooks.
Și un fișier numit apache.yml înăuntru de acolo cu următorul conținut:
- hosts: webservers vars: http_port: 80 max_clients: 200 remote_user: taskuri root: - nume: asigurați-vă că apache este la cea mai recentă versiune yum: pkg = httpd state = latest - nume: înlocuiți implicit copie fișier index.html: src = / static_files / index.html dest = / var / www / html / mode = 0644 notificare: - reporniți apache - nume: asigurați-vă că apache rulează (și activați-l la boot) serviciu: nume = httpd stare = pornit activat = da handlers: - nume: reporniți serviciul apache: nume = httpd state = repornit.
În al doilea rând, creați un director / static_files:
# mkdir / static_files.
unde veți stoca obiceiul index.html fişier:
Apache a fost pornit în această gazdă prin Ansible
Adus de către Tecmint.com
Acestea fiind spuse, acum este timpul să folosiți acest playbook pentru a îndeplini sarcinile menționate anterior. Veți observa că Ansible va parcurge fiecare sarcină de către gazdă, unul câte unul, și va raporta starea acestor sarcini:
# ansible-playbook /etc/ansible/playbooks/apache.yml.
Acum să vedem ce se întâmplă când deschidem un browser și îl îndreptăm spre acesta 192.168.0.29 și 192.168.0.30:
Să mergem cu un pas mai departe și să oprim manual și să dezactivăm Apache activat nod1 și nod2:
# systemctl stop httpd. # systemctl dezactivează httpd. # systemctl este-activ httpd. # systemctl este activat httpd.
Apoi fugi din nou,
# ansible-playbook /etc/ansible/playbooks/apache.yml.
De data aceasta, sarcina raportează că serverul web Apache a fost pornit și activat pe fiecare gazdă:
Vă rugăm să considerați exemplul de mai sus ca o privire asupra puterii Ansible. Deși acestea sunt sarcini relativ ușoare atunci când sunt efectuate pe un număr mic de servere, poate deveni foarte plictisitor și consumă mult timp dacă trebuie să faceți același lucru în mai multe (poate sute) de mașini.
În acest articol am descris cum se execută comenzi și se execută sarcini complexe pe mai multe gazde la distanță simultan folosind Ansible. documentație oficială si Depozit GitHub oferiți o mulțime de exemple și ghiduri despre cum să utilizați Ansible pentru a realiza aproape orice sarcină imaginabilă.
Pe măsură ce începeți să învățați cum să automatizați sarcini pe gazde Linux la distanță folosind Ansible, am dori să vă auzim gândurile. Întrebările, comentariile și sugestiile sunt, de asemenea, întotdeauna binevenite, așa că nu ezitați să ne contactați folosind formularul de mai jos în orice moment.