Kako koristiti Ansible module za zadatke sistemske administracije - 6. dio
U ovom 6. dijelu Ansible serije, pokrili smo nekoliko Ansible modula u prošlim temama, sada ćemo ići dublje i otkriti dodatne module koji su od pomoći u obavljanju niza zadataka administracije sistema.
Dobit ćete osnovnu ideju o svakom modulu i pogledati dostupne opcije za izvršavanje određenih zadataka.
Na ovoj stranici:
- Upravljanje softverskim paketima i repozitorijumima u Ansibleu
- Upravljanje uslugama koristeći Ansible
- Upravljanje zaštitnim zidom pomoću Ansiblea
- Arhiviranje datoteka ili mapa pomoću Ansible-a
- Planirajte zadatke pomoću Ansiblea
- Upravljajte korisnicima i grupama pomoću Ansiblea
- Kreirajte datoteke i direktorije pomoću Ansiblea
- Upravljanje pohranom pomoću Ansiblea
- Upravljanje sistemima datoteka pomoću Ansiblea
1. Upravljanje softverskim paketima i repozitorijumima u Ansibleu
Kada instalirate pakete na Linux sisteme, različite distribucije dolaze sa različitim menadžerima paketa. Za RedHat distribucije imamo yum & dnf, dok za Debian okuse, postoji apt.
Ansible dolazi sa modulom koji se zove package, koji eliminiše potrebu za korištenjem različitih menadžera paketa za različite sisteme. Automatski koristi odgovarajući paket menadžer glavnog sistema, čime se olakšava rad.
Instalirajte softverske pakete
Na primjer, da instalirate htop u grupu hostova koja se sastoji od Debian i RedHat distribucije, koristite paket modul kao prikazano u install_htop.yml priručniku ispod.
---
- name: Install htop on Ubuntu and CentOS
hosts: all
tasks:
- package:
name: htop
state: installed
NAPOMENA: Nazivi paketa mogu se razlikovati od jednog do drugog operativnog sistema. Na primjer, imamo httpd u Redhat distribucijama i Apache2 za Debian/Ubuntu sisteme koji svi označavaju Apache web server. Stoga treba biti posebno oprezan pri prenošenju ovih paketa. Obično je najbolje koristiti varijable ili uslovne iskaze.
2. Upravljanje uslugama koristeći Ansible
Zatim imamo servis modul, koji se koristi za upravljanje uslugama na Linux sistemima. Koristi se za pokretanje, zaustavljanje ili ponovno pokretanje usluge. Možete ga koristiti i za omogućavanje usluge tako da kada se sistem pokrene, automatski pokreće uslugu.
Pokrenite i omogućite uslugu
Na primjer, da pokrenete i omogućite Apache web server 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
Da zaustavite uslugu httpd, proslijedite atribut stoped.
---
- name: Stop httpd service
hosts: webservers
tasks:
- service:
name: httpd
state: stopped
Ponovo pokrenite uslugu
Da ponovo pokrenete uslugu httpd, proslijedite atribut restarted.
---
- name: Restart httpd service
hosts: webservers
tasks:
- service:
name: httpd
state: restarted
3. Upravljanje zaštitnim zidom pomoću Ansiblea
Još jedan važan zadatak koji administratori sistema preuzimaju je upravljanje zaštitnim zidom. U Ansible playbookovima, ovo je znatno olakšano sa firewalld i ufw modulima. Možete konfigurirati zaštitni zid da dozvoli ili blokira port ili uslugu ili čak adresu izvora.
Uskočimo i pogledajmo nekoliko primjera:
Otvorite/blokirajte Port 80 u firewalld-u
---
- name: Allow port 80
hosts: webservers
tasks:
-firewalld:
port: 80/tcp
permanent: yes
state: enabled
U priručniku iznad, port 80 je dozvoljen preko zaštitnog zida.
Opcija permanent: yes
nameće pravilo zaštitnog zida i čini ga postojanim nakon ponovnog pokretanja. Međutim, ovo pravilo se ne primjenjuje odmah. On stupa na snagu tek nakon ponovnog pokretanja. Da odmah primenite pravilo, koristite opciju odmah: da
.
Da navedete dozvoljene adrese, koristite naredbu source:0.0.0.0/0.
- firewalld:
source: 192.168.0.0/24
zone: public
state: enabled
Da biste naveli raspon portova kojima će biti dozvoljeno korištenje opcije porta na sljedeći način:
- firewalld:
port: 213-567/udp
permanent: yes
state: enabled
Za blokiranje porta promijenite opciju stanja u onemogućeno kao što je prikazano:
-firewalld:
port: 80/tcp
permanent: yes
state: disabled
Dodajte/blokirajte uslugu u firewalld-u
Osim dodavanja/blokiranja porta, ista pravila možete primijeniti i na uslugu. I to je prilično jednostavno. Samo koristite modul usluga i dodajte uslugu koju želite dodati i uvjerite se 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 pomoću Ansible-a
Arhiviranje se odnosi na kompresiju datoteke ili mape u format koji je lako prenosiv i manje veličine. Ansible se isporučuje s modulom koji se zove arhiva. Kompresovanje fajla je otprilike onoliko lako koliko može. Sve što je potrebno je navesti izvornu putanju datoteke i odredište komprimirane datoteke.
Komprimirajte direktorij
Razmotrite knjigu compress.yml u nastavku.
---
- hosts: webservers
tasks:
• name: Compress a folder
archive:
path: /opt/data/web
dest: /tmp/web.gz
Gore navedeni priručnik komprimira direktorij /opt/data/web i sprema ga u /tmp/web.gz.
Komprimirajte direktorij pomoću formata
Zadani format kompresije je .gz
, međutim, ovo se može specificirati korištenjem atributa format. Isprobajte sljedeći Playbook.
---
- hosts: webservers
Tasks:
- name: Create a zip archive
archive:
path: /opt/data/web
dest: /tmp/web
format: zip
Priručnik iznad komprimira /opt/data/web direktorij u /tmp/web.zip.
Dekomprimirajte datoteku
Također možete dekomprimirati komprimiranu datoteku koristeći atribut unarchive. Razmotrite donji priručnik.
---
- hosts: webservers
tasks:
- name:Uncompress /tmp/web.gz to/opt directory on Ansible controller
unarchive:
src: /tmp/web.bz2
dest: /opt/
Priručnik iznad dekomprimuje datoteku /opt/data/web.gz u /opt na Ansible kontroleru.
Dekomprimirajte datoteku na udaljenom čvoru
Da navedete udaljeni izvorni sistem 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
Priručnik iznad dekomprimuje datoteku /tmp/web.bz2 na udaljenom čvoru u /opt/ direktorij.
5. Planirajte zadatke pomoću Ansiblea
Cron modul pomaže u zakazivanju poslova u Ansible Playbooks.
Kreirajte zakazani zadatak
Razmotrite donji priručnik.
---
- 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 pokreće skriptu prisustva 5. aprila u 17:00.
Zakažite skriptu na određeni datum
Ako želite da zakažete da se ova skripta pokrene samo ako je 5. dan aprila ponedjeljak, tada koristite atribut dana u tjednu: 1. 0 označava nedjelju, a 6 subotu prema kron notaciji.
month: 4
day: 5
hour: 17
minute: 00
weekday: 1
Zvjezdica (*) u bilo kojem od ovih polja označava bilo koju vrijednost.
Pokrenite posao na spoju
Da biste pokrenuli posao 5. aprila u 17:00 bez obzira koji je dan u nedelji, 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
Da biste izvršili cron posao 5. dana svakog mjeseca u 17:00, koristite postavke ispod.
month: *
day: 5
hour: 17
minute: 00
weekday: *
Izvršite posao dnevno
Da biste izvršili cron posao svakodnevno u 17:00, postavite postavke vremena kao što je prikazano:
month: *
day: *
hour: 17
minute: 00
weekday: *
Izvršite posao svakih 5 sati
Da izvršite cron posao svakih 5 sati, koristite vrijednost koraka */5
kao što je prikazano.
month: *
day: *
hour: */5
minute: *
weekday: *
6. Upravljajte korisnicima i grupama pomoću Ansiblea
Također možete upravljati korisnicima i grupama unutar Ansible playbooks prilično bez napora.
Kreirajte novog korisnika
Da kreirate novog korisnika, koristite korisnički modul 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
Da uklonite korisnika, koristite naredbu remove: yes
.
- name: Remove the user 'Jack'
user:
name: Jack
state: absent
remove: yes
Kreirajte novu grupu
Da kreirate novu grupu, koristite modul grupe.
- name: Create a group
group:
name: developers
7. Kreirajte datoteke i direktorije pomoću Ansiblea
Za kreiranje datoteka direktorija koristite modul file.
Kreirajte novi direktorij
Na primjer, za kreiranje novog direktorija.
---
- hosts: webservers
tasks:
- name: Create a new directory
file:
path: /opt/app
state: directory
Možete dodati druge atribute kao što su dozvole vlasnika, grupe i 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 koristeći recurse: yes izjavu.
---
- hosts: webservers
tasks:
- name: Create directories recursively
file:
path: /opt/web/app
state: directory
owner: www-data
group: www-data
mode: 0644
recurse: yes
Kreirajte datoteku
Za kreiranje 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 pomoću Ansiblea
Modul lvg se koristi za konfigurisanje LVM volumena i grupa.
Kreirajte LVM grupu volumena
Razmotrite knjigu u nastavku:
---
- hosts: webservers
tasks:
• name: Create lVM volume group
lvg:
vg: vg1
pvs: /dev/sda1
pesize: 32
Ovo kreira grupu volumena na vrhu particije /dev/sda1
sa veličinom fizičkog opsega od 32 MB.
Nakon kreiranja, koristite modul lvol da kreirate logički volumen kao što je prikazano
Kreirajte logički volumen
---
- hosts: webservers
tasks:
- name: Create lVM volume
lvol:
vg: vg1
lv: lvol1
pvs: /dev/sda1
9. Upravljanje sistemima datoteka pomoću Ansiblea
Za kreiranje sistema datoteka na blok uređaju koristite modul filesystem.
Kreirajte sistem datoteka
Knjiga u nastavku kreira tip fajl sistema xfs na volumenu bloka.
---
- hosts: webservers
tasks:
- name: Create a filesystem
filesystem:
fstype: xfs
dev: /dev/vg1/lvol1
Montirajte sistem datoteka
Sljedeće možete nastaviti s montiranjem bloka bloka pomoću mount modula kao što je prikazano u priručniku ispod:
---
- hosts: webservers
tasks:
- name: Mount a filesystem
mount:
fstype: xfs
src: /dev/vg1/lvol1
path: /opt/web
state: mounted
Zaključak
Ovim je tema završena. Pokrili smo različite zadatke sistemske administracije koji se mogu postići posebnim ugrađenim modulima u Ansible Playbooks.