Giunsa Paggamit ang Mga Masaligan nga Module alang sa Mga Buluhaton sa Pagdumala sa Sistema - Bahin 6


Niini nga Bahin 6 sa pipila ka Ansible nga mga module sa nangaging mga hilisgutan, kita karon moadto sa mas lawom ug madiskobrehan dugang nga mga modules nga makatabang sa pagbuhat sa usa ka gidaghanon sa mga buluhaton sa pagdumala sa sistema.

Makuha nimo ang batakang ideya sa matag module ug tan-awon ang mga kapilian nga magamit alang sa pagtuman sa pipila nga mga buluhaton.

  1. Pagdumala sa Software Packages ug Repositories sa Ansible
  2. Pagdumala sa mga Serbisyo Gamit ang Ansible
  3. Pagdumala sa Firewall gamit ang Ansible
  4. Pag-archive sa mga File o Folder nga adunay Ansible
  5. Pag-iskedyul sa mga Buluhaton uban sa Ansible
  6. Pagdumala sa mga Gumagamit ug Mga Grupo nga adunay Ansible
  7. Paghimo og mga File ug Direktoryo nga adunay Ansible
  8. Pagdumala sa Pagtipig gamit ang Ansible
  9. Pagdumala sa Sistema sa File gamit ang Ansible

Kung nag-install ug mga pakete sa mga sistema sa Linux, lainlain nga mga pag-apod-apod nga adunay lainlaing mga managers sa package. Alang sa mga pag-apod-apod sa RedHat, kami adunay apt.

Ang Ansible adunay usa ka module nga gitawag nga package, nga nagtangtang sa panginahanglan sa paggamit sa lainlaing mga managers sa package alang sa lainlaing mga sistema. Awtomatiko nga gigamit niini ang katugbang nga manager sa package sa host system, sa ingon nagpadali sa trabaho.

Pananglitan, ang pag-instalar sa htop sa usa ka grupo sa mga host nga naglangkob sa Debian ug RedHat distros gamita ang package module sama sa gipakita sa install_htop.yml playbook sa ubos.

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

- package:
         name: htop
         state: installed

PAHINUMDOM: Ang mga ngalan sa package mahimong magkalahi gikan sa usa ka operating system ngadto sa lain. Pananglitan, kami adunay httpd sa mga distribusyon sa Redhat ug Apache2 alang sa mga sistema sa Debian/Ubuntu nga ang tanan nagpasabut sa Apache webserver. Busa, kinahanglan nga mag-amping pag-ayo kung ipasa kini nga mga pakete. Kasagaran, labing maayo nga gamiton ang mga variable o kondisyon nga mga pahayag.

Sunod, kami adunay usa ka module sa serbisyo, nga gigamit alang sa pagdumala sa mga serbisyo sa mga sistema sa Linux. Gigamit kini sa pagsugod, paghunong o pagsugod pag-usab sa usa ka serbisyo. Mahimo usab nimo kini gamiton aron mahimo ang usa ka serbisyo aron kung ang usa ka sistema mag-boot, awtomatiko kini nga magsugod sa serbisyo.

Pananglitan, aron masugdan ug ma-enable ang Apache webserver sa RHEL 8, gamita ang serbisyo sama sa gipakita.

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

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

Aron mahunong ang serbisyo sa httpd, ipasa ang nahunong nga hiyas.

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

- service:
         name: httpd
         state: stopped

Aron ma-restart ang serbisyo sa httpd, ipasa ang gi-restart nga attribute.

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

- service:
         name: httpd
         state: restarted

Ang laing importante nga buluhaton sa mga tigdumala sa sistema mao ang pagdumala sa firewall. Sa Ansible playbooks, kini nahimong mas sayon sa firewalld ug ufw modules. Mahimo nimong i-configure ang firewall aron tugutan o babagan ang usa ka pantalan o serbisyo o bisan usa ka address sa gigikanan.

Ambak kita ug tan-awon ang pipila ka mga pananglitan:

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

Sa playbook sa ibabaw, ang port 80 gitugutan tabok sa firewall.

Ang opsyon nga permanente: oo nagpatuman sa lagda sa firewall ug nagpapadayon niini sa tibuok nga pag-reboot. Bisan pa, kini nga lagda dili magamit dayon. Motungha ra kini pagkahuman sa pag-reboot. Aron mapatuman dayon ang lagda, gamita ang opsyon dagmit: oo.

Aron matino ang mga adres nga gitugotan, gamita ang tinubdan:0.0.0.0/0 nga pahayag.

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

Aron matino ang usa ka han-ay sa mga pantalan nga tugutan nga gamiton ang kapilian sa pantalan sama sa mosunod:

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

Aron babagan ang pantalan usba ang kapilian sa estado aron ma-disable sama sa gipakita:

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

Gawas sa pagdugang/pag-block sa usa ka pantalan, mahimo usab nimong i-apply ang parehas nga mga lagda sa usa ka serbisyo. Ug kini yano ra. Gamita lang ang module sa serbisyo ug idugang ang serbisyo nga idugang ug siguruha nga ang kapilian sa estado gitakda aron mahimo.

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

Aron babagan ang serbisyo, itakda ang kapilian sa estado nga ma-disable.

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

