Kaip naudoti galimus sistemos administravimo užduočių modulius - 6 dalis


Šioje kelių ankstesnių temų „Ansible“ modulių 6 dalyje dabar gilinsimės ir aptiksime papildomų modulių, kurie naudingi atliekant daugelį sistemos administravimo užduočių.

Gausite pagrindinę kiekvieno modulio idėją ir susipažinsite su galimybėmis atlikti tam tikras užduotis.

  1. Programinės įrangos paketų ir saugyklų valdymas esant galimybei
  2. Paslaugų valdymas naudojant „Ansible“
  3. Ugniasienės valdymas naudojant „Ansible“
  4. Failų ar aplankų archyvavimas naudojant „Ansible“
  5. Suplanuokite užduotis su „Ansible“
  6. Tvarkykite naudotojus ir grupes naudodami „Ansible“
  7. Kurkite failus ir katalogus naudodami „Ansible“
  8. Saugyklos valdymas naudojant „Ansible“
  9. Failų sistemų valdymas naudojant „Ansible“

Diegiant paketus „Linux“ sistemose, skirtingi paskirstymai pateikiami su skirtingais paketų tvarkytuvais. RedHat paskirstymams turime apt.

„Ansible“ yra modulis, vadinamas paketu, todėl nebereikia naudoti skirtingų paketų tvarkyklių skirtingoms sistemoms. Jis automatiškai naudoja atitinkamą prieglobos sistemos paketų tvarkytuvę, taip palengvindamas darbą.

Pvz., Norėdami įdiegti „htop“ kompiuterių grupėje, susidedančioje iš „Debian“ ir „RedHat“ distros, naudokite paketo modulį, kaip parodyta žemiau esančioje grojaraštyje install_htop.yml.

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

- package:
         name: htop
         state: installed

PASTABA: Kiekvienoje operacinėje sistemoje paketų pavadinimai gali skirtis. Pavyzdžiui, „Redhat“ paskirstymuose turime „httpd“ ir „Debian“/„Ubuntu“ sistemoms skirtus „Apache2“, kurie visi žymi „Apache“ serverį. Todėl praleidžiant šiuos paketus reikia būti ypač atsargiems. Paprastai geriausia naudoti kintamuosius ar sąlyginius teiginius.

Toliau mes turime paslaugų modulį, kuris naudojamas valdyti paslaugas „Linux“ sistemose. Jis naudojamas paleisti, sustabdyti ar iš naujo paleisti paslaugą. Taip pat galite ją naudoti įgalindami paslaugą, kad, kai sistema įsijungtų, ji automatiškai paleistų paslaugą.

Pvz., Norėdami paleisti ir įgalinti „Apache“ tinklo serverį RHEL 8, naudokitės paslauga, kaip parodyta.

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

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

Norėdami sustabdyti „httpd“ paslaugą, perduokite sustabdytą atributą.

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

- service:
         name: httpd
         state: stopped

Norėdami iš naujo paleisti „httpd“ paslaugą, perduokite iš naujo paleistą atributą.

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

- service:
         name: httpd
         state: restarted

Kita svarbi sistemos administratorių užduotis yra ugniasienės valdymas. „Ansible playbooks“ tai buvo daug lengviau naudojant „firewalld“ ir „ufw“ modulius. Galite sukonfigūruoti užkardą, kad ji leistų arba blokuotų prievadą, paslaugą ar net šaltinio adresą.

Pažvelkime į keletą pavyzdžių:

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

Aukščiau pateiktoje grojaraštyje 80 uostas leidžiamas per užkardą.

Parinktis permanent: yes įgyvendina užkardos taisyklę ir daro ją nuolatinę iš naujo paleidžiant. Tačiau ši taisyklė taikoma ne iš karto. Jis įsigalioja tik perkrovus. Norėdami nedelsdami vykdyti taisyklę, naudokite parinktį nedelsiant: taip .

Norėdami nurodyti leistinus adresus, naudokite šaltinį: 0.0.0.0/0.

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

Norėdami nurodyti prievadų diapazoną, kuriam leidžiama naudoti prievado parinktį taip:

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

Norėdami užblokuoti prievadą, pakeiskite būsenos parinktį į išjungtą, kaip parodyta:

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

Be prievado pridėjimo/blokavimo, paslaugai taip pat galite taikyti tas pačias taisykles. Ir tai gana paprasta. Tiesiog naudokitės paslaugų moduliu ir pridėkite pridėtą paslaugą ir įsitikinkite, kad būsenos parinktis yra įjungta.

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

Norėdami užblokuoti paslaugą, būsenos parinktį išjunkite.

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

