Com utilitzar els mòduls Ansible per a tasques d'administració del sistema - Part 6
En aquesta part 6 d'alguns mòduls d'Ansible dels temes anteriors, ara aprofundirem i descobrirem mòduls addicionals que són útils per dur a terme una sèrie de tasques d'administració del sistema.
Tindreu una idea bàsica de cada mòdul i veureu les opcions disponibles per realitzar determinades tasques.
- Gestió de paquets de programari i repositoris a Ansible
- Gestió de serveis mitjançant Ansible
- Gestió del tallafoc amb Ansible
- Arxivant fitxers o carpetes amb Ansible
- Programar tasques amb Ansible
- Gestiona usuaris i grups amb Ansible
- Creeu fitxers i directoris amb Ansible
- Gestió de l'emmagatzematge amb Ansible
- Gestió de sistemes de fitxers amb Ansible
Quan instal·leu paquets en sistemes Linux, les diferents distribucions vénen amb diferents gestors de paquets. Per a les distribucions de RedHat, tenim apt.
Ansible inclou un mòdul anomenat package, que elimina la necessitat d'utilitzar diferents gestors de paquets per a diferents sistemes. Utilitza automàticament el gestor de paquets corresponent del sistema amfitrió, facilitant així la feina.
Per exemple, per instal·lar htop en un grup d'amfitrions que incloguin les distribucions de Debian i RedHat, utilitzeu el mòdul de paquets tal com es mostra al manual install_htop.yml a continuació.
--- - name: Install htop on Ubuntu and CentOS hosts: all tasks: - package: name: htop state: installed
NOTA: Els noms dels paquets poden diferir d'un sistema operatiu a un altre. Per exemple, tenim httpd a les distribucions Redhat i Apache2 per als sistemes Debian/Ubuntu, tots els quals denoten el servidor web Apache. Per tant, s'ha de tenir molta precaució en passar aquests paquets. Normalment, el millor és utilitzar variables o declaracions condicionals.
A continuació, tenim un mòdul de serveis, que s'utilitza per gestionar serveis en sistemes Linux. S'utilitza per iniciar, aturar o reiniciar un servei. També podeu utilitzar-lo per habilitar un servei de manera que quan s'iniciï un sistema, s'iniciï automàticament.
Per exemple, per iniciar i habilitar el servidor web Apache a RHEL 8, utilitzeu el servei tal com es mostra.
--- - name: Start and enable httpd service hosts: webservers tasks: - service: name: httpd state: started enabled: yes
Per aturar el servei httpd, passeu l'atribut stopped.
--- - name: Stop httpd service hosts: webservers tasks: - service: name: httpd state: stopped
Per reiniciar el servei httpd, passeu l'atribut reiniciat.
--- - name: Restart httpd service hosts: webservers tasks: - service: name: httpd state: restarted
Una altra tasca important que duen a terme els administradors del sistema és la gestió del tallafoc. Als llibres de jugades d'Ansible, això s'ha fet molt més fàcil amb els mòduls firewalld i ufw. Podeu configurar el tallafoc per permetre o bloquejar un port o servei o fins i tot una adreça d'origen.
Entrem i donem un cop d'ull a alguns exemples:
--- - name: Allow port 80 hosts: webservers tasks: -firewalld: port: 80/tcp permanent: yes state: enabled
Al llibre de jugades anterior, el port 80 està permès a través del tallafoc.
L'opció permanent: sí
fa complir la regla del tallafoc i la fa persistent durant els reinicis. Tanmateix, aquesta regla no s'aplica immediatament. Només entra en vigor després d'un reinici. Per fer complir la regla immediatament, utilitzeu l'opció immediat: yes
.
Per especificar les adreces permeses, utilitzeu la instrucció source:0.0.0.0/0.
- firewalld: source: 192.168.0.0/24 zone: public state: enabled
Per especificar un rang de ports als quals es permetrà utilitzar l'opció de port de la manera següent:
- firewalld: port: 213-567/udp permanent: yes state: enabled
Per bloquejar el port, canvieu l'opció d'estat a desactivat com es mostra:
-firewalld: port: 80/tcp permanent: yes state: disabled
A part d'afegir/bloquejar un port, també podeu aplicar les mateixes regles a un servei. I és ben senzill. Només cal que utilitzeu el mòdul de servei i afegiu el servei que voleu afegir i assegureu-vos que l'opció d'estat estigui activada.
- firewalld: service: https permanent: true state: enabled
Per bloquejar el servei, configureu l'opció d'estat com a desactivada.
- firewalld: service: https permanent: true state: disabled
Arxivar es refereix a la compressió d'un fitxer o carpeta a un format que sigui fàcilment portàtil i de mida més petita. Ansible s'envia amb un mòdul anomenat arxiu. Comprimir un fitxer és tan fàcil com es fa. Tot el que cal és especificar la ruta d'origen del fitxer i la destinació del fitxer comprimit.
Penseu en un llibre de jocs compress.yml a continuació.
--- - hosts: webservers tasks: • name: Compress a folder archive: path: /opt/data/web dest: /tmp/web.gz
El llibre de jocs anterior comprimeix el directori /opt/data/web i el desa a /tmp/web.gz.
El format de compressió per defecte és .gz
, però, això es pot especificar mitjançant l'atribut format. Fes una mostra del següent llibre de jugades.
--- - hosts: webservers Tasks: - name: Create a zip archive archive: path: /opt/data/web dest: /tmp/web format: zip
El llibre de jugades anterior comprimeix el directori /opt/data/web a /tmp/web.zip.
També podeu descomprimir un fitxer comprimit mitjançant l'atribut unarchive. Considereu el llibre de jugades a continuació.
--- - hosts: webservers tasks: - name:Uncompress /tmp/web.gz to/opt directory on Ansible controller unarchive: src: /tmp/web.bz2 dest: /opt/
El llibre de jugades anterior descomprimeix el fitxer /opt/data/web.gz a /opt al controlador Ansible.
Per especificar el sistema font remot, utilitzeu l'opció 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
El llibre de jugades anterior descomprimeix el fitxer /tmp/web.bz2 del node remot al directori /opt/.
El mòdul cron ajuda a programar treballs a Ansible Playbooks.
Considereu el llibre de jugades a continuació.
--- - 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
El llibre de jocs executa el guió d'assistència el 5 d'abril a les 17:00.
Si voleu programar aquest script perquè s'executi només si el dia 5 d'abril és dilluns, feu servir l'atribut dia laborable: 1. 0 indica diumenge i 6 indica dissabte segons la notació cron.
month: 4 day: 5 hour: 17 minute: 00 weekday: 1
Un asterisc (*) en qualsevol d'aquests camps indica qualsevol valor.
Per executar la tasca el 5 d'abril a les 17:00, sigui quin sigui el dia laborable, utilitzeu els paràmetres d'hora tal com es mostra.
month: 4 day: 5 hour: 17 minute: 00 weekday: *
Per executar el treball cron el 5è dia de cada mes a les 17:00, utilitzeu la configuració següent.
month: * day: 5 hour: 17 minute: 00 weekday: *
Per executar el treball cron diàriament a les 5:00 pm, configureu la configuració de l'hora tal com es mostra:
month: * day: * hour: 17 minute: 00 weekday: *
Per executar el treball cron cada 5 hores, utilitzeu el valor del pas */5
tal com es mostra.
month: * day: * hour: */5 minute: * weekday: *
També podeu gestionar usuaris i grups dins dels llibres de jugades d'Ansible sense esforç.
Per crear un usuari nou, utilitzeu el mòdul d'usuari tal com es mostra.
--- - hosts: webservers tasks: - name: Create a new user user: name: Jack
També podeu afegir opcions addicionals com ara UID, grups.
- name: Create a new user user: name: Jack comment: Jack Peters uid: 1002 group: administrators shell: /bin/bash
Per eliminar l'usuari, utilitzeu la instrucció remove: yes
.
- name: Remove the user 'Jack' user: name: Jack state: absent remove: yes
Per crear un grup nou, utilitzeu el mòdul de grup.
- name: Create a group group: name: developers
Per crear fitxers de directoris, utilitzeu el mòdul de fitxers.
Per exemple, per crear un directori nou.
--- - hosts: webservers tasks: - name: Create a new directory file: path: /opt/app state: directory
Podeu afegir altres atributs com ara permisos de propietari, grup i fitxer.
- hosts: webservers tasks: - name: Create a new directory file: path: /opt/web state: directory owner: www-data group: www-data mode: 0644
A més, podeu crear directoris de manera recursiva utilitzant la instrucció 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
Per crear un fitxer, utilitzeu l'opció estat: toc
.
--- - hosts: webservers tasks: - name: Create a new file file: path: /opt/web/index.html state: touch owner: www-data group: www-data mode: 0644
El mòdul lvg s'utilitza per configurar volums i grups LVM.
Considereu el llibre de jugades següent:
--- - hosts: webservers tasks: • name: Create lVM volume group lvg: vg: vg1 pvs: /dev/sda1 pesize: 32
Això crea un grup de volums a la part superior de la partició /dev/sda1
amb una mida d'extensió física de 32 MB.
Un cop creat, utilitzeu el mòdul lvol per crear un volum lògic tal com es mostra
--- - hosts: webservers tasks: - name: Create lVM volume lvol: vg: vg1 lv: lvol1 pvs: /dev/sda1
Per crear un sistema de fitxers en un dispositiu de blocs, utilitzeu el mòdul del sistema de fitxers.
El llibre de jocs següent crea el tipus de sistema de fitxers xfs al volum del bloc.
--- - hosts: webservers tasks: - name: Create a filesystem filesystem: fstype: xfs dev: /dev/vg1/lvol1
A continuació, podeu procedir a muntar el volum del bloc mitjançant el mòdul de muntatge, tal com es mostra al llibre de jocs següent:
--- - hosts: webservers tasks: - name: Mount a filesystem mount: fstype: xfs src: /dev/vg1/lvol1 path: /opt/web state: mounted
Això conclou el tema. Hem cobert diverses tasques d'administració del sistema que es poden realitzar mitjançant mòduls integrats específics a Ansible Playbooks.