Kuidas kasutada süsteemihalduse ülesannete jaoks kasutatavaid mooduleid - 6. osa


Varasemate teemade väheste Ansible moodulite selles osas 6 tutvustame nüüd täiendavaid mooduleid, mis on kasulikud paljude süsteemihalduse ülesannete täitmisel.

Saad iga mooduli põhiidee ja vaatad võimalikke võimalusi teatud ülesannete täitmiseks.

  1. Tarkvarapakettide ja hoidlate haldamine anonüümselt
  2. Teenuste haldamine rakendusega Ansible
  3. tulemüüri haldamine rakendusega Ansible
  4. Failide või kaustade arhiveerimine rakendusega Ansible
  5. Ajakava ülesanded ajakavaga
  6. Kasutajate ja gruppide haldamine rakendusega Ansible
  7. failide ja kataloogide loomine rakendusega Ansible
  8. Salvestamise haldamine rakendusega Ansible
  9. Failisüsteemide haldamine koos ansible'iga

Pakettide installimisel Linuxi süsteemidesse on erinevatel jaotustel erinevad paketihaldurid. RedHati distributsioonide jaoks on meil apt.

Ansible kaasas on moodul nimega pakett, mis välistab vajaduse kasutada erinevate süsteemide jaoks erinevaid paketihaldureid. See kasutab automaatselt hostisüsteemi vastavat paketihaldurit, muutes seeläbi töö lihtsamaks.

Näiteks htopi installimiseks hostide rühma, mis sisaldab nii Debiani kui ka RedHati distrosid, kasutage pakettmoodulit, nagu on näidatud allpool asuvas play_installop_htop.yml.

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

- package:
         name: htop
         state: installed

MÄRKUS. Pakettide nimed võivad operatsioonisüsteemides erineda. Näiteks on meil Redhat-distributsioonides httpd ja Debiani/Ubuntu süsteemide jaoks Apache2, mis kõik tähistavad Apache'i veebiserverit. Seetõttu tuleb nende pakettide möödumisel olla eriti ettevaatlik. Tavaliselt on kõige parem kasutada muutujaid või tingimuslauseid.

Järgmisena on meil teenusemoodul, mida kasutatakse Linuxi süsteemide teenuste haldamiseks. Seda kasutatakse teenuse käivitamiseks, peatamiseks või taaskäivitamiseks. Samuti saate seda kasutada teenuse lubamiseks, nii et kui süsteem käivitub, käivitab see teenuse automaatselt.

Näiteks Apache veebiserveri käivitamiseks ja lubamiseks RHEL 8-s kasutage teenust nagu näidatud.

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

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

Httpd-teenuse peatamiseks edastage peatatud atribuut.

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

- service:
         name: httpd
         state: stopped

Httpd-teenuse taaskäivitamiseks edastage taaskäivitatud atribuut.

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

- service:
         name: httpd
         state: restarted

Teine oluline ülesanne, mille administraatorid ette võtavad, on tulemüüri haldamine. Ansible playbookides on seda tulemüüri ja ufw moodulitega palju lihtsustatud. Tulemüüri saate konfigureerida pordi või teenuse või isegi lähte-aadressi lubamiseks või blokeerimiseks.

Hüppame sisse ja vaatame mõnda näidet:

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

Ülaltoodud mänguraamatus on kogu tulemüüri lubatud port 80

Valik permanent: yes jõustab tulemüüri reegli ja muudab selle püsivaks taaskäivitamisel. See reegel ei kehti siiski kohe. See jõustub alles pärast taaskäivitamist. Reegli koheseks jõustamiseks kasutage valikut kohe: jah .

Lubatud aadresside määramiseks kasutage käsku source: 0.0.0.0/0.

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

Pordivaliku kasutamiseks sadamate vahemiku määramiseks järgmiselt:

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

Pordi blokeerimiseks muutke oleku suvand keelatuks, nagu näidatud:

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

Lisaks pordi lisamisele/blokeerimisele saate teenusele rakendada samu reegleid. Ja see on üsna lihtne. Kasutage lihtsalt teenusemoodulit ja lisage lisatav teenus ning veenduge, et olekuvalik oleks lubatud.

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

Teenuse blokeerimiseks määrake olekuvõimalus keelatuks.

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

