Weboldal keresés

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:
  1. Szoftvercsomagok és adattárak kezelése az Ansible-ben
  2. Szolgáltatások kezelése az Ansible használatával
  3. A tűzfal kezelése az Ansible segítségével
  4. Fájlok vagy mappák archiválása az Ansible segítségével
  5. Ütemezzen feladatokat az Ansible segítségével
  6. Felhasználók és csoportok kezelése az Ansible segítségével
  7. Hozzon létre fájlokat és könyvtárakat az Ansible segítségével
  8. Tárhelykezelés az Ansible segítségével
  9. 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.