Vyhledávání na webu

Jak používat moduly Ansible pro úlohy správy systému – část 6


V této 6. části série Ansible jsme probrali několik modulů Ansible v minulých tématech, nyní půjdeme hlouběji a objevíme další moduly, které jsou užitečné při provádění řady úloh správy systému.

Získáte základní představu o každém modulu a podíváte se na dostupné možnosti pro splnění určitých úkolů.

Na této straně:
  1. Správa softwarových balíčků a úložišť v Ansible
  2. Správa služeb pomocí Ansible
  3. Správa brány firewall pomocí Ansible
  4. Archivace souborů nebo složek pomocí Ansible
  5. Naplánujte si úkoly s Ansible
  6. Spravujte uživatele a skupiny pomocí Ansible
  7. Vytvářejte soubory a adresáře pomocí Ansible
  8. Správa úložiště pomocí Ansible
  9. Správa souborových systémů pomocí Ansible

1. Správa softwarových balíčků a úložišť v Ansible

Při instalaci balíčků na systémy Linux přicházejí různé distribuce s různými správci balíčků. Pro distribuce RedHat máme yum & dnf, zatímco pro příchutě Debian existuje apt.

Ansible přichází s modulem nazvaným package, který eliminuje potřebu používat různé správce balíčků pro různé systémy. Automaticky používá odpovídající správce balíčků hostitelského systému, čímž usnadňuje práci.

Nainstalujte softwarové balíčky

Chcete-li například nainstalovat htop do skupiny hostitelů zahrnujících distribuce Debian a RedHat, použijte modul package jako zobrazený v níže uvedené příručce install_htop.yml.

---
- name: Install htop on Ubuntu and CentOS
  hosts: all
  tasks:

- package:
         name: htop
         state: installed

POZNÁMKA: Názvy balíčků se mohou v jednotlivých operačních systémech lišit. Například máme httpd v distribucích Redhat a Apache2 pro systémy Debian/Ubuntu, které všechny označují Apache webový server. Proto je třeba při předávání těchto balíků dbát zvýšené opatrnosti. Obvykle je nejlepší použít proměnné nebo podmíněné příkazy.

2. Správa služeb pomocí Ansible

Dále tu máme modul service, který slouží ke správě služeb na systémech Linux. Používá se ke spuštění, zastavení nebo restartování služby. Můžete jej také použít k povolení služby, takže když se systém spustí, automaticky spustí službu.

Spusťte a povolte službu

Chcete-li například spustit a povolit webový server Apache na RHEL 8, použijte službu podle obrázku.

---
- name: Start and enable httpd service
  hosts: webservers
  tasks:

- service:
         name: httpd
         state: started
	    enabled: yes

Zastavte službu

Chcete-li zastavit službu httpd, předejte atribut zastaveno.

---
- name: Stop httpd service
  hosts: webservers
  tasks:

- service:
         name: httpd
         state: stopped

Restartujte službu

Chcete-li restartovat službu httpd, předejte atribut restarted.

---
- name: Restart httpd service
  hosts: webservers
  tasks:

- service:
         name: httpd
         state: restarted

3. Správa brány firewall pomocí Ansible

Dalším důležitým úkolem systémových administrátorů je správa firewallu. V příručkách Ansible to bylo mnohem jednodušší díky modulům firewalld a ufw. Firewall můžete nakonfigurovat tak, aby povolil nebo zablokoval port nebo službu nebo dokonce zdrojovou adresu.

Pojďme do toho a podívejme se na několik příkladů:

Otevřete/zablokujte port 80 ve firewallu

---
- name: Allow port 80 
  hosts: webservers
  tasks: 
   
   -firewalld:
	port: 80/tcp
     permanent: yes
     state: enabled

Ve výše uvedené příručce je port 80 povolen přes bránu firewall.

Možnost permanent: yes vynucuje pravidlo brány firewall a činí jej trvalým po restartování. Toto pravidlo však neplatí okamžitě. Vstoupí v platnost až po restartu. Chcete-li pravidlo vynutit okamžitě, použijte možnost okamžité: ano.

Chcete-li zadat povolené adresy, použijte příkaz source:0.0.0.0/0.

