Kaip sukonfigūruoti galimus valdomus mazgus ir paleisti ad-hoc komandas - 3 dalis


Ankstesniuose šio „Ansible Control Node“ nustatymo straipsniuose. Šioje 3 dalyje parodysime, kaip galite sukonfigūruoti „Ansible“ valdomus mazgus vykdyti ad-hoc komandas nuotoliniuose kompiuteriuose.

Nustatykite SSH autentifikavimą be slaptažodžių galimuose valdomuose mazguose

Apibendrinant mūsų paskutinę temą, norint valdyti nuotolinius kompiuterius su „Ansible“, reikia nustatyti „Passwordless SSH“ autentifikavimą tarp „Ansible“ valdymo mazgo ir valdomų kompiuterių. Tai apima raktų poros (viešųjų ir privačių SSH raktų porų) generavimą ant Ansible Control mazgo ir viešojo rakto nukopijavimą į visus nuotolinius kompiuterius. Tai bus esminis žingsnis į priekį ir daug palengvins jūsų darbą.

Konfigūruokite privilegijų eskalavimą valdomuose mazguose

Prisijungę kaip įprastas vartotojas, gali tekti atlikti tam tikras užduotis valdomiems mazgams, kuriems reikalingos padidintos arba pagrindinės teisės. Šios užduotys apima paketų valdymą, naujų vartotojų ir grupių pridėjimą ir sistemos konfigūracijų modifikavimą, kad būtų paminėti tik keli. Norėdami tai pasiekti, turite paleisti tam tikras „playbook“ direktyvas, kad vykdytumėte užduotis kaip privilegijuotas vartotojas nuotoliniuose pagrindiniuose kompiuteriuose.

„Ansible“ leidžia „tapti“ kitu valdomo mazgo vartotoju, kitokiu nei šiuo metu esate prisijungę. tapti: taip direktyva padidina jūsų teises ir leidžia atlikti užduotis, kurioms reikalingos pagrindinės teisės, pvz., Įdiegti ir įdiegti. atnaujinant paketus ir perkraunant sistemą.

Apsvarstykite „playbook“ httpd.yml , kuris įdiegia ir paleidžia „Apache“ tinklo serverį, kaip parodyta:

---
- 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

tapti: taip direktyva leidžia jums vykdyti komandas kaip pagrindinio vartotojo nuotoliniame pagrindiniame kompiuteryje.

Kita direktyva, kurią galite naudoti norėdami tapti kitu vartotoju, yra tapti_naudotoju. Tai leidžia prisijungus prisijungti prie „sudo“ vartotojo nuotoliniame pagrindiniame kompiuteryje, o ne prie vartotojo, kuriuo prisijungiate.

Pavyzdžiui, norėdami nuotoliniu būdu paleisti komandą kaip „tecmint“ vartotojas, naudokite direktyvą, kaip parodyta.

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

Ši direktyva pakeis numatytąjį metodą, nustatytą faile ansible.cfg, kuris paprastai nustatytas kaip sudo.

Jie naudojami žaidimo ar užduočių lygiu, pavyzdžiui, kai reikia pereiti prie vartotojo, kai apvalkalas nustatytas kaip nologinas.

Pavyzdžiui,

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

Komandų eilutės parinktys privilegijų eskalavimo srityje

Pažvelkime į kai kurias komandų eilutės parinktis, kurias galite naudoti norėdami padidinti savo teises vykdydami komandas:

  • --ask-tapti-pass , -K - tai paragins sudo vartotojo nuotolinėje sistemoje, prie kurios bandote prisijungti, slaptažodį.

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

  • --become , -b - tai leidžia jums atlikti užduotį kaip pagrindinį vartotoją, neprašant slaptažodžio.

$ ansible-playbook myplaybook.yml --become 

  • --become-user = BECOME_USER - tai leidžia vykdyti užduotis kaip kitam vartotojui.

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

Patvirtinkite darbo konfigūraciją naudodami „Ad-Hoc Ansible“ komandas

Kartais galite atlikti greitas ir paprastas užduotis nuotoliniuose pagrindiniuose kompiuteriuose ar serveriuose „Ansible“, nebūtinai kurdami grojaraštį. Tokiu atveju jums reikės paleisti ad-hoc komandą.

Neįmanoma ad-hoc komanda yra vienos eilutės komanda, padedanti atlikti paprastas užduotis paprastai, bet efektyviai, nereikia kurti grojaraščių. Tokios užduotys apima failų kopijavimą tarp kompiuterių, serverių perkrovimą, vartotojų pridėjimą ir pašalinimą bei vieno paketo įdiegimą.

Šioje pamokoje tyrinėjame įvairias „Ansible Ad-Hoc“ komandų programas. Demonstracijai naudosime toliau pateiktą inventoriaus failą.

[webservers]
173.82.115.165

[database_servers]
173.82.202.239

Pats paprasčiausias „Ansible-Adhoc“ komandų naudojimas yra pinguoti pagrindinį kompiuterį ar jų grupę.

