A lehetséges modulok használata rendszeradminisztrációs feladatokhoz – 6. rész
Az Ansible sorozat e6. részében bemutattunk néhány Ansible-modult a korábbi témákban, most mélyebbre megyünk, és további modulokat fedezünk fel, amelyek számos rendszeradminisztrációs feladat elvégzésében segítenek.
Alapvető ötletet kap az egyes modulokról, és áttekintheti az egyes feladatok elvégzésére rendelkezésre álló lehetőségeket.
Ezen az oldalon:
- Szoftvercsomagok és adattárak kezelése az Ansible-ben
- Szolgáltatások kezelése az Ansible használatával
- A tűzfal kezelése az Ansible segítségével
- Fájlok vagy mappák archiválása az Ansible segítségével
- Ütemezzen feladatokat az Ansible segítségével
- Felhasználók és csoportok kezelése az Ansible segítségével
- Hozzon létre fájlokat és könyvtárakat az Ansible segítségével
- Tárhelykezelés az Ansible segítségével
- Fájlrendszerek kezelése az Ansible segítségével
1. Szoftvercsomagok és adattárak kezelése az Ansible-ben
Csomagok Linux rendszerekre történő telepítésekor a különböző disztribúciókhoz különböző csomagkezelők tartoznak. A RedHat disztribúciókhoz van yum és dnf, míg a Debian ízekhez megfelelő.
Az Ansible egy package nevű modullal érkezik, amely szükségtelenné teszi a különböző rendszerekhez különböző csomagkezelők használatát. Automatikusan használja a gazdarendszer megfelelő csomagkezelőjét, ezzel megkönnyítve a munkát.
Szoftvercsomagok telepítése
Például a htop telepítéséhez gazdagépek csoportjába, amely a Debian és a RedHat disztribúciókat is tartalmazza, használja a csomag modult az alábbi install_htop.yml útmutatóban látható.
---
- name: Install htop on Ubuntu and CentOS
hosts: all
tasks:
- package:
name: htop
state: installed
MEGJEGYZÉS: A csomagnevek operációs rendszerenként eltérőek lehetnek. Például van httpd a Redhat disztribúciókban és Apache2 a Debian/Ubuntu rendszerekben, amelyek mindegyike az Apache-t jelöli. web szerver. Ezért fokozott óvatossággal kell eljárni ezen csomagok átadásakor. Általában a legjobb változókat vagy feltételes utasításokat használni.
2. Szolgáltatások kezelése az Ansible segítségével
Ezután van egy szolgáltatás modulunk, amelyet a Linux rendszerek szolgáltatásainak kezelésére használnak. Egy szolgáltatás indítására, leállítására vagy újraindítására szolgál. Használhatja szolgáltatás engedélyezésére is, így a rendszer indulásakor automatikusan elindítja a szolgáltatást.
Indítsa el és engedélyezze a szolgáltatást
Például az Apache webszerver elindításához és engedélyezéséhez az RHEL 8 rendszeren, használja a szolgáltatást az ábra szerint.
---
- name: Start and enable httpd service
hosts: webservers
tasks:
- service:
name: httpd
state: started
enabled: yes
Szolgáltatás leállítása
A httpd szolgáltatás leállításához adja át a stopped attribútumot.
---
- name: Stop httpd service
hosts: webservers
tasks:
- service:
name: httpd
state: stopped
Indítson újra egy szolgáltatást
A httpd szolgáltatás újraindításához adja át az restarted attribútumot.
---
- name: Restart httpd service
hosts: webservers
tasks:
- service:
name: httpd
state: restarted
3. A tűzfal kezelése az Ansible segítségével
A rendszergazdák másik fontos feladata a tűzfal kezelése. Az Ansible játékkönyvekben ez sokkal könnyebbé vált a tűzfal és az ufw modulokkal. A tűzfalat beállíthatja úgy, hogy engedélyezzen vagy blokkoljon egy portot vagy szolgáltatást, vagy akár egy forráscímet.
Ugorjunk bele, és nézzünk meg néhány példát:
Nyissa meg/blokkolja a 80-as portot a tűzfalban
---
- name: Allow port 80
hosts: webservers
tasks:
-firewalld:
port: 80/tcp
permanent: yes
state: enabled
A fenti útmutatóban a 80-as port megengedett a tűzfalon keresztül.
A permanent: yes
opció kényszeríti a tűzfalszabályt, és állandóvá teszi az újraindítások során. Ez a szabály azonban nem azonnal érvényes. Csak újraindítás után lép életbe. A szabály azonnali érvényesítéséhez használja az azonnali: igen
opciót.
Az engedélyezett címek megadásához használja a source:0.0.0.0/0 utasítást.
- firewalld:
source: 192.168.0.0/24
zone: public
state: enabled
A portok tartományának megadása a port opció használatára az alábbiak szerint:
- firewalld:
port: 213-567/udp
permanent: yes
state: enabled
A port blokkolásához állítsa az állapotbeállítást letiltva értékre, ahogy az ábrán látható:
-firewalld:
port: 80/tcp
permanent: yes
state: disabled
Szolgáltatás hozzáadása/letiltása a tűzfalban
A port hozzáadása/blokkolása mellett ugyanazokat a szabályokat is alkalmazhatja egy szolgáltatásra. És ez nagyon egyszerű. Csak használja a szolgáltatás modult, és fűzze hozzá a hozzáadni kívánt szolgáltatást, és győződjön meg arról, hogy az állapot opció engedélyezett értékre van állítva.
- firewalld:
service: https
permanent: true
state: enabled
A szolgáltatás letiltásához állítsa az állapot beállítást letiltva értékre.
- firewalld:
service: https
permanent: true
state: disabled
4. Fájlok vagy mappák archiválása az Ansible segítségével
Az archiválás egy fájl vagy mappa tömörítését jelenti olyan formátumba, amely könnyen hordozható és kisebb méretű. Az Ansible egy archívum nevű modullal kerül szállításra. A fájl tömörítése nagyjából olyan egyszerű, amilyen egyszerűen csak lehet. Csak meg kell adni a fájl forrásútvonalát és a tömörített fájl célját.
Címtár tömörítése
Tekintse meg az alábbi compress.yml játékkönyvet.
---
- hosts: webservers
tasks:
• name: Compress a folder
archive:
path: /opt/data/web
dest: /tmp/web.gz
A fenti útmutató tömöríti az /opt/data/web könyvtárat, és elmenti a /tmp/web.gz mappába.
Tömörítsen egy könyvtárat formátummal
Az alapértelmezett tömörítési formátum a .gz
, azonban ez megadható a format attribútummal. Vegyünk egy mintát a következő játékkönyvből.
---
- hosts: webservers
Tasks:
- name: Create a zip archive
archive:
path: /opt/data/web
dest: /tmp/web
format: zip
A fenti útmutató a /opt/data/web könyvtárat a /tmp/web.zip formátumba tömöríti.
Tömörítse ki a fájlt
A tömörített fájlokat az unarchive attribútummal is kibonthatja. Tekintsük az alábbi játékkönyvet.
---
- hosts: webservers
tasks:
- name:Uncompress /tmp/web.gz to/opt directory on Ansible controller
unarchive:
src: /tmp/web.bz2
dest: /opt/
A fenti útmutató az Ansible vezérlőn lévő /opt/data/web.gz fájlt /opt formátumba tömöríti.
Tömörítse ki a fájlt a távoli csomóponton
A távoli forrásrendszer megadásához használja a remote_src=yes
beállítást.
---
- hosts: webservers
tasks:
- name:Uncompress /tmp/web.bz2 to/opt on remote host
unarchive:
src: /tmp/web.bz2
dest: /opt/
remote_src=yes
A fenti útmutató kicsomagolja a távoli csomóponton lévő /tmp/web.bz2 fájlt az /opt/ könyvtárba.
5. Ütemezzen feladatokat az Ansible segítségével
A cron modul segít a feladatok ütemezésében az Ansible Playbooks-ban.
Hozzon létre egy ütemezett feladatot
Tekintsük az alábbi játékkönyvet.
---
- hosts: webservers
tasks:
- name: Create a scheduled task
cron:
name: Run employee attendance
job: sh /opt/scripts/attendace.sh
month: 4
day: 5
hour: 17
minute: 00
A játékkönyv április 5-én 17:00-kor futtatja a jelenléti forgatókönyvet.
Ütemezzen be egy szkriptet egy adott dátumra
Ha azt szeretné ütemezni, hogy ez a szkript csak akkor fusson, ha április 5. napja hétfő, akkor használja a hétköznap: 1 attribútumot. A 0 a vasárnapot, a 6 a szombatot jelöli a cron jelölése szerint.
month: 4
day: 5
hour: 17
minute: 00
weekday: 1
A mezők bármelyikében található csillag (*) bármilyen értéket jelez.
Futtasson munkát egy randevún
Ha a feladatot április 5-én 17:00-kor szeretné végrehajtani, függetlenül attól, hogy melyik nap van, használja a képen látható időparamétereket.
month: 4
day: 5
hour: 17
minute: 00
weekday: *
Végezzen munkát minden hónapban egy adott napon
A cron feladat végrehajtásához minden hónap 5. napján 17:00 órakor használja az alábbi beállításokat.
month: *
day: 5
hour: 17
minute: 00
weekday: *
Végezzen munkát a Daily-n
A cron feladat napi 17:00 órakor történő végrehajtásához állítsa be az időbeállításokat a képen látható módon:
month: *
day: *
hour: 17
minute: 00
weekday: *
Végezzen munkát 5 óránként
A cron feladat 5 óránkénti végrehajtásához használja a */5
lépésértéket az ábra szerint.
month: *
day: *
hour: */5
minute: *
weekday: *
6. Felhasználók és csoportok kezelése az Ansible segítségével
Az Ansible játékkönyveken belül is könnyedén kezelheti a felhasználókat és a csoportokat.
Hozzon létre egy új felhasználót
Új felhasználó létrehozásához használja a felhasználó modult az ábra szerint.
---
- hosts: webservers
tasks:
- name: Create a new user
user:
name: Jack
További lehetőségeket is hozzáadhat, például UID-t, csoportokat.
- name: Create a new user
user:
name: Jack
comment: Jack Peters
uid: 1002
group: administrators
shell: /bin/bash
Felhasználó eltávolítása
A felhasználó eltávolításához használja a remove: yes
utasítást.
- name: Remove the user 'Jack'
user:
name: Jack
state: absent
remove: yes
Hozzon létre egy új csoportot
Új csoport létrehozásához használja a csoport modult.
- name: Create a group
group:
name: developers
7. Hozzon létre fájlokat és könyvtárakat az Ansible segítségével
A könyvtárak fájljainak létrehozásához használja a fájl modult.
Hozzon létre egy új könyvtárat
Például egy új könyvtár létrehozásához.
---
- hosts: webservers
tasks:
- name: Create a new directory
file:
path: /opt/app
state: directory
Más attribútumokat is hozzáadhat, például tulajdonosi, csoport- és fájljogosultságokat.
- hosts: webservers
tasks:
- name: Create a new directory
file:
path: /opt/web
state: directory
owner: www-data
group: www-data
mode: 0644
Ezenkívül rekurzívan is létrehozhat könyvtárakat a recurse: yes utasítás használatával.
---
- hosts: webservers
tasks:
- name: Create directories recursively
file:
path: /opt/web/app
state: directory
owner: www-data
group: www-data
mode: 0644
recurse: yes
Hozzon létre egy fájlt
Fájl létrehozásához használja az state: touch
opciót.
---
- hosts: webservers
tasks:
- name: Create a new file
file:
path: /opt/web/index.html
state: touch
owner: www-data
group: www-data
mode: 0644
8. Tárolás kezelése az Ansible segítségével
Az lvg modul az LVM kötetek és csoportok konfigurálására szolgál.
Hozzon létre egy LVM kötetcsoportot
Fontolja meg az alábbi játékkönyvet:
---
- hosts: webservers
tasks:
• name: Create lVM volume group
lvg:
vg: vg1
pvs: /dev/sda1
pesize: 32
Ezzel létrejön egy kötetcsoport a /dev/sda1
partíció tetején, amelynek fizikai kiterjedése 32 MB.
A létrehozás után az lvol modul segítségével hozzon létre egy logikai kötetet az ábrán látható módon
Hozzon létre egy logikai kötetet
---
- hosts: webservers
tasks:
- name: Create lVM volume
lvol:
vg: vg1
lv: lvol1
pvs: /dev/sda1
9. Fájlrendszerek kezelése az Ansible segítségével
Ha fájlrendszert szeretne létrehozni egy blokkeszközön, használja a fájlrendszer modult.
Fájlrendszer létrehozása
Az alábbi útmutató létrehozza az xfs fájlrendszer típusát a blokkköteten.
---
- hosts: webservers
tasks:
- name: Create a filesystem
filesystem:
fstype: xfs
dev: /dev/vg1/lvol1
Csatlakoztasson egy fájlrendszert
Következő lépésként folytathatja a blokk kötet felcsatolását a mount modul használatával, az alábbi útmutató szerint:
---
- hosts: webservers
tasks:
- name: Mount a filesystem
mount:
fstype: xfs
src: /dev/vg1/lvol1
path: /opt/web
state: mounted
Következtetés
Ezzel a téma lezárult. Különféle rendszeradminisztrációs feladatokat ismertettünk, amelyeket az Ansible Playbooks beépített moduljaival lehet végrehajtani.