Kako koristiti Ansible module za zadatke administracije sustava - 6. dio
U ovom 6. dijelu serije Ansible, pokrili smo nekoliko Ansible modula u prošlim temama, sada ćemo ići dublje i otkriti dodatne module koji su korisni u obavljanju niza zadataka administracije sustava.
Dobit ćete osnovnu predodžbu o svakom modulu i pogledati mogućnosti koje su dostupne za izvršavanje određenih zadataka.
Na ovoj stranici:
- Upravljanje softverskim paketima i spremištima u Ansibleu
- Upravljanje uslugama pomoću Ansiblea
- Upravljanje vatrozidom pomoću Ansiblea
- Arhiviranje datoteka ili mapa s Ansibleom
- Rasporedite zadatke s Ansibleom
- Upravljajte korisnicima i grupama s Ansibleom
- Stvorite datoteke i direktorije s Ansibleom
- Upravljanje pohranom uz Ansible
- Upravljanje datotečnim sustavima s Ansibleom
1. Upravljanje softverskim paketima i spremištima u Ansibleu
Prilikom instaliranja paketa na Linux sustavima, različite distribucije dolaze s različitim upraviteljima paketa. Za RedHat distribucije imamo yum & dnf dok za Debian okuse postoji apt.
Ansible dolazi s modulom pod nazivom package, koji eliminira potrebu za korištenjem različitih upravitelja paketima za različite sustave. Automatski koristi odgovarajući upravitelj paketa glavnog sustava, čime olakšava rad.
Instalirajte softverske pakete
Na primjer, da biste instalirali htop u grupu hostova koja se sastoji od distribucija Debian i RedHat koristite modul package kao prikazano u priručniku install_htop.yml u nastavku.
---
- name: Install htop on Ubuntu and CentOS
hosts: all
tasks:
- package:
name: htop
state: installed
NAPOMENA: Nazivi paketa mogu se razlikovati od jednog operativnog sustava do drugog. Na primjer, imamo httpd u Redhat distribucijama i Apache2 za Debian/Ubuntu sustave koji svi označavaju Apache web poslužitelj. Stoga treba biti posebno oprezan pri prolasku ovih paketa. Obično je najbolje koristiti varijable ili uvjetne izjave.
2. Upravljanje uslugama pomoću Ansiblea
Zatim, imamo uslužni modul, koji se koristi za upravljanje uslugama na Linux sustavima. Koristi se za pokretanje, zaustavljanje ili ponovno pokretanje usluge. Možete ga koristiti i za omogućavanje usluge tako da kada se sustav podigne, automatski pokreće uslugu.
Pokrenite i omogućite uslugu
Na primjer, da biste pokrenuli i omogućili web poslužitelj Apache na RHEL 8, koristite uslugu kao što je prikazano.
---
- name: Start and enable httpd service
hosts: webservers
tasks:
- service:
name: httpd
state: started
enabled: yes
Zaustavite uslugu
Za zaustavljanje usluge httpd proslijedite atribut stopped.
---
- name: Stop httpd service
hosts: webservers
tasks:
- service:
name: httpd
state: stopped
Ponovno pokrenite uslugu
Za ponovno pokretanje usluge httpd proslijedite atribut restarted.
---
- name: Restart httpd service
hosts: webservers
tasks:
- service:
name: httpd
state: restarted
3. Upravljanje vatrozidom pomoću Ansiblea
Drugi važan zadatak administratora sustava je upravljanje vatrozidom. U knjigama za igru Ansible ovo je znatno lakše s modulima firewalld i ufw. Možete konfigurirati vatrozid da dopusti ili blokira priključak ili uslugu ili čak izvornu adresu.
Uskočimo i pogledajmo nekoliko primjera:
Otvori/blokiraj port 80 u vatrozidu
---
- name: Allow port 80
hosts: webservers
tasks:
-firewalld:
port: 80/tcp
permanent: yes
state: enabled
U gornjem priručniku, priključak 80 dopušten je preko vatrozida.
Opcija permanent: yes
nameće pravilo vatrozida i čini ga postojanim nakon ponovnog pokretanja. Međutim, ovo pravilo ne vrijedi odmah. Stupa na snagu tek nakon ponovnog pokretanja. Da biste odmah primijenili pravilo, koristite opciju odmah: da
.
Za navođenje dopuštenih adresa upotrijebite naredbu source:0.0.0.0/0.
- firewalld:
source: 192.168.0.0/24
zone: public
state: enabled
Da biste odredili raspon priključaka kojima je dopušteno koristiti opciju priključka na sljedeći način:
- firewalld:
port: 213-567/udp
permanent: yes
state: enabled
Za blokiranje priključka promijenite opciju stanja u onemogućeno kao što je prikazano:
-firewalld:
port: 80/tcp
permanent: yes
state: disabled
Dodajte/blokirajte uslugu u vatrozidu
Osim dodavanja/blokiranja priključka, ista pravila možete primijeniti i na uslugu. I vrlo je jednostavno. Samo upotrijebite modul usluga i dodajte uslugu koju želite dodati i osigurajte da je opcija stanja postavljena na omogućeno.
- firewalld:
service: https
permanent: true
state: enabled
Za blokiranje usluge postavite opciju stanje na onemogućeno.
- firewalld:
service: https
permanent: true
state: disabled
4. Arhiviranje datoteka ili mapa s Ansibleom
Arhiviranje se odnosi na kompresiju datoteke ili mape u format koji je lako prenosiv i manje je veličine. Ansible se isporučuje s modulom pod nazivom arhiva. Sažimanje datoteke gotovo je jednostavno. Sve što je potrebno je navesti izvorni put datoteke i odredište komprimirane datoteke.
Komprimirajte imenik
Razmotrite priručnik compress.yml u nastavku.
---
- hosts: webservers
tasks:
• name: Compress a folder
archive:
path: /opt/data/web
dest: /tmp/web.gz
Gornji priručnik sažima direktorij /opt/data/web i sprema ga u /tmp/web.gz.
Komprimirajte direktorij s formatom
Zadani format kompresije je .gz
, međutim, to se može odrediti pomoću atributa formata. Isprobajte sljedeći Playbook.
---
- hosts: webservers
Tasks:
- name: Create a zip archive
archive:
path: /opt/data/web
dest: /tmp/web
format: zip
Gornji vodič sažima direktorij /opt/data/web u /tmp/web.zip.
Dekomprimirajte datoteku
Komprimiranu datoteku možete dekomprimirati i pomoću atributa unarchive. Razmotrite priručnik u nastavku.
---
- hosts: webservers
tasks:
- name:Uncompress /tmp/web.gz to/opt directory on Ansible controller
unarchive:
src: /tmp/web.bz2
dest: /opt/
Gornji vodič dekomprimira datoteku /opt/data/web.gz u /opt na Ansible kontroleru.
Dekomprimirajte datoteku na udaljenom čvoru
Za navođenje udaljenog izvornog sustava koristite opciju 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
Gornji priručnik dekomprimira datoteku /tmp/web.bz2 na udaljenom čvoru u direktorij /opt/.
5. Rasporedite zadatke s Ansibleom
Modul cron pomaže u raspoređivanju poslova u Ansible Playbooks.
Napravite planirani zadatak
Razmotrite priručnik u nastavku.
---
- 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
Priručnik prikazuje skriptu prisutnosti 5. travnja u 17:00 sati.
Zakažite skriptu na određeni datum
Ako želite zakazati pokretanje ove skripte samo ako je 5. travnja ponedjeljak, tada koristite atribut radni dan: 1. 0 označava nedjelju, a 6 subotu prema cron notaciji.
month: 4
day: 5
hour: 17
minute: 00
weekday: 1
Zvjezdica (*) u bilo kojem od ovih polja označava bilo koju vrijednost.
Obavljajte posao na spoj
Za pokretanje posla 5. travnja u 17:00 bez obzira koji je radni dan, koristite vremenske parametre kao što je prikazano.
month: 4
day: 5
hour: 17
minute: 00
weekday: *
Izvršite posao na određeni dan svakog mjeseca
Za izvršavanje cron posla 5. dana svakog mjeseca u 17:00 upotrijebite donje postavke.
month: *
day: 5
hour: 17
minute: 00
weekday: *
Svakodnevno izvršavajte posao
Za izvršavanje cron posla svaki dan u 17:00 postavite vremenske postavke kao što je prikazano:
month: *
day: *
hour: 17
minute: 00
weekday: *
Izvršite posao svakih 5 sati
Za izvršavanje cron posla svakih 5 sati, koristite vrijednost koraka */5
kao što je prikazano.
month: *
day: *
hour: */5
minute: *
weekday: *
6. Upravljajte korisnicima i grupama s Ansibleom
Također možete bez napora upravljati korisnicima i grupama unutar Ansible playbooks.
Stvorite novog korisnika
Za stvaranje novog korisnika upotrijebite modul korisnik kao što je prikazano.
---
- hosts: webservers
tasks:
- name: Create a new user
user:
name: Jack
Također možete dodati dodatne opcije kao što su UID, grupe.
- name: Create a new user
user:
name: Jack
comment: Jack Peters
uid: 1002
group: administrators
shell: /bin/bash
Uklonite korisnika
Za uklanjanje korisnika upotrijebite naredbu remove: yes
.
- name: Remove the user 'Jack'
user:
name: Jack
state: absent
remove: yes
Stvorite novu grupu
Za izradu nove grupe upotrijebite modul grupa.
- name: Create a group
group:
name: developers
7. Stvorite datoteke i direktorije s Ansibleom
Za izradu datoteka direktorija koristite modul datoteka.
Stvorite novi direktorij
Na primjer, za stvaranje novog imenika.
---
- hosts: webservers
tasks:
- name: Create a new directory
file:
path: /opt/app
state: directory
Možete dodati druge atribute kao što su vlasnik, grupa i dozvole za datoteke.
- hosts: webservers
tasks:
- name: Create a new directory
file:
path: /opt/web
state: directory
owner: www-data
group: www-data
mode: 0644
Osim toga, možete kreirati direktorije rekurzivno pomoću naredbe 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
Stvorite datoteku
Za izradu datoteke koristite opciju 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. Upravljanje pohranom s Ansibleom
Modul lvg koristi se za konfiguriranje LVM volumena i grupa.
Stvorite LVM grupu volumena
Razmotrite priručnik u nastavku:
---
- hosts: webservers
tasks:
• name: Create lVM volume group
lvg:
vg: vg1
pvs: /dev/sda1
pesize: 32
Time se stvara grupa volumena na vrhu particije /dev/sda1
s veličinom fizičkog opsega od 32 MB.
Nakon izrade, upotrijebite modul lvol za stvaranje logičkog volumena kao što je prikazano
Stvorite logički volumen
---
- hosts: webservers
tasks:
- name: Create lVM volume
lvol:
vg: vg1
lv: lvol1
pvs: /dev/sda1
9. Upravljanje datotečnim sustavima s Ansibleom
Za stvaranje datotečnog sustava na blok uređaju koristite modul datotečni sustav.
Stvorite datotečni sustav
Priručnik u nastavku stvara vrstu datotečnog sustava xfs na blok volumenu.
---
- hosts: webservers
tasks:
- name: Create a filesystem
filesystem:
fstype: xfs
dev: /dev/vg1/lvol1
Montirajte datotečni sustav
Zatim možete nastaviti s montiranjem blok volumena pomoću modula mount kao što je prikazano u priručniku u nastavku:
---
- hosts: webservers
tasks:
- name: Mount a filesystem
mount:
fstype: xfs
src: /dev/vg1/lvol1
path: /opt/web
state: mounted
Zaključak
Ovim je tema zaključena. Pokrili smo različite zadatke administracije sustava koji se mogu izvršiti posebnim ugrađenim modulima u Ansible Playbooks.