# ansible -m ping all

Pirmiau pateiktoje komandoje parametras -m yra modulio parinktis. Ping yra adhoc komanda, o antrasis parametras reiškia visus kompiuterius inventoriaus faile. Komandos išvestis rodoma žemiau:

Norėdami pinguoti tam tikroje pagrindinių kompiuterių grupėje, pakeiskite parametrą „visi“ grupės pavadinimu. Toliau pateiktame pavyzdyje mes bandome ryšį su kompiuteriais, priklausančiais tinklo serverių grupei.

# ansible -m ping webservers

Be to, naudodami atributą -a galite nurodyti įprastas „Linux“ komandas dvigubose kabutėse. Pavyzdžiui, norėdami patikrinti nuotolinių sistemų veikimo laiką, paleiskite:

# ansible -a "uptime" all

Norėdami patikrinti, ar veikia nuotolinių kompiuterių disko naudojimas.

# ansible -a "df -Th" all

Yra šimtai šimtų modulių, kuriuos galite naudoti su „Adhoc“ komanda. Norėdami peržiūrėti visą modulių sąrašą su jų aprašais, vykdykite toliau pateiktą komandą.

# ansible-doc -l

Norėdami peržiūrėti išsamią informaciją apie tam tikrą modulį, paleiskite komandą.

# ansible-doc module_name

Pvz., Jei norite ieškoti daugiau informacijos apie „yum“ modulio paleidimą:

# ansible-doc yum

Įdiegiant ir pašalinant paketus, naudojant yum ir apt paketų tvarkykles, galima naudoti adhoc komandas.

Norėdami įdiegti „Apache“ žiniatinklio serverį „CentOS 7“ pagrindiniame kompiuteryje pagal tinklo serverių grupę, atlikite komandą:

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

Norėdami patikrinti „Apache“ žiniatinklio serverio diegimą, prisijunkite prie nuotolinio kliento ir paleiskite.

# rpm -qa | grep httpd

Norėdami pašalinti „Apache“, paprasčiausiai pakeiskite būseną iš esamos į nebuvusią.

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

Vėlgi, norėdamas patvirtinti, kad pašalintas httpd run.

# rpm -qa | grep httpd

Kaip pastebėta, „Apache“ tinklo serverio paketai buvo išvalyti.

Kuriant vartotojus, „vartotojo“ modulis praverčia. Norėdami sukurti naują vartotojo james'ą su slaptažodžio redhat'u kliento sistemoje database_server, išleiskite komandą.

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

Norėdami patvirtinti naujo vartotojo sukūrimą, vykdykite komandą:

# ansible database_servers -a "id james"

Norėdami pašalinti vartotoją, vykdykite komandą:

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

Jei „Ansible“ naudojate kaip įprastas vartotojas, „Ansible“ suteikia privilegijų eskalavimą nuotoliniuose pagrindiniuose kompiuteriuose naudodama parinktį --become , kad gautumėte root teises ir -k , kad paprašytumėte slaptažodžio.

Pvz., Norėdami paleisti „Ansible adhoc“ komandą „netstat -pnltu“ su privilegijuota parinktimi - -become ir parinktimi -K , kad paprašytumėte pagrindinio vartotojo slaptažodžio paleisti komandą .

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

Norėdami tapti kitu vartotoju, išskyrus root, naudokite atributą --become-user .

Pavyzdžiui, norėdami paleisti „df -Th“ kaip „tecmint“ vartotoją nuotoliniuose pagrindiniuose kompiuteriuose ir paraginti paleisti slaptažodį:

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

Faktai nurodo išsamią informaciją apie sistemą. Tai apima informaciją apie IP adresą, sistemos architektūrą, atmintį ir procesorių.

Norėdami gauti informacijos apie nuotolinius kompiuterius, vykdykite komandą:

$ ansible all -m setup 

„Ansible“ naudoja modulio kopiją, kad saugiai nukopijuotų failus iš „Ansible“ valdiklio į kelis nuotolinius kompiuterius.

Žemiau pateikiamas kopijavimo operacijos pavyzdys:

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

Komanda nukopijuoja failą/var/log/secure, esantį galimo valdymo mazge, nuotoliniams kompiuteriams, esantiems tinklo serverių grupėje/tmp paskirties vietoje.

Failų modulį galite naudoti norėdami pakeisti teises ir failų nuosavybės teises.

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

Be to, galite pridėti savininko ir grupės argumentus, kaip parodyta:

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

Katalogus taip pat galite sukurti panašiai kaip mkdir -p , kaip parodyta.

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

Pavyzdžiui,

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

Šiame straipsnyje mes nušvietėme, kaip galite sukonfigūruoti valdomus mazgus paleisti „Ansible ad-hoc“ komandas nuotoliniams kompiuteriams valdyti. Tikimės, kad jums tai buvo naudinga. Duok šūvį ir pranešk mums, kaip sekėsi.