Kako konfigurirati odgovorna upravljana vozlišča in zagnati priložnostne ukaze - 3. del


V prejšnjih dveh člankih tega Setting Up Ansible Control Node. V tem delu 3 bomo prikazali, kako lahko konfigurirate Ansible upravljana vozlišča za izvajanje ad-hoc ukazov na oddaljenih gostiteljih.

Nastavite overjanje SSH brez gesla na odgovorna upravljana vozlišča

Kot povzetek naše zadnje teme je upravljanje oddaljenih gostiteljev z Ansible zahteva nastavitev SSH overjanja brez gesla med nadzornim vozliščem Ansible in upravljanimi gostitelji. To vključuje generiranje para ključev (javni in zasebni par ključev SSH) na vozlišču Ansible Control in kopiranje javnega ključa na vse oddaljene gostitelje. To bo ključen korak naprej in vam bo precej olajšal delo.

Konfigurirajte Privilege Escalation na upravljanih vozliščih

Ko ste prijavljeni kot običajni uporabnik, boste morda morali izvajati določena opravila na upravljanih vozliščih, ki zahtevajo povišane privilegije ali korenske privilegije. Te naloge vključujejo upravljanje paketov, dodajanje novih uporabnikov in skupin ter spreminjanje sistemskih konfiguracij, da omenimo le nekatere. Da bi to dosegli, morate v priročniku sklicati določene smernice za izvajanje nalog kot privilegiran uporabnik na oddaljenih gostiteljih.

Ansible vam omogoča, da na upravljanem vozlišču 'postanete' drug uporabnik, ki se razlikuje od trenutno prijavljenega. Direktiva become: yes poviša vaše privilegije in vam omogoča izvajanje nalog, ki zahtevajo korenske privilegije, kot sta namestitev in posodabljanje paketov in ponovni zagon sistema.

Razmislite o knjigi predvajanja httpd.yml , ki namesti in zažene spletni strežnik Apache, kot 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 vam omogoča izvajanje ukazov kot korenski uporabnik na oddaljenem gostitelju.

Druga direktiva, s katero lahko postanete drug uporabnik, je postal_user. To vam omogoča, da ob prijavi preklopite na uporabnika sudo na oddaljenem gostitelju in ne na uporabnika, v katerega ste prijavljeni.

Na primer, če želite na daljavo zagnati ukaz kot uporabnik tecmint, uporabite direktivo, kot je prikazano.

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

Ta direktiva bo preglasila privzeto metodo, nastavljeno v datoteki ansible.cfg, ki je običajno nastavljena na sudo.

Uporabljajo se na ravni predvajanja ali opravila, na primer, ko morate preklopiti na uporabnika, ko je lupina nastavljena na nologin.

Na primer,

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

Možnosti ukazne vrstice v Privilege Escalation

Oglejmo si nekaj možnosti ukazne vrstice, s katerimi lahko povečate svoje pravice med izvajanjem ukazov:

  • --ask-become-pass , -K - to vas vpraša za geslo uporabnika sudo v oddaljenem sistemu, ki ga želite povezati.

$ ansible-playbook myplaybook.yml --ask-become-pass

  • --become , -b - to vam omogoča, da nalogo zaženete kot korenski uporabnik, ne da bi zahtevali geslo.

$ ansible-playbook myplaybook.yml --become 

  • --become-user = BECOME_USER - Omogoča izvajanje nalog kot drug uporabnik.

$ ansible-playbook myplaybook.yml --become-user=tecmint

Preverite delujočo konfiguracijo z uporabo ad hoc odgovornih ukazov

Včasih boste morda želeli izvesti hitra in preprosta opravila na oddaljenih gostiteljih ali strežnikih v programu Ansible, ne da bi vam bilo treba ustvariti knjigo iger. V tem primeru bi morali zagnati ad hoc ukaz.

Ad-hoc ukaz ansible je enovrstni ukaz, ki vam pomaga na preprost, a učinkovit način izvajati preprosta opravila brez potrebe po ustvarjanju knjig iger. Takšna opravila vključujejo kopiranje datotek med gostitelji, ponovni zagon strežnikov, dodajanje in odstranjevanje uporabnikov ter namestitev enega samega paketa.

V tej vadnici raziskujemo različne aplikacije ukazov Ansible Ad-Hoc. Spodnjo datoteko inventarja bomo uporabili za predstavitev.

[webservers]
173.82.115.165

[database_servers]
173.82.202.239

