Weboldal keresés

A lehetséges felügyelt csomópontok konfigurálása és az ad-hoc parancsok futtatása – 3. rész


Az Ansible sorozat előző két cikkében elmagyaráztuk az Ansible alapvető összetevőit és az Ansible Control Node beállítását. Ebben a 3. részben bemutatjuk, hogyan konfigurálhatja az Ansible felügyelt csomópontokat ad-hoc parancsok futtatására távoli gazdagépeken.

Jelszó nélküli SSH-hitelesítés beállítása lehetséges felügyelt csomópontokhoz

Utolsó témánk összefoglalásaként, a távoli gazdagépek Ansible segítségével történő kezeléséhez jelszó nélküli SSH-hitelesítést kell beállítani az Ansible vezérlőcsomópont és a felügyelt gazdagépek között. Ez magában foglalja egy kulcspár létrehozását (nyilvános és privát SSH-kulcspár) az Ansible Control csomóponton, és a nyilvános kulcsot az összes távoli gazdagépre másolja. Ez egy döntő lépés lesz a jövőben, és nagyban megkönnyíti a munkáját.

Konfigurálja a jogosultság-kiterjesztést a felügyelt csomópontokon

Ha normál felhasználóként jelentkezik be, előfordulhat, hogy bizonyos feladatokat kell végrehajtania a felügyelt csomópontokon, amelyek magasabb szintű jogosultságokat vagy root jogosultságokat igényelnek. Ezek a feladatok közé tartozik a csomagkezelés, az új felhasználók és csoportok hozzáadása, valamint a rendszerkonfigurációk módosítása, hogy csak néhányat említsünk. Ennek eléréséhez meg kell hívnia bizonyos direktívákat a játékkönyvben, hogy a feladatokat privilegizált felhasználóként futtassa a távoli gazdagépeken.

válik

Az Ansible lehetővé teszi, hogy a felügyelt csomópont másik felhasználójává „legyen” a jelenleg bejelentkezetttől eltérő felhasználó. A become:yes direktíva megnöveli az Ön jogosultságait, és lehetővé teszi olyan feladatok végrehajtását, root jogosultságokat igényel, például csomagok telepítését és frissítését, valamint a rendszer újraindítását.

Fontolja meg a httpd.yml játékkönyvet, amely telepíti és elindítja az Apache webszervert az alábbi módon:

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

A become: yes direktíva lehetővé teszi, hogy parancsokat hajtson végre root felhasználóként a távoli gazdagépen.

be_felhasználó

Egy másik direktíva, amellyel másik felhasználóvá válhat, a become_user. Ez lehetővé teszi, hogy bejelentkezéskor egy sudo felhasználóra váltson a távoli gazdagépen, és ne arra a felhasználóra, akivel bejelentkezik.

Ha például egy parancsot tecmint felhasználóként szeretne futtatni a távoli eszközön, használja az alábbi utasítást.

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

váljon_módszer

Ez az utasítás felülírja az ansible.cfg fájlban beállított alapértelmezett metódust, amely általában sudo értékre van állítva.

vált_zászlók

Ezeket játék- vagy feladatszinten használják, például amikor egy felhasználóra kell váltani, amikor a shell nologin-re van állítva.

Például,

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

Parancssori opciók a jogosultság eszkalációban

Vessünk egy pillantást néhány parancssori beállításra, amelyek segítségével a parancsok futtatása közben növelheti jogosultságait:

  • ---ask-become-pass, -K – Ez kéri a sudo felhasználó jelszavát a távoli rendszeren, amelyhez csatlakozni próbál.
ansible-playbook myplaybook.yml --ask-become-pass

  • --become, -b – Ez lehetővé teszi, hogy a feladatot root felhasználóként futtassa anélkül, hogy jelszót kérne.
ansible-playbook myplaybook.yml --become 
  • --become-user=BECOME_USER – Lehetővé teszi a feladatok más felhasználóként történő futtatását.
ansible-playbook myplaybook.yml --become-user=tecmint

Érvényesítse a működő konfigurációt Ad-Hoc Ansible Commands használatával

Néha előfordulhat, hogy gyors és egyszerű feladatokat szeretne végrehajtani távoli gazdagépeken vagy kiszolgálókon az Ansible-ben anélkül, hogy feltétlenül létre kellene hoznia egy játékkönyvet. Ebben az esetben egy ad-hoc parancsot kell futtatnia.

Mi az adhoc parancs?

Egy lehetséges ad-hoc parancs egy egysoros parancs, amely segít egyszerű feladatok egyszerű, de hatékony végrehajtásában anélkül, hogy játékfüzeteket kellene létrehoznia. Ilyen feladatok közé tartozik a fájlok másolása a gazdagépek között, a szerverek újraindítása, a felhasználók hozzáadása és eltávolítása, valamint egyetlen csomag telepítése.

Ebben az oktatóanyagban az Ansible Ad-Hoc parancsok különféle alkalmazásait fedezzük fel. Az alábbi leltárfájlt fogjuk használni a bemutatóhoz.

