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:
  1. Upravljanje softverskim paketima i spremištima u Ansibleu
  2. Upravljanje uslugama pomoću Ansiblea
  3. Upravljanje vatrozidom pomoću Ansiblea
  4. Arhiviranje datoteka ili mapa s Ansibleom
  5. Rasporedite zadatke s Ansibleom
  6. Upravljajte korisnicima i grupama s Ansibleom
  7. Stvorite datoteke i direktorije s Ansibleom
  8. Upravljanje pohranom uz Ansible
  9. 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.