Jinsi ya Kutumia Moduli Zinazofaa kwa Majukumu ya Kusimamia Mfumo - Sehemu ya 6


Katika Sehemu hii ya 6 ya moduli chache Zinazofaa katika mada zilizopita, sasa tutaingia ndani zaidi na kugundua moduli za ziada ambazo ni muhimu katika kutekeleza idadi ya majukumu ya usimamizi wa mfumo.

Utapata wazo la msingi la kila moduli na uangalie chaguzi zinazopatikana za kukamilisha kazi fulani.

  1. Kudhibiti Vifurushi vya Programu na Hifadhi katika Ansible
  2. Kusimamia Huduma Kwa Kutumia Zinazofaa
  3. Kudhibiti Firewall kwa Ansible
  4. Kuweka kwenye kumbukumbu Faili au Folda zenye Zinazofaa
  5. Ratibu Majukumu na Yanayowezekana
  6. Dhibiti Watumiaji na Vikundi kwa Kuwajibika
  7. Unda Faili na Saraka ukitumia Zinazotumika
  8. Kudhibiti Uhifadhi kwa Kuwajibika
  9. Kusimamia Mifumo ya Faili kwa Kuwajibika

Wakati wa kusakinisha vifurushi kwenye mifumo ya Linux, usambazaji tofauti huja na wasimamizi tofauti wa vifurushi. Kwa usambazaji wa RedHat, tunayo apt.

Ansible inakuja na moduli inayoitwa kifurushi, ambayo huondoa hitaji la kutumia wasimamizi wa vifurushi tofauti kwa mifumo tofauti. Inatumia kiotomatiki kidhibiti cha kifurushi kinacholingana cha mfumo wa mwenyeji, na hivyo kurahisisha kazi.

Kwa mfano, kusakinisha htop katika kundi la wapangishi wanaojumuisha eneo la Debian na RedHat tumia sehemu ya kifurushi kama inavyoonyeshwa kwenye kitabu cha kucheza cha install_htop.yml hapa chini.

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

- package:
         name: htop
         state: installed

KUMBUKA: Majina ya vifurushi yanaweza kutofautiana kutoka kwa mfumo endeshi mmoja hadi mwingine. Kwa mfano, tuna httpd katika usambazaji wa Redhat na Apache2 kwa mifumo ya Debian/Ubuntu ambayo yote yanaashiria Apache webserver. Kwa hiyo, tahadhari zaidi inapaswa kuchukuliwa wakati wa kupitisha vifurushi hivi. Kwa kawaida, ni bora kutumia vigezo au kauli za masharti.

Ifuatayo, tuna moduli ya huduma, ambayo hutumiwa kusimamia huduma kwenye mifumo ya Linux. Inatumika kuanzisha, kusimamisha au kuanzisha upya huduma. Unaweza pia kuitumia kuwezesha huduma ili mfumo unapoanza, itaanza huduma kiatomati.

Kwa mfano, ili kuanza na kuwezesha seva ya wavuti ya Apache kwenye RHEL 8, tumia huduma kama inavyoonyeshwa.

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

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

Ili kusimamisha huduma ya httpd, pitisha sifa iliyosimamishwa.

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

- service:
         name: httpd
         state: stopped

Ili kuanzisha upya huduma ya httpd, pitisha sifa iliyoanzishwa upya.

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

- service:
         name: httpd
         state: restarted

Mwingine muhimu wasimamizi wa mfumo wa kazi hufanya ni usimamizi wa ngome. Katika vitabu vya kucheza vya Ansible, hii imerahisishwa zaidi na moduli za firewalld na ufw. Unaweza kusanidi ngome ili kuruhusu au kuzuia mlango au huduma au hata anwani ya chanzo.

Hebu tuzame na tuangalie mifano michache:

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

Katika kitabu cha kucheza hapo juu, port 80 inaruhusiwa kote kwenye ngome.

Chaguo ya kudumu: ndiyo hutekeleza sheria ya ngome na kuifanya iendelee katika kuwashwa upya. Hata hivyo, sheria hii haitumiki mara moja. Inaanza kutumika tu baada ya kuwasha upya. Ili kutekeleza sheria hiyo mara moja, tumia chaguo mara moja: ndio.

Ili kubainisha anwani zinazoruhusiwa, tumia taarifa ya chanzo:0.0.0.0/0.

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

Ili kubainisha anuwai ya milango kuruhusiwa kutumia chaguo la mlango kama ifuatavyo:

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

Ili kuzuia mlango, badilisha chaguo la hali kuwa kizimwa kama inavyoonyeshwa:

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

Kando na kuongeza/kuzuia bandari, unaweza pia kutumia sheria sawa kwenye huduma. Na ni rahisi sana. Tumia tu moduli ya huduma na uongeze huduma ya kuongezwa na uhakikishe kuwa chaguo la serikali limewekwa kuwezeshwa.

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

Ili kuzuia huduma, weka chaguo la serikali kwa walemavu.

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

