Wéi konfiguréieren Ansible Managed Noden a lafen ad-hoc Kommandoen - Deel 3


An de fréieren zwee Artikele vun dësem Opriichten Ansible Control Node. An dësem Deel 3 wäerte mir demonstréieren wéi Dir Ansible verwalteten Noden konfiguréiere kënnt fir ad-hoc Kommandoen op Remote Hosten auszeféieren.

Setup Passwuertlos SSH Authentifikatioun op Ansible Managed Noden

Als Recap iwwer eist lescht Thema, erfuerdert d'Gestioun vun Remote Hosten mat Ansible d'Astellung vun der Passwuertloser SSH Authentifikatioun tëscht dem Ansible Kontrollnode an de verwalteten Hosten. Dëst beinhalt d'Generatioun vun engem Schlësselpaar (Public a Private SSH Key Pair) um Ansible Control Node an d'Kopie vum Ëffentleche Schlëssel op all Fernhoster. Dëst wäert e entscheedende Schrëtt no vir sinn a wäert Är Aarbecht vill méi einfach maachen.

Konfiguréieren Privileg Eskalatioun op Managed Noden

Wann Dir als reguläre Benotzer ageloggt sidd, kënnt Dir verlaangt sinn verschidden Aufgaben op verwalteten Noden auszeféieren, déi erhiefte Privilegien oder Root Privilegien erfuerderen. Dës Aufgaben enthalen d'Packageverwaltung, d'Addéieren vun neie Benotzer & Gruppen, an d'Ännerung vun Systemkonfiguratiounen fir nëmmen e puer ze nennen. Fir dëst z'erreechen, musst Dir bestëmmte Direktiven am Playbook opruffen fir d'Aufgaben als privilegiéierte Benotzer op de Fernhosten auszeféieren.

Ansible erlaabt Iech en anere Benotzer op de verwalteten Node ze ginn anescht wéi deen dee momentan ageloggt ass. D'become:yes Direktiv erhéicht Är Privilegien an erlaabt Iech Aufgaben auszeféieren déi root Privilegien erfuerderen wéi z. Packagen aktualiséieren an de System nei starten.

Betruecht e Spillbuch httpd.yml deen den Apache Webserver installéiert an start wéi gewisen:

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

De gëtt: jo d'Direktiv erlaabt Iech Kommandoen als Root Benotzer um Fernhost auszeféieren.

Eng aner Direktiv déi Dir benotze kënnt fir en anere Benotzer ze ginn ass de become_user. Dëst erlaabt Iech op e Sudo Benotzer um Fernhost ze wiesselen wann Dir Iech ugemellt hutt an net de Benotzer wéi Dir Iech aloggen.

Zum Beispill, fir e Kommando als Tecmint Benotzer op der Fernseh ze lafen, benotzt d'Direktiv wéi gewisen.

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

Dës Direktiv iwwerschreift d'Standardmethod, déi an der ansible.cfg Datei festgeluecht ass, déi normalerweis op sudo gesat gëtt.

Dës ginn um Spill- oder Taskniveau benotzt, zum Beispill wann Dir op e Benotzer wiessele musst wann d'Schuel op Nologin gesat ass.

Zum Beispill,

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

Kommando-Linn Optiounen am Privileg Eskalatioun

Loosst eis e puer vun de Kommandozeiloptiounen kucken, déi Dir benotze kënnt fir Är Privilegien z'erhéijen wann Dir Kommandoen leeft:

  • --ask-become-pass, -K - Dëst freet Iech fir d'Passwuert vum Sudo Benotzer um Fernsystem deen Dir probéiert ze verbannen.< /li>

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

  • --become, -b - Dëst erlaabt Iech d'Task als root Benotzer auszeféieren ouni e Passwuert ze froen.

$ ansible-playbook myplaybook.yml --become 

  • --become-user=BECOME_USER - Et erlaabt Iech Aufgaben als en anere Benotzer auszeféieren.

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

Validéiert eng Aarbechtskonfiguratioun mat Ad-Hoc Ansible Kommandoen

Heiansdo wëllt Dir séier an einfach Aufgaben op Remote Hosten oder Serveren an Ansible ausféieren ouni onbedéngt e Spillbuch ze kreéieren. An dësem Fall musst Dir en ad-hoc Kommando ausféieren.

En ansible Ad-hoc Kommando ass e Kommando vun enger Linn, déi Iech hëlleft einfach Aufgaben op eng einfach awer effizient Manéier auszeféieren ouni d'Bedierfnes fir Playbooks ze kreéieren. Esou Aufgaben enthalen d'Kopie vun Dateien tëscht Hosten, Neistarten vun Serveren, d'Benotzer bäizefügen an ze läschen an en eenzege Package z'installéieren.

An dësem Tutorial entdecken mir verschidden Uwendungen vun Ansible Ad-Hoc Kommandoen. Mir benotzen d'Inventardatei hei ënnen fir eng Demonstratioun.

[webservers]
173.82.115.165

[database_servers]
173.82.202.239

