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.