- firewalld:
    source: 192.168.0.0/24
    zone: public
    state: enabled

Chcete-li určit rozsah portů, kterým bude povoleno používat volbu portu, postupujte takto:

- firewalld:
    port: 213-567/udp
    permanent: yes
    state: enabled

Chcete-li port zablokovat, změňte možnost stavu na deaktivováno, jak je znázorněno:

-firewalld:
	port: 80/tcp
     permanent: yes
     state: disabled

Přidat/zablokovat službu na firewallu

Kromě přidání/blokování portu můžete stejná pravidla použít i na službu. A je to docela jednoduché. Stačí použít modul service a připojit službu, která se má přidat, a zajistit, aby byla možnost stavu nastavena na povoleno.

- firewalld:
    service: https
    permanent: true
    state: enabled

Chcete-li službu zablokovat, nastavte možnost stav na deaktivováno.

- firewalld:
    service: https
    permanent: true
    state: disabled

4. Archivace souborů nebo složek pomocí Ansible

Archivace se týká komprese souboru nebo složky do formátu, který je snadno přenosný a má menší velikost. Ansible dodává modul s názvem archiv. Komprimace souboru je tak snadná, jak jen to jde. Vše, co je vyžadováno, je zadat zdrojovou cestu souboru a cíl komprimovaného souboru.

Komprimujte adresář

Zvažte níže uvedenou příručku compress.yml.

---
- hosts: webservers
  tasks:

    • name: Compress a folder
archive:
        path: /opt/data/web
        dest: /tmp/web.gz

Výše uvedená příručka komprimuje adresář /opt/data/web a uloží jej do /tmp/web.gz.

Komprimujte adresář pomocí formátu

Výchozí formát komprese je .gz, lze jej však určit pomocí atributu format. Vyzkoušejte další Příručku.

---
- hosts: webservers
  Tasks:

  - name: Create a zip archive 
    archive:
     path: /opt/data/web
     dest: /tmp/web
     format: zip

Příručka výše komprimuje adresář /opt/data/web do /tmp/web.zip.

Dekomprimujte soubor

Komprimovaný soubor můžete také dekomprimovat pomocí atributu unarchive. Zvažte níže uvedenou příručku.

---
- hosts: webservers
  tasks:

 - name:Uncompress /tmp/web.gz to/opt directory  on Ansible controller
   unarchive:
     src: /tmp/web.bz2
     dest: /opt/

Výše uvedená příručka dekomprimuje soubor /opt/data/web.gz na /opt na ovladači Ansible.

Dekomprimujte soubor na vzdáleném uzlu

Chcete-li určit vzdálený zdrojový systém, použijte volbu remote_src=yes.

---
- hosts: webservers
  tasks:

 - name:Uncompress /tmp/web.bz2 to/opt on remote host
   unarchive:
     src: /tmp/web.bz2
     dest: /opt/
     remote_src=yes 

Playbook výše dekomprimuje soubor /tmp/web.bz2 na vzdáleném uzlu do adresáře /opt/.

5. Naplánujte úkoly pomocí Ansible

Modul cron pomáhá při plánování úloh v Ansible Playbooks.

Vytvořte naplánovanou úlohu

Zvažte níže uvedenou příručku.

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

Příručka spouští docházkový scénář 5. dubna v 17:00.

Naplánujte si skript na konkrétní datum

Chcete-li naplánovat spuštění tohoto skriptu pouze v případě, že je 5. duben pondělí, použijte atribut den v týdnu: 1. 0 označuje neděli a 6 označuje sobotu podle cron notace.

month: 4
day: 5
hour: 17
minute: 00
weekday: 1

Hvězdička (*) v kterémkoli z těchto polí označuje jakoukoli hodnotu.

Spusťte úlohu na rande

Chcete-li spustit úlohu 5. dubna v 17:00 bez ohledu na den v týdnu, použijte časové parametry, jak je uvedeno na obrázku.

month: 4
day: 5
hour: 17
minute: 00
weekday: *

Proveďte zakázku v konkrétní den v každém měsíci

Chcete-li provést úlohu cron 5. den každého měsíce v 17:00, použijte níže uvedená nastavení.

