Kif Tuża Moduli Ansible għal Kompiti ta' Amministrazzjoni tas-Sistema - Parti 6


F'din il-Parti 6 ta 'ftit moduli Ansible fis-suġġetti tal-passat, issa se mmorru aktar fil-fond u niskopru moduli addizzjonali li huma ta' għajnuna fit-twettiq ta 'numru ta' kompiti ta 'amministrazzjoni tas-sistema.

Int ikollok idea bażika ta 'kull modulu u tħares lejn l-għażliet disponibbli għat-twettiq ta' ċerti kompiti.

  1. Ġestjoni ta' Pakketti tas-Softwer u Repożitorji f'Ansible
  2. Ġestjoni tas-Servizzi bl-Użu ta' Ansible
  3. Ġestjoni tal-Firewall b'Ansible
  4. Arkivjar ta' Fajls jew Folders b'Ansible
  5. Iskeda Kompiti b'Ansible
  6. Immaniġġja Utenti u Gruppi b'Ansible
  7. Oħloq Fajls u Direttorji b'Ansible
  8. Ġestjoni tal-Ħażna b'Ansible
  9. Ġestjoni ta' Sistemi ta' Fajls b'Ansible

Meta tinstalla pakketti fuq sistemi Linux, distribuzzjonijiet differenti jiġu ma 'maniġers ta' pakketti differenti. Għal distribuzzjonijiet RedHat, għandna apt.

Ansible jiġi b'modulu msejjaħ pakkett, li jelimina l-ħtieġa li jintużaw maniġers ta 'pakketti differenti għal sistemi differenti. Awtomatikament juża l-maniġer tal-pakkett korrispondenti tas-sistema ospitanti, u b'hekk ix-xogħol ikun aktar faċli.

Pereżempju, biex tinstalla htop fi grupp ta' hosts li jinkludu kemm id-distros ta' Debian u RedHat uża l-modulu tal-pakkett kif muri fil-playbook install_htop.yml hawn taħt.

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

- package:
         name: htop
         state: installed

NOTA: L-ismijiet tal-pakketti jistgħu jvarjaw minn sistema operattiva għal oħra. Pereżempju, għandna httpd fid-distribuzzjonijiet Redhat u Apache2 għal sistemi Debian/Ubuntu li kollha jindikaw is-server tal-web Apache. Għalhekk, għandha tingħata attenzjoni żejda meta tgħaddi dawn il-pakketti. Normalment, huwa aħjar li tuża varjabbli jew dikjarazzjonijiet kundizzjonali.

Sussegwentement, għandna modulu tas-servizz, li jintuża għall-ġestjoni tas-servizzi fuq sistemi Linux. Jintuża biex jibda, iwaqqaf jew jerġa’ jibda servizz. Tista 'wkoll tużaha biex tippermetti servizz sabiex meta sistema boots, awtomatikament jibda s-servizz.

Per eżempju, biex tibda & tippermetti Apache webserver fuq RHEL 8, uża s-servizz kif muri.

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

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

Biex twaqqaf is-servizz httpd, għaddi l-attribut imwaqqaf.

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

- service:
         name: httpd
         state: stopped

Biex terġa 'tibda servizz httpd, għaddi l-attribut restarted.

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

- service:
         name: httpd
         state: restarted

L-amministraturi tas-sistema ta 'kompitu importanti ieħor jimpenjaw ruħhom huwa l-ġestjoni tal-firewall. Fil-playbooks Ansible, dan sar ħafna aktar faċli b'moduli firewalld u ufw. Tista 'tikkonfigura l-firewall biex tippermetti jew timblokka port jew servizz jew saħansitra indirizz tas-sors.

Ejja naqbżu u nagħtu ħarsa lejn ftit eżempji:

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

Fil-playbook hawn fuq, il-port 80 huwa permess fuq il-firewall.

L-għażla permanent: yes tinforza r-regola tal-firewall u tagħmilha persistenti matul reboots. Madankollu, din ir-regola ma tapplikax immedjatament. Jidħol fis-seħħ biss wara reboot. Biex tinforza r-regola immedjatament, uża l-għażla immedjat: iva.

Biex tispeċifika l-indirizzi permessi, uża d-dikjarazzjoni sors:0.0.0.0/0.

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

Biex tispeċifika firxa ta' portijiet li għandhom jitħallew jużaw l-għażla tal-port kif ġej:

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

Biex timblokka l-port ibdel l-għażla tal-istat għal diżattivat kif muri:

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

Minbarra li żżid/imblokka port, tista' wkoll tapplika l-istess regoli għal servizz. U huwa pjuttost sempliċi. Uża biss il-modulu tas-servizz u ehmeż is-servizz li jrid jiżdied u żgura li l-għażla tal-istat hija ssettjata biex tkun attivata.

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

Biex timblokka s-servizz issettja l-għażla tal-istat għal diżattivat.

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

