Els plugins d'Ansible són components que amplien la funcionalitat d'Ansible. Aquests plugins permeten personalitzar i estendre les capacitats d'Ansible per adaptar-se a necessitats específiques. En aquest tema, explorarem els diferents tipus de plugins disponibles, com crear-ne de nous i com utilitzar-los en els teus playbooks.
Tipus de Plugins d'Ansible
Ansible ofereix diversos tipus de plugins, cadascun amb una funció específica:
- Action Plugins: Defineixen com s'executen les tasques.
- Cache Plugins: Gestionen l'emmagatzematge en memòria cau de fets.
- Callback Plugins: Permeten personalitzar la sortida de l'execució.
- Connection Plugins: Gestionen com Ansible es connecta als hosts.
- Filter Plugins: Proporcionen filtres personalitzats per a les variables.
- Lookup Plugins: Permeten obtenir dades externes.
- Test Plugins: Defineixen proves personalitzades per a les variables.
- Vars Plugins: Gestionen variables addicionals.
Utilitzant Plugins Existents
Ansible ve amb una sèrie de plugins predefinits que es poden utilitzar directament. Per exemple, els plugins de connexió permeten a Ansible connectar-se a diferents tipus de sistemes, com SSH, WinRM, etc.
Exemple: Utilitzant un Plugin de Connexió
- name: Exemple d'ús d'un plugin de connexió hosts: windows connection: winrm tasks: - name: Comprovar la versió de Windows win_command: systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
En aquest exemple, utilitzem el plugin de connexió winrm
per connectar-nos a un host Windows.
Creant un Plugin Personalitzat
Crear un plugin personalitzat permet adaptar Ansible a necessitats específiques que no es poden cobrir amb els plugins existents. A continuació, veurem com crear un plugin de filtre personalitzat.
Exemple: Plugin de Filtre Personalitzat
-
Crear l'Estructura del Plugin
Crea un directori per al teu plugin:
mkdir -p filter_plugins
-
Escriure el Plugin
Crea un fitxer Python dins del directori
filter_plugins
:# filter_plugins/my_filters.py def reverse_string(value): return value[::-1] class FilterModule(object): def filters(self): return { 'reverse_string': reverse_string }
-
Utilitzar el Plugin en un Playbook
Ara pots utilitzar el teu plugin de filtre en un playbook:
- name: Exemple d'ús d'un plugin de filtre personalitzat hosts: localhost tasks: - name: Utilitzar el filtre reverse_string debug: msg: "{{ 'Ansible' | reverse_string }}"
Aquest playbook mostrarà el missatge "elbisnA".
Exercicis Pràctics
Exercici 1: Utilitzar un Plugin de Connexió
- Crea un playbook que utilitzi el plugin de connexió
local
per executar una tasca en el host local. - La tasca ha de mostrar la data i hora actual.
Solució
- name: Exemple d'ús del plugin de connexió local hosts: localhost connection: local tasks: - name: Mostrar la data i hora actual command: date
Exercici 2: Crear un Plugin de Filtre Personalitzat
- Crea un plugin de filtre personalitzat que converteixi una cadena a majúscules.
- Utilitza aquest plugin en un playbook per mostrar una cadena en majúscules.
Solució
-
Crear el Plugin
# filter_plugins/my_filters.py def to_uppercase(value): return value.upper() class FilterModule(object): def filters(self): return { 'to_uppercase': to_uppercase }
-
Utilitzar el Plugin en un Playbook
- name: Exemple d'ús del plugin de filtre to_uppercase hosts: localhost tasks: - name: Convertir una cadena a majúscules debug: msg: "{{ 'ansible' | to_uppercase }}"
Aquest playbook mostrarà el missatge "ANSIBLE".
Conclusió
Els plugins d'Ansible són una eina poderosa per personalitzar i estendre les capacitats d'Ansible. Hem explorat els diferents tipus de plugins, com utilitzar els plugins existents i com crear-ne de nous. Amb aquesta informació, pots començar a adaptar Ansible a les teves necessitats específiques, millorant l'eficiència i la flexibilitat de les teves automatitzacions.
Ansible: De Principiant a Avançat
Mòdul 1: Introducció a Ansible
Mòdul 2: Conceptes bàsics d'Ansible
Mòdul 3: Playbooks
- Introducció als Playbooks
- Escrivint el teu primer Playbook
- Estructura del Playbook
- Variables i Fets
- Condicionals i Bucles
Mòdul 4: Rols
Mòdul 5: Tècniques Avançades de Playbook
Mòdul 6: Ansible Galaxy
Mòdul 7: Ansible Tower
- Introducció a Ansible Tower
- Instal·lant Ansible Tower
- Utilitzant Ansible Tower
- Gestionant Projectes i Inventaris