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ě:
- Správa softwarových balíčků a úložišť v Ansible
- Správa služeb pomocí Ansible
- Správa brány firewall pomocí Ansible
- Archivace souborů nebo složek pomocí Ansible
- Naplánujte si úkoly s Ansible
- Spravujte uživatele a skupiny pomocí Ansible
- Vytvářejte soubory a adresáře pomocí Ansible
- Správa úložiště pomocí Ansible
- 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.