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:
- Ohjelmistopakettien ja tietovarastojen hallinta Ansiblessa
- Palveluiden hallinta Ansiblen avulla
- Palomuurin hallinta Ansiblella
- Tiedostojen tai kansioiden arkistointi Ansiblella
- Aikatauluta tehtävät Ansiblen avulla
- Hallitse käyttäjiä ja ryhmiä Ansiblen avulla
- Luo tiedostoja ja hakemistoja Ansiblella
- Tallennustilan hallinta Ansiblella
- 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.