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:

  1. Action Plugins: Defineixen com s'executen les tasques.
  2. Cache Plugins: Gestionen l'emmagatzematge en memòria cau de fets.
  3. Callback Plugins: Permeten personalitzar la sortida de l'execució.
  4. Connection Plugins: Gestionen com Ansible es connecta als hosts.
  5. Filter Plugins: Proporcionen filtres personalitzats per a les variables.
  6. Lookup Plugins: Permeten obtenir dades externes.
  7. Test Plugins: Defineixen proves personalitzades per a les variables.
  8. 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

  1. Crear l'Estructura del Plugin

    Crea un directori per al teu plugin:

    mkdir -p filter_plugins
    
  2. 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
            }
    
  3. 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ó

  1. Crea un playbook que utilitzi el plugin de connexió local per executar una tasca en el host local.
  2. 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

  1. Crea un plugin de filtre personalitzat que converteixi una cadena a majúscules.
  2. Utilitza aquest plugin en un playbook per mostrar una cadena en majúscules.

Solució

  1. 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
            }
    
  2. 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.

© Copyright 2024. Tots els drets reservats