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:
  1. Upravljanje softverskim paketima i repozitorijumima u Ansibleu
  2. Upravljanje uslugama koristeći Ansible
  3. Upravljanje zaštitnim zidom pomoću Ansiblea
  4. Arhiviranje datoteka ili mapa pomoću Ansible-a
  5. Planirajte zadatke pomoću Ansiblea
  6. Upravljajte korisnicima i grupama pomoću Ansiblea
  7. Kreirajte datoteke i direktorije pomoću Ansiblea
  8. Upravljanje pohranom pomoću Ansiblea
  9. 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.