Ang pag-archive nagpasabut sa pag-compress sa usa ka file o folder sa usa ka format nga dali madala ug mas gamay ang gidak-on. Ansible nga mga barko nga adunay module nga gitawag og archive. Ang pag-compress sa usa ka file hapit ingon kadali. Ang tanan nga gikinahanglan mao ang pagtino sa gigikanan nga agianan sa file ug ang destinasyon sa compressed file.

Hunahunaa ang usa ka playbook compress.yml sa ubos.

---
- hosts: webservers
  tasks:

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

Gi-compress sa ibabaw nga playbook ang /opt/data/web directory ug gitipigan kini sa /tmp/web.gz.

Ang default nga format sa compression mao ang .gz, bisan pa niana, kini mahimong matino gamit ang format attribute. Sampol ang sunod nga Playbook.

---
- hosts: webservers
  Tasks:

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

Ang playbook sa ibabaw nag-compress sa /opt/data/web directory ngadto sa /tmp/web.zip.

Mahimo usab nimo i-uncompress ang usa ka compressed file gamit ang unarchive attribute. Tagda ang playbook sa ubos.

---
- hosts: webservers
  tasks:

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

Ang playbook sa ibabaw nag-uncompress sa file /opt/data/web.gz sa /opt sa Ansible controller.

Aron matino ang layo nga tinubdan nga sistema gamita ang remote_src=yes nga opsyon.

---
- hosts: webservers
  tasks:

 - name:Uncompress /tmp/web.bz2 to/opt on remote host
   unarchive:
     src: /tmp/web.bz2
     dest: /opt/
     remote_src=yes 

Ang playbook sa ibabaw nag-uncompress sa file /tmp/web.bz2 sa remote node sa /opt/ directory.

Ang cron module makatabang sa pag-iskedyul sa mga trabaho sa Ansible Playbooks.

Tagda ang playbook sa ubos.

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

Ang playbook nagpadagan sa script sa pagtambong sa Abril 5 sa alas 5:00 sa hapon.

Kung gusto nimo nga i-iskedyul kini nga script nga modagan lamang kung ang ika-5 nga adlaw sa Abril usa ka Lunes, unya gamita ang adlaw sa semana: 1 nga hiyas. Ang 0 nagpasabot sa Domingo ug ang 6 nagpasabot sa Sabado sumala sa cron notation.

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

Ang asterisk (*) sa bisan asa niini nga mga field nagpaila sa bisan unsang bili.

Sa pagdagan sa trabaho sa Abril 5 sa 5:00 sa hapon bisan unsa pa ang adlaw sa semana, gamita ang mga parameter sa oras sama sa gipakita.

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

Aron ipatuman ang cron job sa ika-5 nga adlaw sa matag bulan sa alas 5:00 sa hapon gamita ang mga setting sa ubos.

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

Aron ipatuman ang cron job kada adlaw sa 5:00 pm itakda ang mga setting sa oras sama sa gipakita:

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

Para ipatuman ang cron job kada 5 ka oras, gamita ang step value */5 ingon sa gipakita.

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

Mahimo usab nimo nga madumala ang mga tiggamit ug grupo sa sulod sa mga playbook nga Ansible nga wala’y mahimo.

Aron makahimo og bag-ong user, gamita ang user module sama sa gipakita.

---
- hosts: webservers
  tasks:

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

Mahimo ka usab makadugang dugang nga mga kapilian sama sa UID, mga grupo.

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

Para tangtangon ang user, gamita ang remove: yes statement.

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

Aron makahimo og bag-ong grupo, gamita ang module sa grupo.

- name: Create a group
  group:
    name: developers

Aron makahimo og mga file sa mga direktoryo, gamita ang file module.

Pananglitan, paghimo og bag-ong direktoryo.

---
- hosts: webservers
  tasks:

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

Mahimo nimong idugang ang ubang mga hiyas sama sa tag-iya, grupo ug pagtugot sa file.

- hosts: webservers
  tasks:

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

Dugang pa, makahimo ka og mga direktoryo nga recursively gamit ang recurse: yes nga pahayag.

---
- hosts: webservers
  tasks:

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

Para makahimo ug file, gamita ang state: touch option.

---
- hosts: webservers
  tasks:

  - name: Create a new file
    file: 
     path: /opt/web/index.html
     state: touch
owner: www-data
     group: www-data
     mode: 0644

Ang lvg module gigamit sa pag-configure sa mga volume ug grupo sa LVM.

Tagda ang playbook sa ubos:

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

Naghimo kini og volume group sa ibabaw sa /dev/sda1 partition nga adunay pisikal nga gidak-on nga 32 MB.

Kung nahimo na, gamita ang lvol module para maghimo ug logical volume sama sa gipakita

---
    - hosts: webservers
      tasks: 

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

Aron makahimo og file system sa block device, gamita ang filesystem module.

Ang playbook sa ubos nagmugna sa filesystem type sa xfs sa block volume.

---
    - hosts: webservers
      tasks: 

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

Mahimo nimong sunod nga ipadayon ang pag-mount sa block volume gamit ang mount module sama sa gipakita sa playbook sa ubos:

---
    - hosts: webservers
      tasks: 

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

Kini nagtapos sa hilisgutan. Gitabonan namo ang nagkalain-laing mga buluhaton sa pagdumala sa sistema nga mahimo pinaagi sa piho nga mga built-in nga module sa Ansible Playbooks.