Kif tikkonfigura Nodi Immaniġġjati Ansible u Mexxi Kmandi ad hoc - Parti 3


Fiż-żewġ artikoli preċedenti ta 'dan it-Twaqqif tan-Node ta' Kontroll Ansible. F'din il-parti 3, aħna ser nuru kif tista 'tikkonfigura nodi mmaniġġjati Ansible biex tmexxi kmandi ad hoc fuq hosts remoti.

Setup Awtentikazzjoni SSH mingħajr Password għal Nodi Immaniġġjati Ansible

Bħala sommarju dwar l-aħħar suġġett tagħna, il-ġestjoni ta 'hosts remoti b'Ansible teħtieġ it-twaqqif ta' awtentikazzjoni SSH mingħajr Password bejn in-nodu ta 'kontroll Ansible u l-hosts ġestiti. Dan jinvolvi l-ġenerazzjoni ta 'par ta' ċwievet (par ta 'ċavetta SSH Pubbliku u Privat) fuq in-nodu ta' Kontroll Ansible u l-ikkupjar taċ-ċavetta Pubblika lill-hosts remoti kollha. Dan se jkun pass kruċjali 'l quddiem u se jagħmel ix-xogħol tiegħek ħafna aktar faċli.

Ikkonfigura l-Eskalazzjoni tal-Privileġġi fuq Nodi Immexxija

Meta illoggjat bħala utent regolari, jista 'jkun meħtieġ li twettaq ċerti kompiti fuq nodi ġestiti li jeħtieġu privileġġi elevati jew privileġġi root. Dawn il-kompiti jinkludu l-ġestjoni tal-pakketti, iż-żieda ta 'utenti u gruppi ġodda, u l-modifika tal-konfigurazzjonijiet tas-sistema biex insemmu biss ftit. Biex tikseb dan, għandek bżonn tinvoka ċerti direttivi fil-playbook biex tmexxi l-kompiti bħala utent privileġġjat fuq l-hosts remoti.

Ansible jippermettilek li issir utent ieħor fuq in-nodu mmaniġġjat differenti minn dak li illoggjat bħalissa. Id-direttiva become:yes tgħolli l-privileġġi tiegħek u tippermettilek li twettaq kompiti li jeħtieġu privileġġi tal-għeruq bħall-installazzjoni u aġġornament tal-pakketti u rebooting tas-sistema.

Ikkunsidra playbook httpd.yml li jinstalla u jibda l-webserver Apache kif muri:

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

Il-jsir: iva id-direttiva tippermettilek tesegwixxi kmandi bħala utent root fuq il-host remot.

Direttiva oħra li tista' tuża biex issir utent ieħor hija l-bear_user. Dan jippermettilek taqleb għal utent sudo fuq il-host remot malli tidħol u mhux l-utent li illoggja bħala.

Pereżempju, biex tmexxi kmand bħala utent tecmint fuq il-remot uża d-direttiva kif muri.

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

Din id-direttiva se tegħleb il-metodu default stabbilit fil-fajl ansible.cfg li normalment ikun issettjat għal sudo.

Dawn jintużaw fil-livell tal-logħob jew tal-kompitu, pereżempju meta jkollok bżonn taqleb għal utent meta l-qoxra tkun issettjata għal nologin.

Pereżempju,

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

Għażliet tal-linja tal-kmand fl-Eskalazzjoni tal-Privileġġ

Ejja nagħtu ħarsa lejn xi wħud mill-għażliet tal-linja tal-kmand li tista 'tuża biex tgħolli l-privileġġi tiegħek meta tħaddem il-kmandi:

  • --ask-become-pass, -K – Dan iqanqlek għall-password tal-utent sudo fis-sistema remota li qed tipprova tikkonnettja.< /li>

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

  • --become, -b – Dan jippermettilek tmexxi l-kompitu bħala utent root mingħajr ma titlob password.

$ ansible-playbook myplaybook.yml --become 

  • --become-user=BECOME_USER – Jippermettilek tmexxi l-kompiti bħala utent ieħor.

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

Ivvalida Konfigurazzjoni ta' Ħidma billi tuża Kmandi Ad-Hoc Ansible

Xi drabi, tista 'tkun trid twettaq kompiti ta' malajr u sempliċi fuq hosts jew servers remoti f'Ansible mingħajr ma neċessarjament ikollok għalfejn toħloq playbook. F'dak il-każ, tkun teħtieġ li tmexxi kmand ad hoc.

Kmand ad-hoc ansible huwa kmand b'linja waħda li jgħinek tesegwixxi kompiti sempliċi b'mod sempliċi iżda effiċjenti mingħajr il-ħtieġa li toħloq playbooks. Ħidmiet bħal dawn jinkludu l-ikkupjar ta’ fajls bejn l-hosts, il-bidu mill-ġdid ta’ servers, iż-żieda u t-tneħħija ta’ utenti u l-installazzjoni ta’ pakkett wieħed.

F'dan it-tutorja, nesploraw diversi applikazzjonijiet ta 'kmandi Ansible Ad-Hoc. Se nużaw il-fajl tal-inventarju hawn taħt għal dimostrazzjoni.

[webservers]
173.82.115.165

[database_servers]
173.82.202.239

L-aktar użu bażiku ta 'kmandi Ansible-Adhoc huwa pinging host jew grupp ta' hosts.

# ansible -m ping all

Fil-kmand ta 'hawn fuq, il-parametru -m huwa l-għażla tal-modulu. Ping huwa l-kmand adhoc u t-tieni parametru kollu jirrappreżenta l-hosts kollha fil-fajl tal-inventarju. L-output tal-kmand huwa muri hawn taħt:

Biex tagħmel ping, grupp partikolari ta 'hosts, ibdel il-parametru 'kollha' bl-isem tal-grupp. Fl-eżempju hawn taħt, qed nittestjaw il-konnettività ma 'hosts taħt il-grupp tal-webservers.

# ansible -m ping webservers

Barra minn hekk, tista' tuża l-attribut -a biex tispeċifika kmandi regolari tal-Linux bil-virgoletti doppji. Pereżempju, biex tiċċekkja l-uptime tas-sistema tas-sistemi remoti, agħmel:

# ansible -a "uptime" all

Biex tiċċekkja l-użu tad-disk ta 'hosts remoti run.

# ansible -a "df -Th" all

Hemm mijiet u mijiet ta 'moduli li tista' tuża mal-kmand Adhoc. Biex tara l-lista sħiħa ta 'moduli bid-deskrizzjonijiet tagħhom, mexxi l-kmand hawn taħt.

# ansible-doc -l

Biex tara informazzjoni dettaljata dwar modulu partikolari, mexxi l-kmand.

# ansible-doc module_name

Pereżempju, biex tfittex aktar dettalji dwar it-tħaddim tal-modulu yum:

# ansible-doc yum

Kmandi adhoc Ansible jistgħu jintużaw għall-installazzjoni u t-tneħħija ta 'pakketti bl-użu ta' maniġers ta 'pakketti yum u apt.

Biex tinstalla s-server tal-web Apache fuq il-host CentOS 7 taħt il-grupp tal-webservers fil-fajl tal-inventarju mexxi l-kmand:

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

Biex tivverifika l-installazzjoni tas-server tal-web Apache, idħol fil-klijent remot u mexxi.

# rpm -qa | grep httpd

Biex tneħħi Apache, sempliċiment ibdel l-istat minn preżenti għal assenti.

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

Għal darb'oħra, biex tikkonferma t-tneħħija tal-run httpd.

# rpm -qa | grep httpd

Kif osservat, il-pakketti tas-server tal-web Apache ġew imnaddaf.

Meta toħloq utenti, il-modulu 'utent' jiġi utli. Biex toħloq utent ġdid james b'password redhat fuq is-sistema tal-klijent database_server, agħti l-kmand.

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

Biex tikkonferma l-ħolqien tal-utent il-ġdid, mexxi l-kmand:

# ansible database_servers -a "id james"

Biex tneħħi l-utent, mexxi l-kmand:

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

Jekk qed tmexxi Ansible bħala utent regolari, Ansible jipprovdi eskalazzjoni tal-privileġġ f'hosts remoti billi tuża l-għażla --become biex takkwista privileġġi tal-għeruq u -k biex tħeġġeġ il-password.

Pereżempju, biex tmexxi l-kmand adhoc Ansible 'netstat -pnltu' bl-għażla privileġġata –-become u l-għażla -K biex tħeġġeġ il-password tal-utent tal-għeruq biex imexxi l-kmand .

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

Biex issir utent ieħor minbarra root, uża l-attribut --become-user.

Pereżempju biex tħaddem 'df -Th' bħala utent tecmint fuq il-hosts remoti u pront għall-password run:

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

Il-fatti jirreferu għal informazzjoni dettaljata dwar sistema. Dan jinkludi informazzjoni dwar l-indirizz IP, arkitettura tas-sistema, memorja, u CPU biex insemmu xi ftit.

Biex tirkupra informazzjoni dwar hosts remoti, mexxi l-kmand:

$ ansible all -m setup 

Ansible juża l-kopja tal-modulu biex tikkopja b'mod sigur fajls mill-kontroll Ansible għal hosts remoti multipli.

Hawn taħt hawn eżempju ta 'operazzjoni ta' kopja:

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

Il-kmand tikkopja l-fajl /var/log/secure fin-node Ansible Control lil hosts remoti fil-grupp ta 'webservers fid-destinazzjoni /tmp.

Tista' tuża l-modulu tal-fajl biex tbiddel il-permessi u l-pussess tal-fajl.

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

Barra minn hekk, tista’ tehmeż l-argumenti tas-sid u tal-grupp kif muri:

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

Tista' wkoll toħloq direttorji, b'mod simili għal mkdir -p kif muri.

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

Pereżempju,

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

F'dan l-artikolu, aħna nitfgħu dawl fuq kif tista 'tikkonfigura nodi ġestiti biex tmexxi kmandi ad-hoc ta' Ansible biex timmaniġġja hosts remoti. Nittamaw li sibtu utli. Agħtiha sparatura u għarrafna kif marret.