Kā izmantot iespējamos moduļus sistēmas administrēšanas uzdevumos - 6. daļa


Šajā nedaudzo iepriekšējo tēmu Ansible moduļu 6. daļā mēs tagad iedziļināsimies un atklāsim papildu moduļus, kas ir noderīgi, veicot vairākus sistēmas administrēšanas uzdevumus.

Jūs iegūsiet katra moduļa pamatideju un apskatīsit pieejamās iespējas noteiktu uzdevumu veikšanai.

  1. Programmatūras pakotņu un krātuvju pārvaldīšana anonīmā veidā
  2. Pakalpojumu pārvaldība, izmantojot Ansible
  3. Ugunsmūra pārvaldīšana ar Ansible
  4. Failu vai mapju arhivēšana ar Ansible
  5. Ieplānojiet uzdevumus ar Ansible
  6. Pārvaldiet lietotājus un grupas ar Ansible
  7. Izveidojiet failus un direktorijus ar Ansible
  8. Krātuves pārvaldība ar Ansible
  9. Failu sistēmu pārvaldīšana ar Ansible

Instalējot paketes Linux sistēmās, dažādiem izplatījumiem ir dažādi pakotņu pārvaldnieki. RedHat izplatījumiem mums ir piemērots.

Ansible nāk ar moduli, ko sauc par paketi, kas novērš nepieciešamību izmantot dažādus pakotņu pārvaldniekus dažādām sistēmām. Tas automātiski izmanto attiecīgo resursdatora pakotņu pārvaldnieku, tādējādi atvieglojot darbu.

Piemēram, lai instalētu htop resursdatoru grupā, kurā ietilpst gan Debian, gan RedHat rajoni, izmantojiet pakotnes moduli, kā parādīts zemāk esošajā play_installop_htop.yml.

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

- package:
         name: htop
         state: installed

PIEZĪME. Pakotņu nosaukumi dažādās operētājsistēmās var atšķirties. Piemēram, mums ir httpd Redhat izplatījumos un Apache2 Debian/Ubuntu sistēmām, kas visi apzīmē Apache tīmekļa serveri. Tāpēc, nododot šos iepakojumus, jāievēro īpaša piesardzība. Parasti vislabāk ir izmantot mainīgos vai nosacījumus.

Tālāk mums ir servisa modulis, ko izmanto pakalpojumu pārvaldībai Linux sistēmās. To izmanto, lai sāktu, apturētu vai restartētu pakalpojumu. Varat arī to izmantot, lai iespējotu pakalpojumu, lai sistēma sāknējoties automātiski sāktu pakalpojumu.

Piemēram, lai palaistu un iespējotu Apache tīmekļa serveri RHEL 8, izmantojiet pakalpojumu, kā parādīts.

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

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

Lai apturētu httpd pakalpojumu, nododiet apturēto atribūtu.

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

- service:
         name: httpd
         state: stopped

Lai restartētu httpd pakalpojumu, nododiet restartēto atribūtu.

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

- service:
         name: httpd
         state: restarted

Vēl viens svarīgs uzdevums, ko veic sistēmas administratori, ir ugunsmūra pārvaldība. Atskaņošanas grāmatās Ansible tas ir ievērojami atvieglots, izmantojot ugunsmūra un ufw moduļus. Jūs varat konfigurēt ugunsmūri, lai atļautu vai bloķētu portu vai pakalpojumu vai pat avota adresi.

Pārejam un apskatīsim dažus piemērus:

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

Iepriekš atskaņotajā grāmatā 80 ports ir atļauts visā ugunsmūrī.

Opcija permanent: yes izpilda ugunsmūra kārtulu un padara to pastāvīgu pārstartēšanas laikā. Tomēr šis noteikums nav piemērojams nekavējoties. Tas stājas spēkā tikai pēc atsāknēšanas. Lai nekavējoties ieviestu kārtulu, izmantojiet opciju instant: yes .

Lai norādītu atļautās adreses, izmantojiet avotu: 0.0.0.0/0.

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

Lai norādītu ostu diapazonu, kuram atļauts izmantot opciju ports, rīkojieties šādi:

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

Lai bloķētu portu, mainiet stāvokļa opciju uz atspējotu, kā parādīts:

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

Papildus porta pievienošanai/bloķēšanai pakalpojumam varat piemērot tos pašus noteikumus. Un tas ir pavisam vienkārši. Vienkārši izmantojiet servisa moduli un pievienojiet pievienojamo pakalpojumu un pārliecinieties, vai opcija state ir iestatīta kā iespējota.

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

Lai bloķētu pakalpojumu, iestatiet stāvokļa opciju uz atspējotu.

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