Arhiveerimine viitab faili või kausta tihendamisele hõlpsasti kaasaskantavasse ja väiksema vormingusse. Arhiivimooduliga moodulid. Faili tihendamine on umbes sama lihtne kui saab. Vaja on ainult määrata faili lähtekoht ja tihendatud faili sihtkoht.

Mõelge allpool olevale käsiraamatule compress.yml.

---
- hosts: webservers
  tasks:

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

Ülaltoodud mänguraamat tihendab kataloogi/opt/data/web ja salvestab selle kataloogi /tmp/web.gz.

Vaikimisi tihendusformaat on .gz , kuid selle saab määrata atribuudi format abil. Proovige järgmist mänguraamatut.

---
- hosts: webservers
  Tasks:

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

Eespool olev esiraamat tihendab/opt/data/veebikataloogi faili /tmp/web.zip.

Tihendatud faili saab tihendada ka arhiivi tühistamise abil. Mõelge allolevale mänguraamatule.

---
- hosts: webservers
  tasks:

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

Ülaltoodud esiraamat tihendab faili /opt/data/web.gz/Ansible kontrolleri pakkimiseks.

Kaugallikasüsteemi määramiseks kasutage valikut 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 

Ülaltoodud esiraamat tihendab kaugsõlmes oleva faili /tmp/web.bz2 kataloogi/opt /.

Croni moodul aitab Ansible Playbooksis tööde ajastamisel.

Mõelge allolevale mänguraamatule.

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

Mänguraamat töötab kohalviibimise stsenaariumi järgi 5. aprillil kell 17:00.

Kui soovite selle skripti käitamise ajastada ainult juhul, kui aprilli 5. päev on esmaspäev, siis kasutage atribuuti weekday: 1. 0 tähistab pühapäeva ja 6 tähistab laupäeva vastavalt krooni tähistusele.

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

Tärn (*) nendes väljades tähistab mis tahes väärtust.

Töö käivitamiseks 5. aprillil kell 17.00 olenemata tööpäevast kasutage näidatud ajaparameetreid.

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

Croni töö täitmiseks iga kuu 5. päeval kell 17.00 kasutage alltoodud sätteid.

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

Croni töö iga päev kell 17.00 täitmiseks määrake aja sätted nagu näidatud:

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

Croni töö täitmiseks iga 5 tunni järel kasutage sammu väärtust */5 , nagu näidatud.

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

Samuti saate üsna vaevata hallata kasutajaid ja rühmi Ansible esiraamatutes.

Uue kasutaja loomiseks kasutage kasutaja moodulit, nagu näidatud.

---
- hosts: webservers
  tasks:

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

Samuti saate lisada täiendavaid valikuid, näiteks UID, rühmad.

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

Kasutaja eemaldamiseks kasutage lauset remove: yes .

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

Uue rühma loomiseks kasutage rühma moodulit.

- name: Create a group
  group:
    name: developers

Kataloogide failide loomiseks kasutage failimoodulit.

Näiteks uue kataloogi loomiseks.

---
- hosts: webservers
  tasks:

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

Saate lisada muid atribuute, nagu omaniku, rühma ja faili õigused.

- hosts: webservers
  tasks:

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

Lisaks saate rekursiivselt katalooge luua, kasutades lauset 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

Faili loomiseks kasutage valikut 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

Lvg moodulit kasutatakse LVM-i mahtude ja rühmade konfigureerimiseks.

Mõelge allpool toodud mänguraamatule:

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

Nii luuakse jaotise /dev/sda1 kohale mahtrühm füüsilise ulatusega 32 MB.

Pärast loomist kasutage lvol moodulit loogilise köite loomiseks, nagu näidatud

---
    - hosts: webservers
      tasks: 

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

Blokeerimisseadmes failisüsteemi loomiseks kasutage failisüsteemi moodulit.

Allolev mänguraamat loob ploki mahule failisüsteemi tüüpi xfs.

---
    - hosts: webservers
      tasks: 

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

Järgmisena saate jätkata ploki helitugevuse ühendamist ühendamismooduli abil, nagu on näidatud allpool olevas esitusraamatus:

---
    - hosts: webservers
      tasks: 

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

See lõpetab teema. Oleme käsitlenud mitmesuguseid süsteemihalduse ülesandeid, mida saab täita Ansible Playbooksis konkreetsete sisseehitatud moodulitega.