Kuweka kwenye kumbukumbu kunarejelea mgandamizo wa faili au folda kwa umbizo ambalo ni rahisi kubebeka na saizi ndogo. Meli zinazofaa na moduli inayoitwa kumbukumbu. Kukandamiza faili ni rahisi kama inavyopata. Yote ambayo inahitajika ni kutaja njia ya chanzo cha faili na marudio ya faili iliyoshinikwa.

Fikiria kitabu cha kucheza compress.yml hapa chini.

---
- hosts: webservers
  tasks:

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

Kitabu cha kucheza kilicho hapo juu kinabana /opt/data/web saraka na kuihifadhi kwa /tmp/web.gz.

Umbizo la mbano chaguomsingi ni .gz, hata hivyo, hii inaweza kubainishwa kwa kutumia sifa ya umbizo. Sampuli Playbook inayofuata.

---
- hosts: webservers
  Tasks:

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

Kitabu cha kucheza hapo juu kinabana /opt/data/web directory hadi /tmp/web.zip.

Unaweza pia kubandua faili iliyobanwa kwa kutumia sifa ya kutohifadhi kumbukumbu. Fikiria kitabu cha kucheza hapa chini.

---
- hosts: webservers
  tasks:

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

Kitabu cha kucheza hapo juu kinapunguza faili /opt/data/web.gz ili /chagua kidhibiti Kinachostahili.

Ili kubainisha mfumo wa chanzo cha mbali tumia chaguo la 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 

Kitabu cha kucheza hapo juu kinapunguza faili /tmp/web.bz2 kwenye nodi ya mbali hadi kwenye saraka /opt/.

Moduli ya cron husaidia katika kuratibu kazi katika Vitabu vya kucheza vinavyostahiki.

Fikiria kitabu cha kucheza hapa chini.

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

Kitabu cha kucheza kinaendesha hati ya mahudhurio tarehe 5 Aprili saa 5:00 jioni.

Iwapo ungependa kuratibu hati hii kutekelezwa ikiwa tu siku ya 5 ya Aprili ni Jumatatu, basi tumia siku ya juma: sifa 1. 0 inaashiria Jumapili na 6 inaashiria Jumamosi kulingana na nukuu ya cron.

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

Nyota (*) katika sehemu yoyote kati ya hizi huonyesha thamani yoyote.

Ili kutekeleza kazi hiyo tarehe 5 Aprili saa 5:00 usiku bila kujali siku ya kazi ni nini, tumia vigezo vya muda kama inavyoonyeshwa.

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

Ili kutekeleza kazi ya cron siku ya 5 ya kila mwezi saa 5:00 jioni tumia mipangilio iliyo hapa chini.

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

Ili kutekeleza kazi ya cron kila siku saa 5:00 jioni weka mipangilio ya wakati kama inavyoonyeshwa:

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

Ili kutekeleza kazi ya cron kila baada ya saa 5, tumia thamani ya hatua */5 kama inavyoonyeshwa.

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

Unaweza pia kudhibiti watumiaji na vikundi ndani ya vitabu vya kucheza vya Ansible kwa urahisi.

Ili kuunda mtumiaji mpya, tumia moduli ya mtumiaji kama inavyoonyeshwa.

---
- hosts: webservers
  tasks:

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

Unaweza pia kuongeza chaguzi za ziada kama vile UID, vikundi.

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

Ili kumwondoa mtumiaji, tumia taarifa ya ondoa: ndiyo.

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

Ili kuunda kikundi kipya, tumia moduli ya kikundi.

- name: Create a group
  group:
    name: developers

Ili kuunda faili za saraka, tumia moduli ya faili.

Kwa mfano, kuunda saraka mpya.

---
- hosts: webservers
  tasks:

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

Unaweza kuongeza sifa nyingine kama vile ruhusa za mmiliki, kikundi na faili.

- hosts: webservers
  tasks:

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

Kwa kuongeza, unaweza kuunda saraka kwa kujirudia kwa kutumia recurse: taarifa ya ndiyo.

---
- hosts: webservers
  tasks:

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

Ili kuunda faili, tumia chaguo la 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

Moduli ya lvg inatumika kusanidi kiasi na vikundi vya LVM.

Fikiria kitabu cha kucheza hapa chini:

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

Hii huunda kikundi cha sauti juu ya kizigeu cha /dev/sda1 chenye ukubwa halisi wa MB 32.

Mara tu inapoundwa, tumia moduli ya lvol kuunda kiasi cha kimantiki kama inavyoonyeshwa

---
    - hosts: webservers
      tasks: 

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

Ili kuunda mfumo wa faili kwenye kifaa cha kuzuia, tumia moduli ya mfumo wa faili.

Kitabu cha kucheza hapa chini huunda aina ya mfumo wa faili wa xfs kwenye kiasi cha kuzuia.

---
    - hosts: webservers
      tasks: 

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

Unaweza kuendelea kuweka kiasi cha kuzuia kwa kutumia moduli ya kupachika kama inavyoonyeshwa kwenye kitabu cha kucheza hapa chini:

---
    - hosts: webservers
      tasks: 

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

Hii inahitimisha mada. Tumeshughulikia majukumu mbalimbali ya usimamizi wa mfumo ambayo yanaweza kukamilishwa kwa moduli mahususi zilizojengewa ndani katika Ansible Playbooks.