Mahdollisten moduulien käyttäminen järjestelmänhallintatehtävissä - Osa 6


Tässä Ansible-sarjan osassa 6 olemme käsitelleet muutamia Ansible-moduuleja aiemmissa aiheissa. Menemme nyt syvemmälle ja löydämme lisämoduuleja, joista on apua useiden järjestelmänhallintatehtävien suorittamisessa.

Saat peruskäsityksen kustakin moduulista ja tarkastelet käytettävissä olevia vaihtoehtoja tiettyjen tehtävien suorittamiseksi.

Tällä sivulla:
  1. Ohjelmistopakettien ja tietovarastojen hallinta Ansiblessa
  2. Palveluiden hallinta Ansiblen avulla
  3. Palomuurin hallinta Ansiblella
  4. Tiedostojen tai kansioiden arkistointi Ansiblella
  5. Aikatauluta tehtävät Ansiblen avulla
  6. Hallitse käyttäjiä ja ryhmiä Ansiblen avulla
  7. Luo tiedostoja ja hakemistoja Ansiblella
  8. Tallennustilan hallinta Ansiblella
  9. Tiedostojärjestelmien hallinta Ansiblella

1. Ohjelmistopakettien ja tietovarastojen hallinta Ansiblessa

Kun asennat paketteja Linux-järjestelmiin, eri jakeluissa on erilaisia paketinhallintaohjelmia. RedHat-jakeluille meillä on yum & dnf, kun taas Debian-makuille sopivat.

Ansiblen mukana tulee paketti-niminen moduuli, joka eliminoi tarpeen käyttää erilaisia paketinhallintaohjelmia eri järjestelmissä. Se käyttää automaattisesti isäntäjärjestelmän vastaavaa paketinhallintaa, mikä helpottaa työtä.

Asenna ohjelmistopaketit

Jos esimerkiksi haluat asentaa htopin isäntien ryhmään, joka sisältää sekä Debianin että RedHat -jakelun, käytä paketti-moduulia näkyy alla olevassa install_htop.yml -ohjekirjassa.

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

- package:
         name: htop
         state: installed

HUOMAA: Pakettien nimet voivat vaihdella eri käyttöjärjestelmissä. Meillä on esimerkiksi httpd Redhat-jakeluissa ja Apache2 Debian/Ubuntu-järjestelmissä, jotka kaikki tarkoittavat Apachea. verkkopalvelin. Siksi näiden pakettien välittämisessä tulee olla erityisen varovainen. Yleensä on parasta käyttää muuttujia tai ehdollisia lausekkeita.

2. Palvelujen hallinta Ansiblen avulla

Seuraavaksi meillä on palvelu-moduuli, jota käytetään palveluiden hallintaan Linux-järjestelmissä. Sitä käytetään palvelun käynnistämiseen, pysäyttämiseen tai uudelleenkäynnistykseen. Voit käyttää sitä myös palvelun käyttöönottoon, jolloin järjestelmä käynnistyy automaattisesti käynnistää palvelun.

Käynnistä ja ota palvelu käyttöön

Jos esimerkiksi haluat käynnistää ja ottaa käyttöön Apache-verkkopalvelimen RHEL 8:ssa, käytä palvelua kuvan mukaisesti.

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

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

Pysäytä palvelu

Pysäytä httpd-palvelu välittämällä stopped-attribuutti.

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

- service:
         name: httpd
         state: stopped

Käynnistä palvelu uudelleen

Käynnistä httpd-palvelu uudelleen antamalla restarted-attribuutti.

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

- service:
         name: httpd
         state: restarted

3. Palomuurin hallinta Ansiblella

Toinen tärkeä tehtävä, jonka järjestelmänvalvojat tekevät, on palomuurin hallinta. Ansible playbooksissa tämä on tehty paljon helpommaksi palomuurin ja ufw-moduuleilla. Voit määrittää palomuurin sallimaan tai estämään portin tai palvelun tai jopa lähdeosoitteen.

Hyppäämme sisään ja katsomme muutamia esimerkkejä:

Avaa/estä portti 80 palomuurissa

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

Yllä olevassa ohjekirjassa portti 80 sallitaan palomuurin yli.

Vaihtoehto pysyvä: kyllä pakottaa palomuurisäännön ja tekee siitä pysyvän uudelleenkäynnistysten ajan. Tämä sääntö ei kuitenkaan päde heti. Se tulee voimaan vasta uudelleenkäynnistyksen jälkeen. Jos haluat panna säännön täytäntöön välittömästi, käytä vaihtoehtoa välitön: kyllä.

Määritä sallitut osoitteet source:0.0.0.0/0-käskyllä.

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

Voit määrittää porttialueen, jolle porttivaihtoehtoa saa käyttää seuraavasti:

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

Voit estää portin muuttamalla tila-asetukseksi pois käytöstä kuvan mukaisesti:

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

Lisää/estä palvelu palomuurissa

Portin lisäämisen/eston lisäksi voit myös soveltaa samoja sääntöjä palveluun. Ja se on melko yksinkertaista. Käytä vain palvelu-moduulia ja liitä lisättävä palvelu ja varmista, että tila-asetuksena on käytössä.

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

Voit estää palvelun asettamalla tila-asetukseksi poistettu käytöstä.

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

4. Tiedostojen tai kansioiden arkistointi Ansiblen avulla

Arkistointi tarkoittaa tiedoston tai kansion pakkaamista muotoon, joka on helposti kannettava ja kooltaan pienempi. Ansible toimitetaan arkisto-nimisen moduulin kanssa. Tiedoston pakkaaminen on suunnilleen yhtä helppoa kuin se on. Ainoa mitä vaaditaan, on määrittää tiedoston lähdepolku ja pakatun tiedoston kohde.

