Kā konfigurēt iespējamos pārvaldītos mezglus un palaist ad-hoc komandas - 3. daļa


Iepriekšējos divos šīs Ansible Control Node iestatīšanas rakstos. Šajā 3. daļā mēs parādīsim, kā jūs varat konfigurēt Ansible pārvaldītos mezglus, lai izpildītu ad-hoc komandas attālos resursdatoros.

Iestatiet SSH autentifikācijas bez paroles iespējamajiem pārvaldītajiem mezgliem

Kā mūsu pēdējās tēmas kopsavilkums, attālo resursdatoru pārvaldībai ar Ansible ir jāiestata SSH autentifikācija bez paroles starp Ansible vadības mezglu un pārvaldītajiem saimniekiem. Tas ietver atslēgu pāra (publisko un privāto SSH atslēgu pāra) ģenerēšanu mezglā Ansible Control un publiskās atslēgas kopēšanu visos attālajos resursdatoros. Tas būs izšķirošs solis uz priekšu un ievērojami atvieglos jūsu darbu.

Konfigurējiet privilēģiju eskalāciju pārvaldītajos mezglos

Kad esat pieteicies kā parasts lietotājs, jums var būt nepieciešams veikt noteiktus uzdevumus pārvaldītajos mezglos, kuriem nepieciešamas paaugstinātas vai root tiesības. Šie uzdevumi ietver pakotņu pārvaldību, jaunu lietotāju un grupu pievienošanu un sistēmas konfigurāciju modificēšanu, lai pieminētu tikai dažus. Lai to panāktu, atskaņošanas grāmatā ir jāizsauc noteiktas direktīvas, lai izpildītu uzdevumus kā privileģēts lietotājs attālajos resursdatoros.

Ansible ļauj jums kļūt par citu pārvaldītā mezgla lietotāju, kas atšķiras no tā, kurš pašlaik ir pieteicies. Direktīva kļūt: jā paaugstina jūsu privilēģijas un ļauj jums veikt uzdevumus, kuriem nepieciešamas root tiesības, piemēram, instalēšana un instalēšana. pakotņu atjaunināšana un sistēmas pārstartēšana.

Apsveriet playbook httpd.yml , kas instalē un palaiž Apache tīmekļa serveri, kā parādīts:

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

Direktīva kļūt: jā ļauj izpildīt komandas kā root lietotājs attālajā resursdatorā.

Vēl viena direktīva, kuru varat izmantot, lai kļūtu par citu lietotāju, ir kļūda_lietotājs. Tas ļauj pēc pierakstīšanās pārslēgties uz sudo lietotāju attālajā resursdatorā, nevis uz lietotāju, kurā piesakāties.

Piemēram, lai izpildītu komandu kā tecmint lietotājs tālvadības ierīcē, izmantojiet direktīvu, kā parādīts.

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

Šī direktīva ignorēs noklusējuma metodi, kas iestatīta failā ansible.cfg, kas parasti ir iestatīts uz sudo.

Tie tiek izmantoti spēles vai uzdevumu līmenī, piemēram, ja jums ir jāpārslēdzas uz lietotāju, kad čaula ir iestatīta uz nologin.

Piemēram,

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

Komandrindas opcijas privilēģiju eskalācijā

Apskatīsim dažas komandrindas opcijas, kuras varat izmantot, lai paaugstinātu savas privilēģijas, palaižot komandas:

  • --ask-tapti-pass , -K - tas prasa ievadīt sudo lietotāja paroli attālajā sistēmā, kuru mēģināt izveidot savienojumu.

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

  • - kļūt , -b - tas ļauj izpildīt uzdevumu kā root lietotāju, neprasot paroli.

$ ansible-playbook myplaybook.yml --become 

  • --become-user = BECOME_USER - tas ļauj izpildīt uzdevumus kā cits lietotājs.

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

Apstipriniet darba konfigurāciju, izmantojot Ad-Hoc Ansible komandas

Dažreiz, iespējams, vēlēsities veikt ātrus un vienkāršus uzdevumus attālajos resursdatoros vai serveros vietnē Ansible, obligāti neizveidojot playbook. Tādā gadījumā jums būs nepieciešams palaist ad-hoc komandu.

Anaboliska ad-hoc komanda ir vienas rindas komanda, kas palīdz izpildīt vienkāršus uzdevumus vienkāršā, bet efektīvā veidā, neveidojot atskaņošanas grāmatas. Šādi uzdevumi ietver failu kopēšanu starp resursdatoriem, serveru pārstartēšanu, lietotāju pievienošanu un noņemšanu un vienas pakotnes instalēšanu.

Šajā apmācībā mēs izpētām dažādas Ansible Ad-Hoc komandu lietojumprogrammas. Demonstrācijai mēs izmantosim zemāk esošo inventāra failu.

