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


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

Postavite SSH autentifikaciju bez lozinke za Ansible upravljane čvorove

Kao rezime naše posljednje teme, upravljanje udaljenim hostovima s Ansibleom zahtijeva postavljanje SSH autentifikacije bez lozinke između Ansible kontrolnog čvora i upravljanih hostova. To uključuje generiranje para ključeva (par javnih i privatnih SSH ključeva) na Ansible Control čvoru i kopiranje javnog ključa na sva udaljena računala. 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čni korisnik, možda ćete morati izvršiti određene zadatke na upravljanim čvorovima koji zahtijevaju povišene povlastice ili povlastice roota. Ovi zadaci uključuju upravljanje paketima, dodavanje novih korisnika i grupa te izmjenu konfiguracije sustava da spomenemo samo neke. Da biste to postigli, trebate pozvati određene direktive u priručniku za pokretanje zadataka kao privilegirani korisnik na udaljenim računalima.

postati

Ansible vam omogućuje da 'postanete' drugi korisnik na upravljanom čvoru koji nije trenutno prijavljen. Direktiva become:yes podiže vaše privilegije i omogućuje vam izvršavanje zadataka koji zahtijevaju root privilegije kao što su instaliranje i ažuriranje paketa i ponovno pokretanje sustava.

Razmotrite priručnik httpd.yml koji instalira i pokreće web poslužitelj Apache 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

Direktiva become: yes omogućuje vam izvršavanje naredbi kao root korisnik na udaljenom hostu.

postati_korisnik

Druga direktiva koju možete koristiti da postanete drugi korisnik je become_user. To vam omogućuje da se prebacite na sudo korisnika na udaljenom računalu nakon prijave, a ne na korisnika kao kojeg se prijavljujete.

Na primjer, za pokretanje naredbe kao tecmint korisnik na daljinskom upravljaču upotrijebite direktivu kao što je prikazano.

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

postati_metoda

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

postati_zastave

Oni se koriste na razini 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 naredbenog retka u eskalaciji privilegija

Pogledajmo neke od opcija naredbenog retka 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 sustavu s kojim se pokušavate povezati.
ansible-playbook myplaybook.yml --ask-become-pass

  • --become, -b – Ovo vam omogućuje pokretanje zadatka kao root korisnika bez traženja lozinke.
ansible-playbook myplaybook.yml --become 
  • --become-user=BECOME_USER – Omogućuje vam pokretanje zadataka kao drugi korisnik.
ansible-playbook myplaybook.yml --become-user=tecmint

Potvrdite radnu konfiguraciju pomoću ad-hoc ansible naredbi

Ponekad ćete možda htjeti izvršiti brze i jednostavne zadatke na udaljenim hostovima ili poslužiteljima u Ansibleu, a da nužno ne morate izraditi priručnik. U tom slučaju, trebali biste pokrenuti ad-hoc naredbu.

Što je Adhoc naredba?

Ansible ad-hoc naredba je naredba u jednom retku koja vam pomaže izvršiti jednostavne zadatke na jednostavan, ali učinkovit način, bez potrebe za stvaranjem priručnika. Takvi zadaci uključuju kopiranje datoteka između hostova, ponovno pokretanje poslužitelja, dodavanje i uklanjanje korisnika i instaliranje jednog paketa.

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

[webservers]
173.82.115.165

[database_servers]
173.82.202.239

Osnovna upotreba adhoc naredbi

Najosnovnija upotreba Ansible-Adhoc naredbi je pinganje hosta ili grupe hostova.

ansible -m ping all

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

Da biste pingali određenu grupu hostova, zamijenite parametar ‘all’ nazivom grupe. U donjem primjeru testiramo povezanost s hostovima u grupi web poslužitelja.

ansible -m ping webservers

Osim toga, možete upotrijebiti atribut -a za navođenje regularnih Linux naredbi u dvostrukim navodnicima. Na primjer, da biste provjerili vrijeme rada udaljenih sustava, pokrenite:

ansible -a "uptime" all

Za provjeru korištenja diska udaljenih računala pokrenite.

ansible -a "df -Th" all

Postoje stotine i stotine modula koje možete koristiti s Adhoc naredbom. Da biste vidjeli cijeli popis modula s njihovim opisima, pokrenite naredbu ispod.

ansible-doc -l

Za prikaz detaljnih informacija o određenom modulu, pokrenite naredbu.

ansible-doc module_name

Na primjer, za traženje više pojedinosti o yum modulu pokrenite:

ansible-doc yum

Upravljanje paketima/uslugama s Ansibleom

Ansible adhoc naredbe mogu se koristiti za instalaciju i uklanjanje paketa pomoću upravitelja paketa yum i apt.

Da biste instalirali Apache web poslužitelj na host CentOS 7 pod grupom web poslužitelja u datoteci inventara, pokrenite naredbu:

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

Da biste provjerili instalaciju Apache web poslužitelja, prijavite se na udaljeni klijent i pokrenite.

rpm -qa | grep httpd

Da biste deinstalirali Apache, jednostavno promijenite stanje iz prisutan u odsutan.

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

Opet, za potvrdu uklanjanja httpd run.

rpm -qa | grep httpd

Kao što je primijećeno, paketi Apache web poslužitelja su očišćeni.

Stvaranje korisnika i grupa pomoću Ansiblea

Prilikom kreiranja korisnika, modul ‘korisnik’ dobro dolazi. Za stvaranje novog korisnika james s lozinkom redhat na klijentskom sustavu database_server, izdajte naredbu.

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

Da biste potvrdili stvaranje novog korisnika, pokrenite naredbu:

ansible database_servers -a "id james"

Za uklanjanje korisnika pokrenite naredbu:

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

Eskalacija privilegija

Ako koristite Ansible kao redoviti korisnik, Ansible pruža eskalaciju privilegija na udaljenim računalima pomoću opcije --become za stjecanje root privilegija i -k za traženje lozinke.

Na primjer, za pokretanje Ansible adhoc naredbe 'netstat -pnltu' s privilegiranom opcijom –-become i opcijom -K za upit za lozinka root korisnika za pokretanje naredbe.

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

Da biste postali drugi korisnik osim root, koristite atribut --become-user.

Na primjer za pokretanje 'df -Th' kao tecmint korisnik na udaljenim hostovima i traženje pokretanja zaporke:

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

Prikupljanje činjenica o sustavima domaćina

Činjenice odnose se na detaljne informacije o sustavu. To uključuje informacije o IP adresi, arhitekturi sustava, memoriji i CPU-u da spomenemo 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 s kontrole Ansible na više udaljenih računala.

Ispod je primjer operacije kopiranja:

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

Naredba kopira datoteku /var/log/secure u Ansible Control čvoru na udaljena računala u grupi web-poslužitelja na odredištu /tmp.

Možete koristiti datotečni modul za promjenu dopuštenja i vlasništva nad datotekom.

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

Osim toga, 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 rasvjetljavamo kako možete konfigurirati upravljane čvorove za pokretanje Ansible ad-hoc naredbi za upravljanje udaljenim hostovima. Nadamo se da vam je bilo od koristi. Pokušajte i javite nam kako je prošlo.