Pakkaa hakemisto

Harkitse alla olevaa ohjekirjaa compress.yml.

---
- hosts: webservers
  tasks:

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

Yllä oleva ohjekirja pakkaa /opt/data/web-hakemiston ja tallentaa sen osoitteeseen /tmp/web.gz.

Pakkaa hakemisto muotoilla

Oletuspakkausmuoto on .gz, mutta se voidaan määrittää käyttämällä format-attribuuttia. Esimerkki seuraavasta pelikirjasta.

---
- hosts: webservers
  Tasks:

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

Yllä oleva ohjekirja pakkaa /opt/data/web-hakemiston muotoon /tmp/web.zip.

Pura tiedosto

Voit myös purkaa pakatun tiedoston käyttämällä unarchive-attribuuttia. Harkitse alla olevaa ohjekirjaa.

---
- hosts: webservers
  tasks:

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

Yllä oleva ohjekirja purkaa Ansible-ohjaimen tiedoston /opt/data/web.gz muotoon /opt.

Pura tiedosto etäsolmussa

Voit määrittää etälähdejärjestelmän remote_src=yes-vaihtoehdon avulla.

---
- hosts: webservers
  tasks:

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

Yllä oleva ohjekirja purkaa etäsolmun tiedoston /tmp/web.bz2 hakemistoon /opt/.

5. Aikatauluta tehtävät Ansiblen avulla

cron moduuli auttaa Ansible Playbooksin töiden ajoittamisessa.

Luo ajoitettu tehtävä

Harkitse alla olevaa ohjekirjaa.

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

Pelikirja ajaa läsnäoloskriptin 5. huhtikuuta klo 17.00.

Ajoita skripti tiettyyn päivämäärään

Jos haluat ajoittaa tämän skriptin suoritettavaksi vain, jos huhtikuun 5. päivä on maanantai, käytä attribuuttia viikonpäivä: 1. 0 tarkoittaa sunnuntaita ja 6 lauantaita kruunumerkinnän mukaan.

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

Tähti (*) missä tahansa näistä kentistä osoittaa minkä tahansa arvon.

Suorita työpaikka treffeillä

Jos haluat suorittaa työn 5. huhtikuuta klo 17.00 riippumatta siitä, mikä arkipäivä on, käytä aikaparametreja kuvan mukaisesti.

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

Suorita työ tiettynä päivänä joka kuukausi

Suorita cron-työ jokaisen kuukauden 5. päivänä klo 17.00 käyttämällä alla olevia asetuksia.

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

Suorita työ päivittäin

Jos haluat suorittaa cron-työn päivittäin klo 17.00, aseta aika-asetukset kuvan mukaisesti:

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

Suorita työ 5 tunnin välein

Jos haluat suorittaa cron-työn 5 tunnin välein, käytä vaihearvoa */5 kuvan mukaisesti.

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

6. Hallitse käyttäjiä ja ryhmiä Ansiblen avulla

Voit myös hallita käyttäjiä ja ryhmiä Ansible playbookissa melko vaivattomasti.

Luo uusi käyttäjä

Luo uusi käyttäjä käyttäjä-moduulilla kuvan mukaisesti.

---
- hosts: webservers
  tasks:

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

Voit myös lisätä lisäasetuksia, kuten UID, ryhmät.

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

Poista käyttäjä

Voit poistaa käyttäjän käyttämällä remove: yes -käskyä.

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

Luo uusi ryhmä

Luo uusi ryhmä ryhmä-moduulin avulla.

- name: Create a group
  group:
    name: developers

7. Luo tiedostoja ja hakemistoja Ansiblella

Käytä tiedosto-moduulia luodaksesi tiedostoja hakemistoista.

Luo uusi hakemisto

Esimerkiksi uuden hakemiston luomiseen.

---
- hosts: webservers
  tasks:

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

Voit lisätä muita määritteitä, kuten omistajan, ryhmän ja tiedoston käyttöoikeudet.

- hosts: webservers
  tasks:

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

Lisäksi voit luoda hakemistoja rekursiivisesti recurse: yes -käskyn avulla.

---
- hosts: webservers
  tasks:

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

Luo tiedosto

Luo tiedosto valitsemalla 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

8. Tallennuksen hallinta Ansiblen avulla

lvg-moduulia käytetään LVM-taltioiden ja -ryhmien määrittämiseen.

Luo LVM-taltioryhmä

Harkitse alla olevaa ohjekirjaa:

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

Tämä luo /dev/sda1-osion päälle taltioryhmän, jonka fyysinen laajuus on 32 Mt.

Kun olet luonut, käytä lvol-moduulia luodaksesi looginen taltio kuvan mukaisesti

Luo looginen volyymi

---
    - hosts: webservers
      tasks: 

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

9. Tiedostojärjestelmien hallinta Ansiblen avulla

Jos haluat luoda tiedostojärjestelmän lohkolaitteeseen, käytä tiedostojärjestelmä-moduulia.

Luo tiedostojärjestelmä

Alla oleva ohjekirja luo lohkotaltiolle tiedostojärjestelmätyypin xfs.

---
    - hosts: webservers
      tasks: 

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

Liitä tiedostojärjestelmä

Seuraavaksi voit jatkaa lohkotaltion asentamista käyttämällä mount-moduulia alla olevan ohjekirjan mukaisesti:

---
    - hosts: webservers
      tasks: 

       - name: Mount a filesystem
         mount:
         
           fstype: xfs
           src: /dev/vg1/lvol1
           path: /opt/web
           state: mounted
Johtopäätös

Tämä päättää aiheen. Olemme käsitelleet erilaisia järjestelmänhallintatehtäviä, jotka voidaan suorittaa tietyillä Ansible Playbooksin sisäänrakennetuilla moduuleilla.