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.