[webservers]
173.82.115.165

[database_servers]
173.82.202.239

Visvienkāršākais Ansible-Adhoc komandu lietojums ir saimniekdatora vai to grupas pingēšana.

# ansible -m ping all

Iepriekš minētajā komandā parametrs -m ir moduļa opcija. Ping ir adhoc komanda, un otrais parametrs apzīmē visus resursus inventāra failā. Komandas izeja ir parādīta zemāk:

Lai pingētu noteiktai resursdatoru grupai, aizstājiet parametru ‘visi’ ar grupas nosaukumu. Tālāk sniegtajā piemērā mēs pārbaudām savienojamību ar mitinātājiem tīmekļa serveru grupā.

# ansible -m ping webservers

Turklāt, lai norādītu parastās Linux komandas divkāršās pēdiņās, varat izmantot atribūtu -a . Piemēram, lai pārbaudītu attālo sistēmu darbības laiku, palaidiet:

# ansible -a "uptime" all

Lai pārbaudītu diska izmantošanu attālās saimniekdatoros palaist.

# ansible -a "df -Th" all

Ir simtiem simtiem moduļu, kurus varat izmantot ar Adhoc komandu. Lai skatītu visu moduļu sarakstu ar to aprakstiem, palaidiet zemāk esošo komandu.

# ansible-doc -l

Lai skatītu detalizētu informāciju par konkrētu moduli, palaidiet komandu.

# ansible-doc module_name

Piemēram, lai meklētu sīkāku informāciju par Yum moduļa darbību:

# ansible-doc yum

Pakotņu instalēšanai un noņemšanai, izmantojot yum un apt pakotņu pārvaldniekus, var izmantot adhoc komandas.

Lai inventāra failā instalētu Apache tīmekļa serveri CentOS 7 resursdatorā zem tīmekļa serveru grupas, izpildiet komandu:

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

Lai pārbaudītu Apache tīmekļa servera instalēšanu, piesakieties attālajā klientā un palaidiet.

# rpm -qa | grep httpd

Lai atinstalētu Apache, vienkārši mainiet stāvokli no pašreizējā uz neesošu.

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

Atkal, lai apstiprinātu httpd run noņemšanu.

# rpm -qa | grep httpd

Kā novērots, Apache tīmekļa servera paketes ir iztīrītas.

Veidojot lietotājus, noderīgs ir lietotāja modulis. Lai izveidotu jaunu lietotāju james ar paroles redhat uz klienta sistēmas database_server, izsniedziet komandu.

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

Lai apstiprinātu jaunā lietotāja izveidi, palaidiet komandu:

# ansible database_servers -a "id james"

Lai noņemtu lietotāju, palaidiet komandu:

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

Ja jūs izmantojat Ansible kā parastu lietotāju, Ansible nodrošina privilēģiju eskalāciju attālos resursdatoros, izmantojot opciju --become , lai iegūtu root tiesības un -k , lai pieprasītu paroli.

Piemēram, lai palaistu Ansible adhoc komandu 'netstat -pnltu' ar privileģēto opciju - -become un opciju -K , lai pieprasītu root lietotāja paroli, lai palaistu komandu .

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

Lai kļūtu par citu lietotāju, izņemot root, izmantojiet atribūtu --become-user .

Piemēram, lai palaistu ‘df -Th’ kā tecmint lietotāju attālajos resursdatoros un pieprasītu palaist paroli:

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

Fakti attiecas uz detalizētu informāciju par sistēmu. Tas ietver informāciju par IP adresi, sistēmas arhitektūru, atmiņu un procesoru, lai pieminētu dažus.

Lai izgūtu informāciju par attālajiem resursdatoriem, palaidiet komandu:

$ ansible all -m setup 

Ansible izmanto moduļa kopiju, lai droši kopētu failus no Ansible vadības uz vairākiem attālajiem resursdatoriem.

Zemāk ir kopēšanas darbības piemērs:

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

Komanda kopē/var/log/secure failu Ansible Control mezglā attālajiem resursdatoriem tīmekļa serveru grupā/tmp galamērķī.

Failu moduli var izmantot, lai mainītu atļaujas un faila īpašumtiesības.

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

Turklāt jūs varat pievienot īpašnieka un grupas argumentus, kā parādīts:

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

Varat arī izveidot direktorijus līdzīgā veidā kā mkdir -p , kā parādīts.

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

Piemēram,

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

Šajā rakstā mēs izgaismojām, kā jūs varat konfigurēt pārvaldītos mezglus, lai palaistu Ansible ad-hoc komandas, lai pārvaldītu attālos resursdatorus. Mēs ceram, ka jums tas šķita noderīgs. Sniedziet to un paziņojiet mums, kā tas notika.