Kako konfigurirati Ansible upravljane čvorove i pokrenuti ad-hoc komande - 3. dio


U prethodna dva članka ove Ansible serije objasnili smo osnovne komponente Ansiblea i postavljanje Ansible kontrolnog čvora. U ovom dijelu 3, pokazat ćemo kako možete konfigurirati Ansible upravljane čvorove za pokretanje ad-hoc komandi na udaljenim hostovima.

Postavite SSH autentifikaciju bez lozinke za Ansible upravljane čvorove

Kao rezime naše posljednje teme, upravljanje udaljenim hostovima pomoću Ansible-a zahtijeva postavljanje SSH autentifikacije bez lozinke između Ansible kontrolnog čvora i upravljanih hostova. Ovo uključuje generiranje para ključeva (javni i privatni par ključeva SSH) na Ansible Control čvoru i kopiranje javnog ključa na sve udaljene hostove. Ovo će biti ključni korak naprijed i znatno će vam olakšati rad.

Konfigurirajte eskalaciju privilegija na upravljanim čvorovima

Kada ste prijavljeni kao običan korisnik, od vas će se možda tražiti da izvršite određene zadatke na upravljanim čvorovima koji zahtijevaju povišene privilegije ili root privilegije. Ovi zadaci uključuju upravljanje paketima, dodavanje novih korisnika i grupa i modificiranje sistemskih konfiguracija da spomenemo samo neke. Da biste to postigli, morate pozvati određene direktive u playbook-u da biste pokrenuli zadatke kao privilegirani korisnik na udaljenim hostovima.

postati

Ansible vam omogućava da 'postanete' drugi korisnik na upravljanom čvoru različit od onog koji je trenutno prijavljen. Direktiva become:yes podiže vaše privilegije i omogućava vam da izvršavate zadatke koji zahtijevaju root privilegije kao što su instaliranje i ažuriranje paketa i ponovno pokretanje sistema.

Zamislite playbook httpd.yml koji instalira i pokreće Apache web server kao što je prikazano:

---
- name: install and start Apache webserver
  hosts: webservers

  tasks:
       - name: install httpd
         yum: name=httpd  state=latest
         become: yes
       - name: check httpd status
         service: name=httpd state=started

become: yes Direktiva vam omogućava da izvršavate komande kao root korisnik na udaljenom hostu.

postani_korisnik

Druga direktiva koju možete koristiti da postanete drugi korisnik je become_user. Ovo vam omogućava da se nakon prijavljivanja prebacite na sudo korisnika na udaljenom hostu, a ne na korisnika pod kojim se prijavljujete.

Na primjer, da pokrenete naredbu kao tecmint korisnik na daljinskom, koristite direktivu kao što je prikazano.

- name: Run a command as the apache user
  command: somecommand
  become: yes
  become_user: tecmint

postani_metod

Ova direktiva će nadjačati zadanu metodu postavljenu u datoteci ansible.cfg koja je obično postavljena na sudo.

postanite_zastave

Oni se koriste na nivou igre ili zadatka, na primjer kada se trebate prebaciti na korisnika kada je ljuska postavljena na nologin.

Na primjer,

- name: Run a command as nobody
  command: somecommand
  become: true
  become_method: su
  become_user: nobody
  become_flags: '-s /bin/sh'

Opcije komandne linije u eskalaciji privilegija

Pogledajmo neke od opcija komandne linije koje možete koristiti za podizanje svojih privilegija prilikom pokretanja naredbi:

  • --ask-become-pass, -K – Ovo od vas traži lozinku sudo korisnika na udaljenom sistemu na koji pokušavate da se povežete.
ansible-playbook myplaybook.yml --ask-become-pass

  • --become, -b – Ovo vam omogućava da pokrenete zadatak kao root korisnik bez traženja lozinke.
ansible-playbook myplaybook.yml --become 
  • --become-user=BECOME_USER – Omogućava vam da izvršavate zadatke kao drugi korisnik.
ansible-playbook myplaybook.yml --become-user=tecmint

Potvrdite radnu konfiguraciju koristeći Ad-Hoc Ansible naredbe

Ponekad ćete možda htjeti obavljati brze i jednostavne zadatke na udaljenim hostovima ili serverima u Ansibleu bez potrebe da kreirate playbook. U tom slučaju, trebali biste pokrenuti ad-hoc komandu.

Šta je adhoc komanda?

Ansible ad-hoc naredba je komanda u jednom redu koja vam pomaže da izvršite jednostavne zadatke na jednostavan, ali efikasan način bez potrebe za kreiranjem priručnika. Takvi zadaci uključuju kopiranje datoteka između hostova, ponovno pokretanje servera, dodavanje i uklanjanje korisnika i instaliranje jednog paketa.

U ovom vodiču istražujemo različite primjene Ansible Ad-Hoc komandi. Za demonstraciju ćemo koristiti datoteku inventara u nastavku.

[webservers]
173.82.115.165

[database_servers]
173.82.202.239

Osnovna upotreba Adhoc komandi

Najosnovnija upotreba Ansible-Adhoc komandi je pingovanje hosta ili grupe hostova.