Déi meescht Basis Notzung vun Ansible-Adhoc Kommandoen ass e Host oder eng Grupp vu Hosten ze pingelen.

# ansible -m ping all

Am uewe genannte Kommando ass de Parameter -m d'Moduloptioun. Ping ass den Adhoc Kommando an den zweete Parameter representéiert all Hosten an der Inventardatei. D'Ausgab vum Kommando gëtt hei ënnen gewisen:

Fir e Ping, eng bestëmmte Grupp vu Hosten, ersetzen 'all' Parameter mam Gruppnumm. Am Beispill hei drënner testen mir d'Konnektivitéit mat Hosten ënner der Webserver Grupp.

# ansible -m ping webservers

Zousätzlech kënnt Dir den -a Attribut benotze fir reegelméisseg Linux Kommandoen an duebel Zitaten ze spezifizéieren. Zum Beispill, fir Systemuptime vu Fernsystemer ze kontrolléieren, lafen:

# ansible -a "uptime" all

Fir d'Disknotzung vu Remote Hosten ze kontrolléieren lafen.

# ansible -a "df -Th" all

Et ginn Honnerte an Honnerte vu Moduler déi Dir mam Adhoc Kommando benotze kënnt. Fir d'ganz Lëscht vu Moduler mat hiren Beschreiwungen ze gesinn, fuert de Kommando hei ënnen.

# ansible-doc -l

Fir detailléiert Informatiounen iwwer e bestëmmte Modul ze gesinn, lafen de Kommando.

# ansible-doc module_name

Zum Beispill, fir méi Detailer iwwer de Yum Modul ze sichen:

# ansible-doc yum

Ansible Adhoc Kommandoe kënne benotzt ginn fir d'Installatioun an d'Entfernung vu Packagen mat yum an apt Package Manager ze benotzen.

Fir den Apache Webserver op der CentOS 7 Host ënner Webserver Grupp an der Inventardatei ze installéieren, fuert de Kommando:

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

Fir d'Installatioun vum Apache Webserver z'iwwerpréiwen, loggt Iech op de Remote Client a lafen.

# rpm -qa | grep httpd

Fir Apache z'installéieren, ännert einfach den Zoustand vun der aktueller an der absent.

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

Nach eng Kéier, fir d'Entfernung vum httpd Run ze bestätegen.

# rpm -qa | grep httpd

Wéi beobachtet, sinn Apache Webserver Packagen geläscht ginn.

Wann Dir Benotzer erstellt, kënnt de 'Benotzer' Modul praktesch. Fir en neie Benotzer James mat Passwuert Redhat op de Client System database_server ze kreéieren, gitt de Kommando aus.

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

Fir d'Schafe vum neie Benotzer ze bestätegen, fuert de Kommando:

# ansible database_servers -a "id james"

Fir de Benotzer ze läschen, fuert de Kommando:

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

Wann Dir Ansible als reguläre Benotzer leeft, bitt Ansible Privileg Eskalatioun an Fernhoster mat der --become Optioun fir Root Privilegien ze kréien an -k fir d'Passwuert ze froen.

Zum Beispill, fir den Ansible adhoc Kommando 'netstat -pnltu' mat der privilegéierter Optioun auszeféieren --become an Optioun -K fir de Root Benotzer Passwuert ze froen fir de Kommando auszeféieren. .

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

Fir en anere Benotzer wéi Root ze ginn, benotzt den --become-user Attribut.

Zum Beispill fir 'df -Th' als tecmint Benotzer op de Fernhoster auszeféieren an ze froen fir de Passwuert ze lafen:

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

Fakten bezéien sech op detailléiert Informatioun iwwer e System. Dëst beinhalt Informatiounen iwwer d'IP Adress, Systemarchitektur, Erënnerung an CPU fir e puer ze nennen.

Fir Informatiounen iwwer Remote Hosten ze recuperéieren, fuert de Kommando:

$ ansible all -m setup 

Ansible benotzt d'Modulkopie fir sécher Dateien vun der Ansible Kontroll op verschidde Fernhoster ze kopéieren.

Drënner ass e Beispill vun enger Kopie Operatioun:

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

De Kommando kopéiert d'/var/log/secure Datei am Ansible Control Node op Fernhoster an der Webservergrupp an der /tmp Destinatioun.

Dir kënnt de Dateimodul benotze fir Permissiounen an Dateiebesëtzer z'änneren.

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

Zousätzlech kënnt Dir d'Besëtzer an d'Grupp Argumenter addéieren wéi gewisen:

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

Dir kënnt och Verzeechnes erstellen, op eng ähnlech Manéier wéi mkdir -p wéi gewisen.

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

Zum Beispill,

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

An dësem Artikel werfe mir Liicht op wéi Dir verwalteten Noden konfiguréiere kënnt fir Ansible ad-hoc Kommandoen auszeféieren fir Remote Hosten ze managen. Mir hoffen Dir hutt et nëtzlech fonnt. Gitt et e Schoss a loosst eis wëssen wéi et gaangen ass.