[webservers]
173.82.115.165

[database_servers]
173.82.202.239

Az Adhoc parancsok alapvető használata

Az Ansible-Adhoc parancsok legalapvetőbb használata egy gazdagép vagy gazdagépcsoport pingelése.

ansible -m ping all

A fenti parancsban a -m paraméter a modul opció. A ping az adhoc parancs, a második paraméter pedig a leltárfájl összes gazdagépét jelenti. A parancs kimenete az alábbiakban látható:

A gazdagépek egy adott csoportjának pingeléséhez cserélje ki az „all” paramétert a csoport nevére. Az alábbi példában teszteljük a kapcsolatot a webszerverek csoportba tartozó gazdagépekkel.

ansible -m ping webservers

Ezenkívül használhatja a -a attribútumot a normál Linux-parancsok dupla idézőjelben történő megadására. Például a távoli rendszerek üzemidejének ellenőrzéséhez futtassa a következőt:

ansible -a "uptime" all

A távoli gazdagépek lemezhasználatának ellenőrzéséhez futtassa.

ansible -a "df -Th" all

Modulok százai és százai használhatók az Adhoc paranccsal. A modulok teljes listájának és leírásuknak megtekintéséhez futtassa az alábbi parancsot.

ansible-doc -l

Egy adott modul részletes információinak megtekintéséhez futtassa a parancsot.

ansible-doc module_name

Ha például további részleteket szeretne keresni a yum modul futtatásával kapcsolatban:

ansible-doc yum

Csomagok/szolgáltatások kezelése az Ansible segítségével

A lehetséges adhoc parancsok használhatók csomagok telepítésére és eltávolítására a yum és az apt csomagkezelők használatával.

Az Apache webszerver telepítéséhez a CentOS 7 gazdagépen a leltárfájl webszerverek csoportjában futtassa a következő parancsot:

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

Az Apache webszerver telepítésének ellenőrzéséhez jelentkezzen be a távoli kliensbe, és futtassa.

rpm -qa | grep httpd

Az Apache eltávolításához egyszerűen módosítsa az állapotot jelenről hiányzóra.

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

Ismét a httpd futtatás eltávolításának megerősítéséhez.

rpm -qa | grep httpd

Amint azt megfigyeltük, az Apache webszerver-csomagokat törölték.

Felhasználók és csoportok létrehozása az Ansible segítségével

Felhasználók létrehozásakor a „felhasználó” modul jól jön. Új james felhasználó létrehozásához redhat jelszóval az adatbázis_kiszolgálón, adja ki a parancsot.

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

Az új felhasználó létrehozásának megerősítéséhez futtassa a következő parancsot:

ansible database_servers -a "id james"

A felhasználó eltávolításához futtassa a következő parancsot:

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

Privilégiumok eszkalációja

Ha normál felhasználóként futtatja az Ansible-t, az Ansible biztosítja a jogosultságok kiszélesítését a távoli gazdagépeken a --become kapcsolóval a root jogosultságok megszerzéséhez, a -k opcióval pedig a jelszó bekéréséhez.

Például a „netstat -pnltu” Ansible adhoc parancs futtatásához a privilegizált –-become és a -K kapcsolóval, hogy a root felhasználó jelszava a parancs futtatásához.

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

Ha nem root felhasználó szeretne lenni, használja a --become-user attribútumot.

Például a „df -Th” futtatásához tecmint felhasználóként a távoli gazdagépeken, és a jelszó futtatásához:

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

Tények gyűjtése a gazdarendszerekről

A tények a rendszerrel kapcsolatos részletes információkra utalnak. Ez magában foglalja az IP-címre, a rendszer architektúrára, a memóriára és a CPU-ra vonatkozó információkat, hogy néhányat említsünk.

A távoli gazdagépekkel kapcsolatos információk lekéréséhez futtassa a következő parancsot:

ansible all -m setup 

Fájlátvitel/Fájlok másolása

Az Ansible a copy modul segítségével biztonságosan másolja a fájlokat az Ansible vezérlőből több távoli gazdagépre.

Az alábbiakban egy példa a másolási műveletre:

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

A parancs átmásolja az Ansible Control csomópontban található /var/log/secure fájlt a /tmp célhely webszerverek csoportjában lévő távoli gazdagépekre.

A fájlmodul segítségével módosíthatja az engedélyeket és a fájlok tulajdonjogát.

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

Ezenkívül hozzáfűzheti a tulajdonos és a csoport argumentumát az alábbi módon:

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

Létrehozhat könyvtárakat is, az mkdir -p-hoz hasonló módon, az ábrán látható módon.

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

Például,

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

Következtetés

Ebben a cikkben megvilágítjuk, hogyan konfigurálhatja a felügyelt csomópontokat Ansible ad-hoc parancsok futtatására a távoli gazdagépek kezeléséhez. Reméljük hasznosnak találtad. Próbálja ki, és tudassa velünk, hogyan sikerült.