Kako uporabljati odgovorne module za sistemska skrbniška opravila - 6. del


V tem 6. delu nekaj odgovornih modulov v preteklih temah bomo zdaj poglobili in odkrili dodatne module, ki so v pomoč pri izvajanju številnih nalog sistemske administracije.

Dobili boste osnovno predstavo o vsakem modulu in si ogledali možnosti, ki so na voljo za izvajanje določenih nalog.

  1. Upravljanje programskih paketov in skladišč v programu Ansible
  2. Upravljanje storitev s pomočjo programa Ansible
  3. Upravljanje požarnega zidu z Ansible
  4. Arhiviranje datotek ali map z Ansible
  5. Načrtujte naloge z Ansible
  6. Upravljanje uporabnikov in skupin z Ansible
  7. Ustvarite datoteke in imenike z Ansible
  8. Upravljanje shrambe z Ansible
  9. Upravljanje datotečnih sistemov z Ansible

Pri nameščanju paketov v sisteme Linux so različne distribucije opremljene z različnimi upravitelji paketov. Za distribucije RedHat imamo primerne.

Ansible je opremljen z modulom, imenovanim paket, ki odpravlja potrebo po uporabi različnih upraviteljev paketov za različne sisteme. Samodejno uporablja ustreznega upravitelja paketov gostiteljskega sistema in s tem olajša delo.

Na primer, da namestite htop v skupino gostiteljev, ki obsegata distribucije Debian in RedHat, uporabite paketni modul, kot je prikazano v spodnjem priročniku install_htop.yml.

---
- name: Install htop on Ubuntu and CentOS
  hosts: all
  tasks:

- package:
         name: htop
         state: installed

OPOMBA: Imena paketov se lahko razlikujejo od operacijskega sistema do operacijskega sistema. Na primer, httpd imamo v distribucijah Redhat in Apache2 za sisteme Debian/Ubuntu, ki označujejo spletni strežnik Apache. Zato je potrebna posebna previdnost pri podajanju teh paketov. Običajno je najbolje uporabiti spremenljivke ali pogojne stavke.

Nato imamo servisni modul, ki se uporablja za upravljanje storitev v sistemih Linux. Uporablja se za zagon, zaustavitev ali ponovni zagon storitve. Uporabite ga lahko tudi za omogočanje storitve, tako da ob zagonu sistema samodejno zažene storitev.

Če želite na primer zagnati in omogočiti spletni strežnik Apache na RHEL 8, uporabite storitev, kot je prikazano.

---
- name: Start and enable httpd service
  hosts: webservers
  tasks:

- service:
         name: httpd
         state: started
	    enabled: yes

Če želite ustaviti storitev httpd, podajte atribut stop.

---
- name: Stop httpd service
  hosts: webservers
  tasks:

- service:
         name: httpd
         state: stopped

Če želite znova zagnati storitev httpd, podajte vnovič zagnani atribut.

---
- name: Restart httpd service
  hosts: webservers
  tasks:

- service:
         name: httpd
         state: restarted

Druga pomembna naloga sistemskih skrbnikov je upravljanje požarnega zidu. V Ansible playbooks je to z moduli požarni zid in ufw veliko lažje. Požarni zid lahko konfigurirate tako, da dovoli ali blokira vrata ali storitve ali celo izvorni naslov.

Skočimo in si oglejmo nekaj primerov:

---
- name: Allow port 80 
  hosts: webservers
  tasks: 
   
   -firewalld:
	port: 80/tcp
     permanent: yes
     state: enabled

V zgornji knjigi iger so vrata 80 dovoljena čez požarni zid.

Možnost permanent: yes uveljavi pravilo požarnega zidu in ga vztraja pri ponovnem zagonu. Vendar to pravilo ne velja takoj. Velja šele po ponovnem zagonu. Če želite pravilo uveljaviti takoj, uporabite možnost takoj: da .

Če želite določiti dovoljene naslove, uporabite stavek source: 0.0.0.0/0.

- firewalld:
    source: 192.168.0.0/24
    zone: public
    state: enabled

Če želite določiti obseg vrat, ki jim bo dovoljena uporaba možnosti vrat, kot sledi:

- firewalld:
    port: 213-567/udp
    permanent: yes
    state: enabled

Če želite blokirati vrata, spremenite možnost stanja na onemogočeno, kot je prikazano:

-firewalld:
	port: 80/tcp
     permanent: yes
     state: disabled

Poleg dodajanja/blokiranja vrat lahko enaka pravila uporabite tudi za storitev. In to je povsem preprosto. Samo uporabite servisni modul in dodajte storitev, ki jo želite dodati, ter zagotovite, da je možnost stanja nastavljena na omogočeno.

- firewalld:
    service: https
    permanent: true
    state: enabled

Če želite blokirati storitev, nastavite možnost države na onemogočeno.

- firewalld:
    service: https
    permanent: true
    state: disabled

Arhiviranje se nanaša na stiskanje datoteke ali mape v obliko, ki je lahko prenosljiva in manjša. Ansible je poslan z modulom, imenovanim arhiv. Stiskanje datoteke je približno tako enostavno kot hitro. Vse, kar je potrebno, je določiti izvorno pot datoteke in cilj stisnjene datoteke.

Spodaj razmislite o knjigi za kompresije.

---
- hosts: webservers
  tasks:

    • name: Compress a folder
archive:
        path: /opt/data/web
        dest: /tmp/web.gz

Zgornji priročnik stisne/opt/data/spletni imenik in ga shrani v /tmp/web.gz.

