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.
-
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.
-
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 archivomain.yml
.├── roles └── db └── tasks └── main.yml ├── playbook.yaml ├── README.md
-
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 archivomain.yml
.- name: Download MySQL Community Repo get_url: url: https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm dest: /tmp
-
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.
-
Navegue por el repositorio de Ansible Galaxy para encontrar los roles que desee.
-
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 rolandrewrothstein.kubectl
de Ansible Galaxy.--- roles: - name: andrewrothstein.kubectl
-
Añada una carpeta
roles
al repositorio GitHub relativo al playbook y almacene el archivorequirements.yml
en esta carpeta como se muestra en este ejemplo.├── roles └── requirements.yml ├── playbook.yaml ├── README.md
-
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®