Kako uporabljati odgovorne module za sistemska skrbniška opravila - 6. del
V tem 6. delu nekaj odgovornih modulov v preteklih temah bomo zdaj poglobili in odkrili dodatne module, ki so v pomoč pri izvajanju številnih nalog sistemske administracije.
Dobili boste osnovno predstavo o vsakem modulu in si ogledali možnosti, ki so na voljo za izvajanje določenih nalog.
- Upravljanje programskih paketov in skladišč v programu Ansible
- Upravljanje storitev s pomočjo programa Ansible
- Upravljanje požarnega zidu z Ansible
- Arhiviranje datotek ali map z Ansible
- Načrtujte naloge z Ansible
- Upravljanje uporabnikov in skupin z Ansible
- Ustvarite datoteke in imenike z Ansible
- Upravljanje shrambe z Ansible
- Upravljanje datotečnih sistemov z Ansible
Pri nameščanju paketov v sisteme Linux so različne distribucije opremljene z različnimi upravitelji paketov. Za distribucije RedHat imamo primerne.
Ansible je opremljen z modulom, imenovanim paket, ki odpravlja potrebo po uporabi različnih upraviteljev paketov za različne sisteme. Samodejno uporablja ustreznega upravitelja paketov gostiteljskega sistema in s tem olajša delo.
Na primer, da namestite htop v skupino gostiteljev, ki obsegata distribucije Debian in RedHat, uporabite paketni modul, kot je prikazano v spodnjem priročniku install_htop.yml.
--- - name: Install htop on Ubuntu and CentOS hosts: all tasks: - package: name: htop state: installed
OPOMBA: Imena paketov se lahko razlikujejo od operacijskega sistema do operacijskega sistema. Na primer, httpd imamo v distribucijah Redhat in Apache2 za sisteme Debian/Ubuntu, ki označujejo spletni strežnik Apache. Zato je potrebna posebna previdnost pri podajanju teh paketov. Običajno je najbolje uporabiti spremenljivke ali pogojne stavke.
Nato imamo servisni modul, ki se uporablja za upravljanje storitev v sistemih Linux. Uporablja se za zagon, zaustavitev ali ponovni zagon storitve. Uporabite ga lahko tudi za omogočanje storitve, tako da ob zagonu sistema samodejno zažene storitev.
Če želite na primer zagnati in omogočiti spletni strežnik Apache na RHEL 8, uporabite storitev, kot je prikazano.
--- - name: Start and enable httpd service hosts: webservers tasks: - service: name: httpd state: started enabled: yes
Če želite ustaviti storitev httpd, podajte atribut stop.
--- - name: Stop httpd service hosts: webservers tasks: - service: name: httpd state: stopped
Če želite znova zagnati storitev httpd, podajte vnovič zagnani atribut.
--- - name: Restart httpd service hosts: webservers tasks: - service: name: httpd state: restarted
Druga pomembna naloga sistemskih skrbnikov je upravljanje požarnega zidu. V Ansible playbooks je to z moduli požarni zid in ufw veliko lažje. Požarni zid lahko konfigurirate tako, da dovoli ali blokira vrata ali storitve ali celo izvorni naslov.
Skočimo in si oglejmo nekaj primerov:
--- - name: Allow port 80 hosts: webservers tasks: -firewalld: port: 80/tcp permanent: yes state: enabled
V zgornji knjigi iger so vrata 80 dovoljena čez požarni zid.
Možnost permanent: yes
uveljavi pravilo požarnega zidu in ga vztraja pri ponovnem zagonu. Vendar to pravilo ne velja takoj. Velja šele po ponovnem zagonu. Če želite pravilo uveljaviti takoj, uporabite možnost takoj: da
.
Če želite določiti dovoljene naslove, uporabite stavek source: 0.0.0.0/0.
- firewalld: source: 192.168.0.0/24 zone: public state: enabled
Če želite določiti obseg vrat, ki jim bo dovoljena uporaba možnosti vrat, kot sledi:
- firewalld: port: 213-567/udp permanent: yes state: enabled
Če želite blokirati vrata, spremenite možnost stanja na onemogočeno, kot je prikazano:
-firewalld: port: 80/tcp permanent: yes state: disabled
Poleg dodajanja/blokiranja vrat lahko enaka pravila uporabite tudi za storitev. In to je povsem preprosto. Samo uporabite servisni modul in dodajte storitev, ki jo želite dodati, ter zagotovite, da je možnost stanja nastavljena na omogočeno.
- firewalld: service: https permanent: true state: enabled
Če želite blokirati storitev, nastavite možnost države na onemogočeno.
- firewalld: service: https permanent: true state: disabled
Arhiviranje se nanaša na stiskanje datoteke ali mape v obliko, ki je lahko prenosljiva in manjša. Ansible je poslan z modulom, imenovanim arhiv. Stiskanje datoteke je približno tako enostavno kot hitro. Vse, kar je potrebno, je določiti izvorno pot datoteke in cilj stisnjene datoteke.
Spodaj razmislite o knjigi za kompresije.
--- - hosts: webservers tasks: • name: Compress a folder archive: path: /opt/data/web dest: /tmp/web.gz
Zgornji priročnik stisne/opt/data/spletni imenik in ga shrani v /tmp/web.gz.
Privzeti format stiskanja je .gz
, vendar ga lahko določite z atributom format. Vzorec naslednje Playbook.
--- - hosts: webservers Tasks: - name: Create a zip archive archive: path: /opt/data/web dest: /tmp/web format: zip
Zgornja knjiga navodil za stiskanje/opt/data/spletni imenik stisne v /tmp/web.zip.
Stisnjeno datoteko lahko tudi stisnete z uporabo atributa za arhiviranje. Razmislite o spodnji knjigi iger.
--- - hosts: webservers tasks: - name:Uncompress /tmp/web.gz to/opt directory on Ansible controller unarchive: src: /tmp/web.bz2 dest: /opt/
Zgornja knjižica datotek /opt/data/web.gz stisne v/opt na krmilniku Ansible.
Če želite določiti sistem oddaljenega vira, uporabite možnost 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
Zgornja knjižica datotek /tmp/web.bz2 na oddaljenem vozlišču stisne v imenik/opt /.
Modul cron pomaga pri razporejanju opravil v Ansible Playbooks.
Razmislite o spodnji knjigi iger.
--- - 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
V knjigi predstavitev je 5. aprila ob 17.00 predstavljen scenarij za udeležbo.
Če želite razporediti izvajanje tega skripta samo, če je 5. april ponedeljek, uporabite atribut dayday: 1. 0 označuje nedeljo, 6 pa soboto glede na cron zapis.
month: 4 day: 5 hour: 17 minute: 00 weekday: 1
Zvezdica (*) v katerem koli od teh polj označuje katero koli vrednost.
Če želite opravilo opraviti 5. aprila ob 17:00, ne glede na delovni dan, uporabite časovne parametre, kot je prikazano.
month: 4 day: 5 hour: 17 minute: 00 weekday: *
Če želite opraviti opravilo cron 5. dan vsakega meseca ob 17:00, uporabite spodnje nastavitve.
month: * day: 5 hour: 17 minute: 00 weekday: *
Če želite vsak dan izvrševati opravilo cron ob 17:00, nastavite nastavitve časa, kot je prikazano:
month: * day: * hour: 17 minute: 00 weekday: *
Če želite opraviti opravilo cron vsakih 5 ur, uporabite vrednost koraka */5
, kot je prikazano.
month: * day: * hour: */5 minute: * weekday: *
Prav tako lahko povsem enostavno upravljate uporabnike in skupine v igranih knjigah Ansible.
Če želite ustvariti novega uporabnika, uporabite uporabniški modul, kot je prikazano.
--- - hosts: webservers tasks: - name: Create a new user user: name: Jack
Dodate lahko tudi dodatne možnosti, kot so UID, skupine.
- name: Create a new user user: name: Jack comment: Jack Peters uid: 1002 group: administrators shell: /bin/bash
Če želite uporabnika odstraniti, uporabite stavek remove: yes
.
- name: Remove the user 'Jack' user: name: Jack state: absent remove: yes
Če želite ustvariti novo skupino, uporabite modul skupine.
- name: Create a group group: name: developers
Če želite ustvariti datoteke iz imenikov, uporabite datotečni modul.
Na primer, da ustvarite nov imenik.
--- - hosts: webservers tasks: - name: Create a new directory file: path: /opt/app state: directory
Dodate lahko druge atribute, kot so dovoljenja lastnika, skupine in datoteke.
- hosts: webservers tasks: - name: Create a new directory file: path: /opt/web state: directory owner: www-data group: www-data mode: 0644
Poleg tega lahko imenike rekurzivno ustvarite z uporabo stavka rekurz: da.
--- - hosts: webservers tasks: - name: Create directories recursively file: path: /opt/web/app state: directory owner: www-data group: www-data mode: 0644 recurse: yes
Če želite ustvariti datoteko, uporabite možnost 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
Modul lvg se uporablja za konfiguriranje nosilcev in skupin LVM.
Razmislite o spodnji knjigi iger:
--- - hosts: webservers tasks: • name: Create lVM volume group lvg: vg: vg1 pvs: /dev/sda1 pesize: 32
To ustvari skupino nosilcev na particiji /dev/sda1
s fizičnim obsegom 32 MB.
Ko je enkrat ustvarjen, z modulom lvol ustvarite logični nosilec, kot je prikazano
--- - hosts: webservers tasks: - name: Create lVM volume lvol: vg: vg1 lv: lvol1 pvs: /dev/sda1
Če želite ustvariti datotečni sistem v blokovni napravi, uporabite modul datotečnega sistema.
Spodnja knjižica ustvarja vrsto datotečnega sistema xfs na nosilcu bloka.
--- - hosts: webservers tasks: - name: Create a filesystem filesystem: fstype: xfs dev: /dev/vg1/lvol1
Nato lahko nadaljujete z namestitvijo nosilca bloka z modulom za pritrditev, kot je prikazano v spodnji knjigi predvajanja:
--- - hosts: webservers tasks: - name: Mount a filesystem mount: fstype: xfs src: /dev/vg1/lvol1 path: /opt/web state: mounted
S tem je tema zaključena. Obravnavali smo različne naloge sistemske administracije, ki jih lahko opravijo posebni vgrajeni moduli v Ansible Playbooks.