L-arkivjar jirreferi għall-kompressjoni ta 'fajl jew folder għal format li huwa faċilment portabbli u iżgħar fid-daqs. Ansible vapuri b'modulu msejjaħ arkivju. Il-kompressjoni ta' fajl hija faċli kemm jista' jkun. Dak kollu li hu meħtieġ huwa li tispeċifika l-mogħdija tas-sors tal-fajl u d-destinazzjoni tal-fajl kompressat.

Ikkunsidra playbook compress.yml hawn taħt.

---
- hosts: webservers
  tasks:

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

Il-playbook ta' hawn fuq tikkompressa d-direttorju /opt/data/web u ssejvjah f'/tmp/web.gz.

Il-format tal-kompressjoni default huwa .gz, madankollu, dan jista 'jiġi speċifikat bl-użu tal-attribut tal-format. Ipprova l-Playbook li jmiss.

---
- hosts: webservers
  Tasks:

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

Il-playbook hawn fuq jikkompressa /opt/data/web directory għal /tmp/web.zip.

Tista 'wkoll tikkompressa fajl kompressat billi tuża l-attribut unarchive. Ikkunsidra l-playbook hawn taħt.

---
- hosts: webservers
  tasks:

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

Il-playbook ta' hawn fuq ineħħi l-kompressjoni tal-fajl /opt/data/web.gz għal /opt fuq il-kontrollur Ansible.

Biex tispeċifika s-sistema tas-sors remot uża l-għaż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 

Il-playbook hawn fuq uncompresses il-fajl /tmp/web.bz2 fuq in-node remot għad-direttorju /opt/.

Il-modulu cron jgħin fl-iskedar tal-impjiegi f'Ansible Playbooks.

Ikkunsidra l-playbook hawn taħt.

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

Il-playbook imexxi l-iskript tal-attendenza fil-5 ta’ April fil-5:00 pm.

Jekk trid tiskeda dan l-iskritt biex jaħdem biss jekk il-5 jum ta' April huwa t-Tnejn, imbagħad uża l-attribut jum tal-ġimgħa: 1. 0 tindika l-Ħadd u 6 tindika s-Sibt skont in-notazzjoni cron.

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

Asterisk (*) fi kwalunkwe minn dawn l-oqsma jindika kwalunkwe valur.

Biex tmexxi x-xogħol fil-5 ta' April fil-5:00 pm irrispettivament minn x'inhu l-jum tal-ġimgħa, uża l-parametri tal-ħin kif muri.

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

Biex tesegwixxi l-biċċa xogħol cron fil-5 jum ta 'kull xahar fil-5:00 pm uża s-settings hawn taħt.

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

Biex tesegwixxi l-biċċa xogħol cron kuljum fil-5:00 pm issettja l-issettjar tal-ħin kif muri:

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

Biex tesegwixxi l-biċċa xogħol cron kull 5 sigħat, uża l-valur tal-pass */5 kif muri.

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

Tista 'wkoll timmaniġġja utenti u gruppi ġewwa playbooks Ansible pjuttost mingħajr sforz.

Biex toħloq utent ġdid, uża l-modulu tal-utent kif muri.

---
- hosts: webservers
  tasks:

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

Tista 'wkoll iżżid għażliet addizzjonali bħal UID, gruppi.

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

Biex tneħħi l-utent, uża l-istqarrija remove: yes.

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

Biex toħloq grupp ġdid, uża l-modulu tal-grupp.

- name: Create a group
  group:
    name: developers

Biex toħloq fajls tad-direttorji, uża l-modulu tal-fajl.

Per eżempju, biex toħloq direttorju ġdid.

---
- hosts: webservers
  tasks:

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

Tista 'żżid attributi oħra bħal permessi ta' sid, grupp u fajl.

- hosts: webservers
  tasks:

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

Barra minn hekk, tista 'toħloq direttorji b'mod rikorsiv billi tuża r-rikorsi: dikjarazzjoni iva.

---
- hosts: webservers
  tasks:

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

Biex toħloq fajl, uża l-għaż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

Il-modulu lvg jintuża biex jiġi kkonfigurat volumi u gruppi LVM.

Ikkunsidra l-playbook hawn taħt:

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

Dan joħloq grupp ta' volum fuq il-partizzjoni /dev/sda1 b'daqs ta' firxa fiżika ta' 32 MB.

Ladarba maħluqa, uża l-modulu lvol biex toħloq volum loġiku kif muri

---
    - hosts: webservers
      tasks: 

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

Biex toħloq sistema ta 'fajls fuq apparat ta' blokk, uża l-modulu tas-sistema tal-fajls.

Il-playbook hawn taħt joħloq it-tip ta 'sistema ta' fajls ta 'xfs fuq il-volum tal-blokk.

---
    - hosts: webservers
      tasks: 

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

Imbagħad tista' tipproċedi biex timmonta l-volum tal-blokk billi tuża l-modulu tal-immuntar kif muri fil-playbook hawn taħt:

---
    - hosts: webservers
      tasks: 

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

Dan jikkonkludi s-suġġett. Aħna koprejna diversi kompiti ta' amministrazzjoni tas-sistema li jistgħu jitwettqu minn moduli speċifiċi integrati f'Ansible Playbooks.