Privzeti format stiskanja je .gz , vendar ga lahko določite z atributom format. Vzorec naslednje Playbook.

---
- hosts: webservers
  Tasks:

  - name: Create a zip archive 
    archive:
     path: /opt/data/web
     dest: /tmp/web
     format: zip

Zgornja knjiga navodil za stiskanje/opt/data/spletni imenik stisne v /tmp/web.zip.

Stisnjeno datoteko lahko tudi stisnete z uporabo atributa za arhiviranje. Razmislite o spodnji knjigi iger.

---
- hosts: webservers
  tasks:

 - name:Uncompress /tmp/web.gz to/opt directory  on Ansible controller
   unarchive:
     src: /tmp/web.bz2
     dest: /opt/

Zgornja knjižica datotek /opt/data/web.gz stisne v/opt na krmilniku Ansible.

Če želite določiti sistem oddaljenega vira, uporabite možnost 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 

Zgornja knjižica datotek /tmp/web.bz2 na oddaljenem vozlišču stisne v imenik/opt /.

Modul cron pomaga pri razporejanju opravil v Ansible Playbooks.

Razmislite o spodnji knjigi iger.

---
- 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

V knjigi predstavitev je 5. aprila ob 17.00 predstavljen scenarij za udeležbo.

Če želite razporediti izvajanje tega skripta samo, če je 5. april ponedeljek, uporabite atribut dayday: 1. 0 označuje nedeljo, 6 pa soboto glede na cron zapis.

month: 4
day: 5
hour: 17
minute: 00
weekday: 1

Zvezdica (*) v katerem koli od teh polj označuje katero koli vrednost.

Če želite opravilo opraviti 5. aprila ob 17:00, ne glede na delovni dan, uporabite časovne parametre, kot je prikazano.

month: 4
day: 5
hour: 17
minute: 00
weekday: *

Če želite opraviti opravilo cron 5. dan vsakega meseca ob 17:00, uporabite spodnje nastavitve.

month: *
day: 5
hour: 17
minute: 00
weekday: *

Če želite vsak dan izvrševati opravilo cron ob 17:00, nastavite nastavitve časa, kot je prikazano:

month: *
day: *
hour: 17
minute: 00
weekday: *

Če želite opraviti opravilo cron vsakih 5 ur, uporabite vrednost koraka */5 , kot je prikazano.

month: *
day: *
hour: */5
minute: *
weekday: *

Prav tako lahko povsem enostavno upravljate uporabnike in skupine v igranih knjigah Ansible.

Če želite ustvariti novega uporabnika, uporabite uporabniški modul, kot je prikazano.

---
- hosts: webservers
  tasks:

 - name: Create a new user
   user: 
     name: Jack

Dodate lahko tudi dodatne možnosti, kot so UID, skupine.

- name: Create a new user
   user: 
      name: Jack
      comment: Jack Peters
          uid:   1002
      group: administrators
      shell:  /bin/bash

Če želite uporabnika odstraniti, uporabite stavek remove: yes .

- name: Remove the user 'Jack'
  user:
    name: Jack
    state: absent
    remove: yes

Če želite ustvariti novo skupino, uporabite modul skupine.

- name: Create a group
  group:
    name: developers

Če želite ustvariti datoteke iz imenikov, uporabite datotečni modul.

Na primer, da ustvarite nov imenik.

---
- hosts: webservers
  tasks:

  - name: Create a new directory
    file: 
     path: /opt/app
     state: directory

Dodate lahko druge atribute, kot so dovoljenja lastnika, skupine in datoteke.

- hosts: webservers
  tasks:

  - name: Create a new directory
    file: 
     path: /opt/web
     state: directory
     owner: www-data
     group: www-data
     mode: 0644

Poleg tega lahko imenike rekurzivno ustvarite z uporabo stavka rekurz: da.

---
- hosts: webservers
  tasks:

  - name: Create directories recursively
    file: 
     path: /opt/web/app
     state: directory
     owner: www-data
     group: www-data
     mode: 0644
recurse: yes

Če želite ustvariti datoteko, uporabite 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

Modul lvg se uporablja za konfiguriranje nosilcev in skupin LVM.

Razmislite o spodnji knjigi iger:

---
- hosts: webservers
  tasks: 
    • name: Create lVM volume group
lvg: 
 vg: vg1
 pvs: /dev/sda1
 pesize: 32

To ustvari skupino nosilcev na particiji /dev/sda1 s fizičnim obsegom 32 MB.

Ko je enkrat ustvarjen, z modulom lvol ustvarite logični nosilec, kot je prikazano

---
    - hosts: webservers
      tasks: 

       - name: Create lVM volume
    lvol: 
    vg: vg1
    lv: lvol1
    pvs: /dev/sda1

Če želite ustvariti datotečni sistem v blokovni napravi, uporabite modul datotečnega sistema.

Spodnja knjižica ustvarja vrsto datotečnega sistema xfs na nosilcu bloka.

---
    - hosts: webservers
      tasks: 

       - name: Create a filesystem
         filesystem:
         
           fstype: xfs
           dev: /dev/vg1/lvol1

Nato lahko nadaljujete z namestitvijo nosilca bloka z modulom za pritrditev, kot je prikazano v spodnji knjigi predvajanja:

---
    - hosts: webservers
      tasks: 

       - name: Mount a filesystem
         mount:
         
           fstype: xfs
           src: /dev/vg1/lvol1
           path: /opt/web
           state: mounted

S tem je tema zaključena. Obravnavali smo različne naloge sistemske administracije, ki jih lahko opravijo posebni vgrajeni moduli v Ansible Playbooks.