Archyvavimas reiškia failo ar aplanko glaudinimą lengvai perkeliamu ir mažesnio dydžio formatu. Negalimi laivai su moduliu, vadinamu archyvu. Suspausti failą yra maždaug taip paprasta, kaip gaunasi. Viskas, ko reikia, yra nurodyti failo šaltinio kelią ir suglaudinto failo paskirties vietą.

Apsvarstykite žemiau esantį „playbook compress.yml“.

---
- hosts: webservers
  tasks:

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

Aukščiau pateiktas grojaraštis suglaudina/opt/data/web katalogą ir išsaugo jį aplanke /tmp/web.gz.

Numatytasis glaudinimo formatas yra .gz , tačiau tai galima nurodyti naudojant format atributą. Parinkite kitą „Playbook“ pavyzdį.

---
- hosts: webservers
  Tasks:

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

Aukščiau esanti grojaraštis suglaudina/opt/data/web katalogą į /tmp/web.zip.

Taip pat galite išpakuoti suglaudintą failą naudodami atarchyvą. Apsvarstykite toliau pateiktą pjesę.

---
- hosts: webservers
  tasks:

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

Aukščiau pateiktoje grojaraštyje išpakuojamas failas /opt/data/web.gz į/opt ant Ansible valdiklio.

Norėdami nurodyti nuotolinio šaltinio sistemą, naudokite parinktį 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 

Aukščiau pateiktoje grojaraštyje nesuspaudžiamas failas /tmp/web.bz2 nuotoliniame mazge į/opt/katalogą.

„Cron“ modulis padeda planuoti užduotis „Ansible Playbooks“.

Apsvarstykite toliau pateiktą pjesę.

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

Knygoje dalyvauja scenarijus balandžio 5 d., 17:00 val.

Jei norite suplanuoti, kad šis scenarijus bus vykdomas tik tuo atveju, jei balandžio 5 d. Yra pirmadienis, tada naudokite atributą „weekday: 1“. 0 reiškia sekmadienį, o 6 - šeštadienį pagal kronų žymėjimą.

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

Žvaigždutė (*) bet kuriame iš šių laukų rodo bet kokią vertę.

Norėdami vykdyti darbą balandžio 5 d. 17.00 val., Nesvarbu, kokia savaitės diena, naudokite laiko parametrus, kaip parodyta.

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

Norėdami atlikti „cron“ darbą kiekvieno mėnesio 5 dieną, 17:00, naudokite toliau pateiktus nustatymus.

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

Norėdami atlikti „cron“ užduotį kasdien 17:00, nustatykite laiko nustatymus, kaip parodyta:

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

Norėdami atlikti „cron“ darbą kas 5 valandas, naudokite žingsnio reikšmę */5 , kaip parodyta.

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

Taip pat gana lengvai galite valdyti „Ansible“ grojaraščių vartotojus ir grupes.

Norėdami sukurti naują vartotoją, naudokite vartotojo modulį, kaip parodyta.

---
- hosts: webservers
  tasks:

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

Taip pat galite pridėti papildomų parinkčių, tokių kaip UID, grupės.

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

Norėdami pašalinti vartotoją, naudokite teiginį remove: yes .

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

Norėdami sukurti naują grupę, naudokite grupės modulį.

- name: Create a group
  group:
    name: developers

Norėdami sukurti katalogų failus, naudokite failų modulį.

Pavyzdžiui, norint sukurti naują katalogą.

---
- hosts: webservers
  tasks:

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

Galite pridėti kitų atributų, tokių kaip savininkas, grupė ir failų leidimai.

- hosts: webservers
  tasks:

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

Be to, galite sukurti katalogus rekursyviai naudodami teiginį „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

Norėdami sukurti failą, naudokite parinktį 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

„LVV“ modulis naudojamas konfigūruoti LVM tomus ir grupes.

Apsvarstykite toliau pateiktą pjesę:

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

Tai sukuria tūrio grupę virš /dev/sda1 skaidinio, kurio fizinis dydis yra 32 MB.

Sukūrę, naudokite „lvol“ modulį, kad sukurtumėte loginį tūrį, kaip parodyta

---
    - hosts: webservers
      tasks: 

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

Norėdami sukurti failų sistemą blokiniame įrenginyje, naudokite failų sistemos modulį.

Žemiau pateiktoje grojaraštyje sukuriamas xfs failų sistemos tipas ant bloko tomo.

---
    - hosts: webservers
      tasks: 

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

Tada galite tęsti bloko tūrio montavimą naudodami prijungimo modulį, kaip parodyta žemiau esančiame grojaraštyje:

---
    - hosts: webservers
      tasks: 

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

Tai baigia temą. Mes apėmėme įvairias sistemos administravimo užduotis, kurias galima atlikti naudojant specialius įmontuotus „Ansible Playbooks“ modulius.