Najosnovnejša uporaba ukazov Ansible-Adhoc je pinganje gostitelja ali skupine gostiteljev.

# ansible -m ping all

V zgornjem ukazu je parameter -m parameter modula. Ping je ukaz adhoc, drugi parameter pa predstavlja vse gostitelje v inventarni datoteki. Izhod ukaza je prikazan spodaj:

Če želite pingati določeno skupino gostiteljev, parameter 'all' zamenjajte z imenom skupine. V spodnjem primeru preizkušamo povezljivost z gostitelji v skupini spletnih strežnikov.

# ansible -m ping webservers

Poleg tega lahko z atributom -a določite običajne ukaze Linux v dvojnih narekovajih. Če želite na primer preveriti delovanje sistema oddaljenih sistemov, zaženite:

# ansible -a "uptime" all

Za preverjanje uporabe diska oddaljenih gostiteljev zaženite.

# ansible -a "df -Th" all

Obstaja na stotine na stotine modulov, ki jih lahko uporabite z ukazom Adhoc. Če si želite ogledati celoten seznam modulov z njihovimi opisi, zaženite spodnji ukaz.

# ansible-doc -l

Če si želite ogledati podrobne informacije o določenem modulu, zaženite ukaz.

# ansible-doc module_name

Če želite na primer poiskati več podrobnosti o zagonu modula yum:

# ansible-doc yum

Odgovorne adhoc ukaze lahko uporabite za namestitev in odstranjevanje paketov z uporabo upraviteljev paketov yum in apt.

Če želite namestiti spletni strežnik Apache na gostitelja CentOS 7 v skupini spletnih strežnikov v inventarni datoteki, zaženite ukaz:

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

Če želite preveriti namestitev spletnega strežnika Apache, se prijavite v oddaljeni odjemalec in zaženite.

# rpm -qa | grep httpd

Če želite odstraniti Apache, preprosto spremenite stanje iz sedanjega v odsotno.

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

Še enkrat, za potrditev odstranitve httpd run.

# rpm -qa | grep httpd

Kot smo že opazili, so bili paketi spletnih strežnikov Apache očiščeni.

Pri ustvarjanju uporabnikov je uporaben modul 'uporabnik'. Če želite na odjemalskem sistemu database_server ustvariti novega uporabnika james z geslom redhat, izdajte ukaz.

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

Če želite potrditi ustvarjanje novega uporabnika, zaženite ukaz:

# ansible database_servers -a "id james"

Če želite uporabnika odstraniti, zaženite ukaz:

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

Če uporabljate Ansible kot običajni uporabnik, Ansible omogoča stopnjevanje privilegij na oddaljenih gostiteljih z uporabo možnosti --become za pridobitev korenskih pravic in -k za zahtevo gesla.

Na primer, če želite zagnati ukaz Ansible adhoc 'netstat -pnltu' s privilegirano možnostjo - -become in možnost -K za poziv gesla korenskega uporabnika za zagon ukaza .

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

Če želite postati drug uporabnik, ki ni root, uporabite atribut --become-user .

Na primer, da zaženete "df -Th" kot uporabnik tecmint na oddaljenih gostiteljih in zahtevate zagon gesla:

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

Dejstva se nanašajo na podrobne informacije o sistemu. Sem spadajo informacije o naslovu IP, sistemski arhitekturi, pomnilniku in CPU, da omenimo le nekatere.

Če želite pridobiti informacije o oddaljenih gostiteljih, zaženite ukaz:

$ ansible all -m setup 

Ansible uporablja kopijo modula za varno kopiranje datotek iz kontrolnika Ansible na več oddaljenih gostiteljev.

Spodaj je primer postopka kopiranja:

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

Ukaz kopira datoteko/var/log/secure v vozlišču Ansible Control na oddaljene gostitelje v skupini spletnih strežnikov na cilju/tmp.

Z datotečnim modulom lahko spreminjate dovoljenja in lastništvo datotek.

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

Poleg tega lahko dodate argumente lastnika in skupine, kot je prikazano:

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

Lahko ustvarite tudi imenike, podobno kot mkdir -p , kot je prikazano.

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

Na primer,

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

V tem članku osvetlimo, kako lahko konfigurirate upravljana vozlišča za zagon priložnostnih ukazov Ansible za upravljanje oddaljenih gostiteljev. Upamo, da se vam je zdelo koristno. Poskusite in nam sporočite, kako je šlo.