ansible -m ping all

U gornjoj naredbi, parametar -m je opcija modula. Ping je adhoc komanda, a drugi parametar predstavlja sve hostove u datoteci inventara. Izlaz naredbe je prikazan u nastavku:

Za ping, određenu grupu domaćina, zamijenite parametar ‘svi’ imenom grupe. U primjeru ispod, testiramo povezanost sa hostovima u grupi web servera.

ansible -m ping webservers

Dodatno, možete koristiti atribut -a da specificirate regularne Linux komande u dvostrukim navodnicima. Na primjer, da provjerite vrijeme rada udaljenog sistema, pokrenite:

ansible -a "uptime" all

Za provjeru korištenja diska udaljenih hostova pokrenite.

ansible -a "df -Th" all

Postoje stotine i stotine modula koje možete koristiti sa Adhoc komandom. Da vidite kompletnu listu modula sa njihovim opisima, pokrenite naredbu ispod.

ansible-doc -l

Da vidite detaljne informacije o određenom modulu, pokrenite naredbu.

ansible-doc module_name

Na primjer, da potražite više detalja o yum modulu pokrenite:

ansible-doc yum

Upravljanje paketima/uslugama pomoću Ansiblea

Ansible adhoc komande se mogu koristiti za instalaciju i uklanjanje paketa pomoću yum i apt paket menadžera.

Da biste instalirali Apache web server na CentOS 7 host pod grupom web servera u datoteci inventara, pokrenite naredbu:

ansible webservers -m yum -a "name=httpd  state=present"

Da biste potvrdili instalaciju Apache web servera, prijavite se na udaljeni klijent i pokrenite.

rpm -qa | grep httpd

Da deinstalirate Apache, jednostavno promijenite stanje iz prisutno u odsutno.

ansible webservers -m yum -a "name=httpd  state=absent"

Opet, da potvrdite uklanjanje httpd run.

rpm -qa | grep httpd

Kao što je primećeno, paketi Apache web servera su očišćeni.

Kreiranje korisnika i grupa koristeći Ansible

Prilikom kreiranja korisnika, modul „korisnik“ dobro dolazi. Da kreirate novog korisnika james sa lozinkom redhat na serveru baze podataka klijentskog sistema, izdajte naredbu.

ansible database_server -m user -a "name=james password=redhat"

Da potvrdite kreiranje novog korisnika, pokrenite naredbu:

ansible database_servers -a "id james"

Da uklonite korisnika, pokrenite naredbu:

ansible database_servers -m user -a "name=james state=absent"

Eskalacija privilegija

Ako koristite Ansible kao običan korisnik, Ansible obezbjeđuje eskalaciju privilegija na udaljenim hostovima koristeći opciju --become za stjecanje root privilegija i -k za traženje lozinke.

Na primjer, da pokrenete Ansible adhoc naredbu 'netstat -pnltu' s privilegiranom opcijom –-become i opcijom -K da zatražite root korisničku lozinku za pokretanje naredbe.

ansible webservers -m shell -a 'netstat -pnltu' --become -K

Da postanete drugi korisnik koji nije root, koristite atribut --become-user.

Na primjer da pokrenete 'df -Th' kao tecmint korisnik na udaljenim hostovima i zatražite pokretanje lozinke:

ansible all -m shell -a 'df -Th' --become-user tecmint -K

Prikupljanje činjenica o host sistemima

Činjenice se odnose na detaljne informacije o sistemu. Ovo uključuje informacije o IP adresi, arhitekturi sistema, memoriji i CPU-u da spomenemo samo neke.

Da biste dohvatili informacije o udaljenim hostovima, pokrenite naredbu:

ansible all -m setup 

Prijenos datoteka/Kopiranje datoteka

Ansible koristi modul copy za sigurno kopiranje datoteka iz Ansible kontrole na više udaljenih hostova.

Ispod je primjer operacije kopiranja:

ansible webservers -m copy -a "src=/var/log/secure dest=/tmp/"

Komanda kopira datoteku /var/log/secure u čvoru Ansible Control na udaljene hostove u grupi web servera na /tmp odredištu.

Možete koristiti datotečni modul da promijenite dozvole i vlasništvo nad fajlom.

ansible webservers -m file -a "dest=/tmp/secure mode=600"

Dodatno, možete dodati argumente vlasnika i grupe kao što je prikazano:

ansible webservers -m file -a "dest=/tmp/secure mode=600 owner=tecmint group=tecmint"

Također možete kreirati direktorije, na sličan način kao mkdir -p kao što je prikazano.

ansible webservers -m file -a "dest=/path/to/directory mode=755 owner=tecmint group=tecmint state=directory"

Na primjer,

ansible webservers -m file -a "dest=/home/tecmint/data mode=755 owner=tecmint group=tecmint state=directory"

Zaključak

U ovom članku bacili smo svjetlo na to kako možete konfigurirati upravljane čvorove za pokretanje Ansible ad-hoc komandi za upravljanje udaljenim hostovima. Nadamo se da vam je bio od koristi. Probajte i javite nam kako je prošlo.