![27 de comenzi „DNF” (Fork of Yum) pentru gestionarea pachetelor RPM în Linux](/f/90c3c9ee0f5072dd7004f93eb098c2da.png?width=100&height=100)
În cele două articole anterioare ale acestei Ansible Series, am explicat Componentele de bază ale Ansible și Configurarea nodului de control Ansible. În această parte 3, vom arăta cum puteți configura nodurile gestionate Ansible pentru a rula comenzi ad-hoc pe gazde la distanță.
Ca o recapitulare a ultimului nostru subiect, gestionarea gazdelor la distanță cu Ansible necesită configurarea Autentificare SSH fără parolă între nodul de control Ansible și gazdele gestionate. Aceasta implică generarea unei perechi de chei (pereche de chei SSH publică și privată) pe nodul Ansible Control și copierea cheii publice la toate gazdele la distanță. Acesta va fi un pas crucial în viitor și vă va face munca mult mai ușoară.
Când sunteți conectat ca utilizator obișnuit, este posibil să vi se solicite să efectuați anumite sarcini pe nodurile gestionate care necesită privilegii ridicate sau privilegii de root. Aceste sarcini includ gestionarea pachetelor, adăugarea de noi utilizatori și grupuri și modificarea configurațiilor sistemului pentru a menționa doar câteva. Pentru a realiza acest lucru, trebuie să invocați anumite directive din playbook pentru a rula sarcinile ca utilizator privilegiat pe gazdele la distanță.
Ansible vă permite 'deveni' un alt utilizator de pe nodul gestionat diferit de cel conectat în prezent. devenit: da
directiva vă ridică privilegiile și vă permite să efectuați activități care necesită privilegii root, cum ar fi instalarea și actualizarea pachetelor și repornirea sistemului.
Luați în considerare o carte de joc httpd.yml
care instalează și pornește serverul web Apache după cum se arată:
- nume: instalați și porniți gazdele serverului web Apache: sarcini ale serverelor web: - nume: instalați httpd yum: nume = stat httpd = ultim devenit: da - nume: verificați serviciul de stare httpd: nume = stare httpd = început.
devenit: da
directiva vă permite să executați comenzi ca utilizator root pe gazda de la distanță.
O altă directivă pe care o puteți utiliza pentru a deveni un alt utilizator este devenit_utilizator. Acest lucru vă permite să treceți la un utilizator sudo pe gazda de la distanță la conectare și nu la utilizatorul în care vă conectați.
De exemplu, pentru a rula o comandă ca tecmint utilizatorul de pe telecomandă utilizează directiva așa cum se arată.
- nume: Rulați o comandă ca comandă de utilizator apache: o comandă devine: da devenit_utilizator: tecmint
Această directivă va înlocui metoda implicită setată în ansible.cfg fișier care este de obicei setat la sudo.
Acestea sunt utilizate la nivel de joc sau de activitate, de exemplu atunci când trebuie să treceți la un utilizator când shell-ul este setat la nologin.
De exemplu,
- nume: Rulați o comandă așa cum nimeni nu comandă: o comandă devine: adevărat devine_metodă: su devine_utilizator: nimeni devine_bande: „-s / bin / sh”
Să aruncăm o privire la unele dintre opțiunile din linia de comandă pe care le puteți utiliza pentru a vă ridica privilegiile atunci când executați comenzi:
--sarcă-devine-trecere
, -K
- Aceasta vă solicită parola utilizatorului sudo de pe sistemul de la distanță pe care încercați să îl conectați.$ ansible-playbook myplaybook.yml --ask-devi-trece.
--deveni
, -b
- Acest lucru vă permite să rulați sarcina ca utilizator root fără a solicita o parolă.$ ansible-playbook myplaybook.yml --deveniți
--deveniți-utilizator = DEVENIȚI_USER
- Vă permite să rulați sarcini ca un alt utilizator.$ ansible-playbook myplaybook.yml --become-user = tecmint.
Uneori, poate doriți să efectuați activități rapide și simple pe gazde sau servere la distanță în Ansible fără a fi neapărat nevoie să creați un playbook. În acest caz, ar trebui să rulați un ad-hoc comanda.
Un ansible comanda ad-hoc este o comandă pe o singură linie care vă ajută să executați sarcini simple într-un mod simplu, dar eficient, fără a fi nevoie să creați cărți de redare. Astfel de sarcini includ copierea fișierelor între gazde, repornirea serverelor, adăugarea și eliminarea utilizatorilor și instalarea unui singur pachet.
În acest tutorial, explorăm diverse aplicații ale comenzilor Ansible Ad-Hoc. Vom folosi dosar de inventar mai jos pentru o demonstrație.
[servere web] 173.82.115.165 [database_servers] 173.82.202.239.
Cea mai simplă utilizare a comenzilor Ansible-Adhoc este ping-ul unei gazde sau unui grup de gazde.
# ansible -m ping tot.
În comanda de mai sus, -m
parametrul este opțiunea modulului. Ping este comanda adhoc și al doilea parametru reprezintă toate gazdele din fișierul de inventar. Ieșirea comenzii este prezentată mai jos:
Pentru a face ping, un anumit grup de gazde, înlocuiți 'toate' parametru cu numele grupului. În exemplul de mai jos, testăm conectivitatea cu gazdele din grupul de servere web.
# ansible -m ping servere web.
În plus, puteți utiliza fișierul -A
atribut pentru a specifica comenzi Linux regulate între ghilimele duble. De exemplu, pentru a verifica disponibilitatea sistemului de la distanță, rulați:
# ansible -a "uptime" toate.
Pentru a verifica utilizarea discului gazdelor la distanță rulate.
# ansible -a "df -Th" toate.
Există sute și sute de module pe care le puteți utiliza cu comanda Adhoc. Pentru a vizualiza întreaga listă de module cu descrierile lor, executați comanda de mai jos.
# ansible-doc -l.
Pentru a vizualiza informații detaliate despre un anumit modul, rulați comanda.
# ansible-doc nume_modul.
De exemplu, pentru a căuta mai multe detalii despre yum module alerga:
# ansible-doc yum.
Comenzile adhoc Ansible pot fi utilizate pentru instalarea și eliminarea pachetelor folosind da și apt manageri de pachete.
Pentru a instala serverul web Apache pe CentOS 7 gazdă din grupul de servere web din fișierul de inventar executați comanda:
# ansible webservers -m yum -a "name = httpd state = present"
Pentru a verifica instalarea serverului web Apache, conectați-vă la clientul de la distanță și rulați.
# rpm -qa | grep httpd.
Pentru a dezinstala Apache, pur și simplu schimbați starea din prezent la absent.
# ansible webservers -m yum -a "name = httpd state = absent"
Din nou, pentru a confirma eliminarea executării httpd.
# rpm -qa | grep httpd.
După cum s-a observat, pachetele de server web Apache au fost eliminate.
La crearea utilizatorilor, „utilizator„Modulul este util. Pentru a crea un utilizator nou James cu parola palarie rosie pe sistemul client database_server, lansați comanda.
# ansible database_server -m user -a "name = james password = redhat"
Pentru a confirma crearea noului utilizator, rulați comanda:
# ansible database_servers -a "id james"
Pentru a elimina utilizatorul, executați comanda:
# ansible database_servers -m user -a "name = james state = absent"
Dacă rulați Ansible ca utilizator obișnuit, Ansible oferă creșterea privilegiilor la gazde la distanță folosind --deveni
opțiune de a dobândi privilegii de root și -k
pentru a solicita parola.
De exemplu, pentru a rula comanda Ansible adhoc „netstat -pnltu„Cu opțiunea privilegiată --deveni
și opțiune -K
pentru a solicita parola utilizatorului root pentru a rula comanda.
$ ansible webservers -m shell -a 'netstat -pnltu' --devine -K.
Pentru a deveni un alt utilizator în afară de root, utilizați - devine utilizator
atribut.
De exemplu pentru a rula „df -Th' la fel de tecmint utilizator de pe gazdele la distanță și solicită rularea parolei:
$ ansible all -m shell -a 'df -Th' - devine utilizator tecmint -K.
Fapte consultați informații detaliate despre un sistem. Aceasta include informații despre adresa IP, arhitectura sistemului, memoria și CPU pentru a menționa câteva.
Pentru a prelua informații despre gazdele la distanță, rulați comanda:
$ ansible all -m setup
Ansible folosește modulul copie pentru a copia în siguranță fișiere din controlul Ansible pe mai multe gazde la distanță.
Mai jos este un exemplu de operație de copiere:
# ansible webservers -m copy -a "src = / var / log / secure dest = / tmp /"
Comanda copiază /var/log/secure în nodul Ansible Control către gazdele la distanță din grupul de servere web din /tmp destinaţie.
Puteți utiliza modulul de fișiere pentru a modifica permisiunile și proprietatea fișierului.
# ansible webservers -m file -a "dest = / tmp / secure mode = 600"
În plus, puteți adăuga proprietarul și grupa argumentele așa cum se arată:
# ansible webservers -m file -a "dest = / tmp / secure mode = 600 owner = tecmint group = tecmint"
De asemenea, puteți crea directoare, în mod similar cu mkdir -p
așa cum se arată.
$ ansible webservers -m file -a "dest = / path / to / directory mode = 755 owner = tecmint group = tecmint state = directory"
De exemplu,
$ ansible webservers -m file -a "dest = / home / tecmint / data mode = 755 owner = tecmint group = tecmint state = directory"
În acest articol, am arătat cum puteți configura nodurile gestionate pentru a rula comenzi ad-hoc Ansible pentru a gestiona gazdele la distanță. Sperăm că ți s-a părut util. Dă-i o lovitură și anunță-ne cum a mers.