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.