IBM Cloud Docs
Creación de roles y galaxias de Ansible

Creación de roles y galaxias de Ansible

Un rol Ansible se puede utilizar para separar un playbook Ansible significativo en piezas reutilizables llamadas roles. Un rol define un conjunto de tareas que desea ejecutar en los hosts de destino. Para ejecutar estas tareas en los hosts, debe hacer referencia al rol en el playbook Ansible.

Ansible Galaxy es un repositorio para los roles de Ansible que están disponibles para caer directamente en sus Playbooks para agilizar los proyectos de automatización. Un nuevo administrador de sistemas puede empezar a automatizar con Ansible en cuestión de horas.

Puede crear sus propios roles o utilizar roles existentes de Ansible Galaxy.

Crear sus propios roles en Ansible

Para optimizar el playbook Ansible, puede decidir separar las tareas del playbook creando roles y haciendo referencia a ellos en el playbook. Utilícelo para cargar automáticamente variables relacionadas, archivos, tareas, manejadores y otros artefactos de Ansible basados en una estructura de archivos conocida.

  1. Identifique las tareas del playbook que desea reutilizar en varios hosts. Por ejemplo, puede agrupar las tareas que desea ejecutar en todos los hosts y tareas que desea ejecutar en los servidores web y en las bases de datos. Cada grupo de tareas puede ser un rol.

  2. Cree la estructura de roles Ansible en el repositorio GitHub. Los roles se deben almacenar en un directorio roles relativo al playbook Ansible. El directorio roles puede tener un subdirectorio como /roles/db/ que describa las tareas del archivo main.yml.

    ├── roles
        └── db
            └── tasks
                └── main.yml
    ├── playbook.yaml
    ├── README.md
    
  3. Añada las tareas que desea ejecutar en un archivo main.yml. En el ejemplo siguiente, debe separar la tarea de descargar el repositorio de la comunidad MySQL de su playbook principal y ponerla en un archivo main.yml.

    - name: Download MySQL Community Repo
        get_url:
        url: https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
        dest: /tmp
    
  4. Haga referencia al rol en el playbook Ansible.

     - name: deploy MySQL and configure the databases
       hosts: all
       remote_user: root
    
       roles:
         - db
       tasks:
         - shell: "hostname"
    

Para más información sobre otros archivos y condiciones que puede añadir a su rol, consulte la documentación de Ansible.

Instalar roles desde Ansible Galaxy

Puede elegir utilizar roles existentes de Ansible Galaxy en su libro de jugadas. Ansible Galaxy ofrece unidades de trabajo predefinidas de la comunidad Ansible que están disponibles como roles y colecciones.

  1. Navegue por el repositorio de Ansible Galaxy para encontrar los roles que desee.

  2. Cree un archivo requirements.yml donde especifique todos los roles que necesite. Para obtener una visión general de cómo hacer referencia a los roles de Ansible Galaxy, consulte la documentación Ansible. En el ejemplo siguiente, desea utilizar el rol andrewrothstein.kubectl de Ansible Galaxy.

    ---
    roles:
      - name: andrewrothstein.kubectl
    
  3. Añada una carpeta roles al repositorio GitHub relativo al playbook y almacene el archivo requirements.yml en esta carpeta como se muestra en este ejemplo.

        ├── roles
            └── requirements.yml
        ├── playbook.yaml
        ├── README.md
    
  4. Haga referencia al rol en el playbook Ansible. En este ejemplo se utiliza el rol denominado andrewrothstein.kubectl.

    - hosts: all
      roles:
        - role: andrewrothstein.kubectl
    

Para obtener más información sobre los ejemplos de playbook Ansible, consulte el playbook Ansible proporcionado por IBM®