Arhivēšana attiecas uz faila vai mapes saspiešanu viegli pārnēsājamā un mazāka izmēra formātā. Ansible kuģi ar moduli, ko sauc par arhīvu. Faila saspiešana ir aptuveni tikpat vienkārša, kā tas notiek. Nepieciešams tikai norādīt faila avota ceļu un saspiestā faila galamērķi.

Apsveriet playbook compress.yml zemāk.

---
- hosts: webservers
  tasks:

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

Iepriekš minētā atskaņošanas grāmata saspiež/opt/data/web direktoriju un saglabā to mapē /tmp/web.gz.

Noklusējuma saspiešanas formāts ir .gz , tomēr to var norādīt, izmantojot formāta atribūtu. Paraugs nākamajai Playbook.

---
- hosts: webservers
  Tasks:

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

Iepriekš atskaņotā grāmata saspiež/opt/data/web direktoriju uz /tmp/web.zip.

Saspiestu failu var arī atspiest, izmantojot atribūtu Atarhivēt. Apsveriet tālāk sniegto grāmatu.

---
- hosts: webservers
  tasks:

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

Iepriekš atskaņotā grāmata saspiež failu /opt/data/web.gz, lai izvēlētos/izvēlētos kontrolieri Ansible.

Lai norādītu attālās avota sistēmu, izmantojiet opciju 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 

Iepriekš atskaņotā grāmata attālajā mezglā failu /tmp/web.bz2 nesaspiež uz/opt/direktoriju.

Cron modulis palīdz plānot darbus Ansible Playbooks.

Apsveriet tālāk sniegto grāmatu.

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

Spēļu grāmatā piedalās apmeklējumu scenārijs 5. aprīlī plkst. 17:00.

Ja vēlaties ieplānot šī skripta palaišanu tikai tad, ja aprīļa 5. diena ir pirmdiena, izmantojiet atribūtu weekday: 1. 0 apzīmē svētdienu un 6 apzīmē sestdienu saskaņā ar kroņa apzīmējumiem.

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

Zvaigznīte (*) jebkurā no šiem laukiem norāda jebkuru vērtību.

Lai darbu izpildītu 5. aprīlī pulksten 17:00 neatkarīgi no tā, kāda ir nedēļas diena, izmantojiet laika parametrus, kā parādīts.

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

Lai veiktu kopdarbu katra mēneša 5. dienā plkst. 17:00, izmantojiet tālāk norādītos iestatījumus.

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

Lai veiktu cron darbu katru dienu pulksten 17:00, iestatiet laika iestatījumus, kā parādīts:

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

Lai izpildītu cron darbu ik pēc 5 stundām, izmantojiet soļa vērtību */5 , kā parādīts.

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

Jūs varat arī bez piepūles pārvaldīt lietotājus un grupas Ansible atskaņošanas grāmatās.

Lai izveidotu jaunu lietotāju, izmantojiet lietotāja moduli, kā parādīts.

---
- hosts: webservers
  tasks:

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

Varat arī pievienot papildu opcijas, piemēram, UID, grupas.

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

Lai noņemtu lietotāju, izmantojiet paziņojumu remove: yes .

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

Lai izveidotu jaunu grupu, izmantojiet grupas moduli.

- name: Create a group
  group:
    name: developers

Lai izveidotu direktoriju failus, izmantojiet failu moduli.

Piemēram, lai izveidotu jaunu direktoriju.

---
- hosts: webservers
  tasks:

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

Varat pievienot citus atribūtus, piemēram, īpašnieka, grupas un failu atļaujas.

- hosts: webservers
  tasks:

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

Turklāt jūs varat izveidot direktorijus rekursīvi, izmantojot paziņojumu 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

Lai izveidotu failu, izmantojiet opciju 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 sējumu un grupu konfigurēšanai tiek izmantots lvg modulis.

Apsveriet tālāk sniegto grāmatu:

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

Tādējādi virs /dev/sda1 nodalījuma tiek izveidota sējumu grupa, kuras fiziskā apjoma lielums ir 32 MB.

Kad tas ir izveidots, izmantojiet moduli lvol, lai izveidotu loģisku apjomu, kā parādīts

---
    - hosts: webservers
      tasks: 

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

Lai izveidotu failu sistēmu bloķēšanas ierīcē, izmantojiet failu sistēmas moduli.

Zemāk esošajā spēļu grāmatā bloka sējumā tiek izveidots failu sistēmas xfs tips.

---
    - hosts: webservers
      tasks: 

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

Pēc tam varat turpināt bloka skaļuma montāžu, izmantojot montāžas moduli, kā parādīts zemāk esošajā atskaņošanas grāmatā:

---
    - hosts: webservers
      tasks: 

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

Tas tēmu noslēdz. Mēs esam apskatījuši dažādus sistēmas administrēšanas uzdevumus, kurus var paveikt, izmantojot īpašus iebūvētus moduļus Ansible Playbooks.