month: *
day: 5
hour: 17
minute: 00
weekday: *

Proveďte úkol denně

Chcete-li provést úlohu cron denně v 17:00, nastavte čas podle obrázku:

month: *
day: *
hour: 17
minute: 00
weekday: *

Proveďte úlohu každých 5 hodin

Chcete-li provést úlohu cron každých 5 hodin, použijte hodnotu kroku */5, jak je uvedeno na obrázku.

month: *
day: *
hour: */5
minute: *
weekday: *

6. Správa uživatelů a skupin pomocí Ansible

Můžete také spravovat uživatele a skupiny v Ansible playbooks celkem bez námahy.

Vytvořit nového uživatele

Chcete-li vytvořit nového uživatele, použijte modul uživatel podle obrázku.

---
- hosts: webservers
  tasks:

 - name: Create a new user
   user: 
     name: Jack

Můžete také přidat další možnosti, jako je UID, skupiny.

- name: Create a new user
   user: 
      name: Jack
      comment: Jack Peters
          uid:   1002
      group: administrators
      shell:  /bin/bash

Odebrat uživatele

Chcete-li uživatele odebrat, použijte příkaz remove: yes.

- name: Remove the user 'Jack'
  user:
    name: Jack
    state: absent
    remove: yes

Vytvořte novou skupinu

K vytvoření nové skupiny použijte modul skupina.

- name: Create a group
  group:
    name: developers

7. Vytvářejte soubory a adresáře pomocí Ansible

Chcete-li vytvořit soubory adresářů, použijte modul soubor.

Vytvořte nový adresář

Například pro vytvoření nového adresáře.

---
- hosts: webservers
  tasks:

  - name: Create a new directory
    file: 
     path: /opt/app
     state: directory

Můžete přidat další atributy, jako je vlastník, skupina a oprávnění k souboru.

- hosts: webservers
  tasks:

  - name: Create a new directory
    file: 
     path: /opt/web
     state: directory
     owner: www-data
     group: www-data
     mode: 0644

Kromě toho můžete vytvářet adresáře rekurzivně pomocí příkazu recurse: yes.

---
- hosts: webservers
  tasks:

  - name: Create directories recursively
    file: 
     path: /opt/web/app
     state: directory
     owner: www-data
     group: www-data
     mode: 0644
recurse: yes

Vytvořte soubor

Chcete-li vytvořit soubor, použijte možnost state: touch.

---
- 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. Správa úložiště pomocí Ansible

Modul lvg se používá ke konfiguraci svazků a skupin LVM.

Vytvořte skupinu svazků LVM

Zvažte níže uvedenou příručku:

---
- hosts: webservers
  tasks: 
    • name: Create lVM volume group
lvg: 
 vg: vg1
 pvs: /dev/sda1
 pesize: 32

Tím se nad oddílem /dev/sda1 vytvoří skupina svazků s velikostí fyzického rozsahu 32 MB.

Po vytvoření použijte modul lvol k vytvoření logického svazku, jak je znázorněno

Vytvořte logický svazek

---
    - hosts: webservers
      tasks: 

       - name: Create lVM volume
    lvol: 
    vg: vg1
    lv: lvol1
    pvs: /dev/sda1

9. Správa souborových systémů pomocí Ansible

Chcete-li vytvořit systém souborů na blokovém zařízení, použijte modul systém souborů.

Vytvořte souborový systém

Níže uvedená příručka vytváří typ souborového systému xfs na svazku bloku.

---
    - hosts: webservers
      tasks: 

       - name: Create a filesystem
         filesystem:
         
           fstype: xfs
           dev: /dev/vg1/lvol1

Připojte souborový systém

Dále můžete přistoupit k připojení svazku bloku pomocí modulu mount, jak je znázorněno v níže uvedené příručce:

---
    - hosts: webservers
      tasks: 

       - name: Mount a filesystem
         mount:
         
           fstype: xfs
           src: /dev/vg1/lvol1
           path: /opt/web
           state: mounted
Závěr

Tím je téma uzavřeno. Pokryli jsme různé úlohy správy systému, které lze provádět pomocí specifických vestavěných modulů v Ansible Playbooks.