Ansible es una popular herramienta de gestión de la configuración de código abierto. Por otro lado, Ansible Galaxy es un repositorio de roles de Ansible.

Es posible que sólo tenga un puñado de playbooks como administrador de sistemas principiante. A medida que sus habilidades de automatización mejoren y se familiarice con Ansible, aprenderá todas las mejores prácticas. A medida que aumente sus playbooks, también se dará cuenta de lo importante que es Ansible Galaxy.

¿Qué es Ansible Galaxy?

Ansible Galaxy es un repositorio en línea de código abierto basado en la web para el contenido de Ansible (principalmente roles y colecciones). Es casi como si usted hubiera creado algo nuevo y quisiera compartirlo con los demás.

Si tiene algún problema con la automatización de Ansible o necesita una solución preempaquetada por otros para poner en marcha sus proyectos de automatización, Ansible Galaxy puede ayudarle. Por ejemplo, podría tener roles, colecciones, módulos o plugins. Muchos miembros de la comunidad ya han subido sus colecciones y roles Ansible.

Ansible-Galaxy-2

Para realizar tareas como instalar roles desde Galaxy o cualquier SCM git, crear o eliminar roles, o realizar algunas tareas en el sitio de Galaxy, podemos utilizar el comando ansible-galaxy. Este comando viene preinstalado con Ansible, por lo que puede utilizarlo inmediatamente después de instalar Ansible.

El proyecto Galaxy es un proyecto de código abierto que nos permite alojar nuestros servidores Galaxy internos. Para utilizar el servidor interno Galaxy, tendrá que editar la configuración por defecto en el archivo Ansible.cfg con la dirección del servidor interno Galaxy porque, por defecto, utiliza la dirección del servidor galaxy.ansible.com.

Visión general de Ansible

Ansible puede describirse como un multiplicador que automatiza y escala infraestructuras de todos los tamaños. Puede utilizarse para gestionar configuraciones, orquestar despliegues y otras funciones. Ansible es muy fácil de configurar. Ansible puede ser utilizado incluso por un administrador de sistemas novato para automatizar la infraestructura en tan sólo unas horas.

Ansible automatiza utilizando el protocolo SSH. El mecanismo de control utiliza una conexión SSH para comunicarse con sus hosts de destino (normalmente hosts Linux). Los administradores de sistemas Windows pueden seguir utilizando Ansible para automatizar sus entornos Windows con WinRM en lugar de SSH. La máquina de control debe seguir ejecutando Linux.

Ansible puede realizar tareas comunes de sysadmin como parcheado, actualización, gestión de grupos y usuarios, aprovisionamiento y otras tareas administrativas.

Ansible es la herramienta de gestión de la configuración, orquestación y despliegue más utilizada y popular en la actualidad. Su sencillez es uno de sus principales puntos fuertes. Es simple, potente, pero sin agentes. Esto significa que un administrador de sistemas nuevo o principiante puede automatizar la infraestructura en cuestión de horas. Ansible permite un escalado rápido, eficiencia y multifuncionalidad.

Trabajar en Ansible Galaxy

A continuación, vamos a abrir el terminal y ejecutar algunos comandos utilizando Ansible Galaxy. Pero antes de eso, debe tener la última versión de Ansible instalada en su sistema.

Cuando tenga la última versión de Ansible instalada en su sistema, simplemente introduzca ansible-galaxy en el terminal, y obtendrá todas las opciones disponibles con el Galaxy.

ubuntu@ubuntu-VirtualBox:~$ ansible-galaxy
galaxy-ansible

En primer lugar, puede empezar con el comando init y crear un rol. Aquí estoy creando un rol ‘testing’. Utilice el comando ls para comprobar si el rol se ha creado correctamente. El comando init también crea los archivos necesarios dentro del directorio del rol testing.

ubuntu@ubuntu-VirtualBox:~$ ansible-galaxy init testing
ansible-galaxy-init

Ansible galaxy es una comunidad grande y activa donde ya se han creado muchos roles que puede utilizar directamente.

A continuación se muestra la página que se abrirá al navegar por‘galaxy.ansible.com‘, o podemos decir que es la página de inicio del sitio web ‘Ansible Galaxy’. Podemos hacer clic en cualquier categoría popular de la página de inicio o hacer clic en el botón ‘Buscar’ para obtener más filtros y aplicar una búsqueda granular.

ansible-galaxy

Por ejemplo, si busca un rol de servidor MySQL, sólo tiene que buscarlo y hacer clic en el botón de filtro. Puede ver que geerlingguy tiene el máximo de descargas; podemos intentar instalar este rol. Haga clic en geerlingguy MySQL.

ansible-galaxy-mysql

Entonces obtendrá el comando de instalación para instalar este rol utilizando ansible-galaxy.

ansible-galaxy-install-mysql

Ejecute el comando mencionado en la captura anterior para descargar e instalar el rol de servidor MySQL en su máquina.

ubuntu@ubuntu-VirtualBox:~$ ansible-galaxy install geerlingguy.mysql
ansible-galaxy-install

Si ya sabe qué rol buscar por algún autor en particular, puede utilizar el comando de búsqueda como se muestra a continuación.

ubuntu@ubuntu-VirtualBox:~$ ansible-galaxy search elasticsearch --author geerlingguy
ansible-galaxy-search

Comandos comunes de Ansible Galaxy

El comando ansible-galaxy gestiona roles y colecciones utilizando galaxy.ansible.com. A continuación encontrará algunos comandos ansible-galaxy muy útiles que todo administrador de sistemas utiliza de vez en cuando:

  • ansible-galaxy list: Este comando de galaxy muestra una lista de todos los roles instalados, con sus números de versión.
  • ansible-galaxyremove: Este comando galaxy elimina un rol instalado en el sistema.
  • ansible-galaxy info: Este comando galaxy le proporcionará información detallada sobre Ansible Galaxy.
  • ansible-galaxyinit: Este comando de galaxia se puede utilizar para crear una plantilla de rol adecuada para su envío a Ansible Galaxy.
  • ansible-galaxy import: Este comando de galaxia requiere un inicio de sesión para importar un rol desde el sitio web oficial de galaxia.

Los comandos anteriores (init, import, install, remove) pueden utilizarse con el comando ansible-galaxy collection para gestionar colecciones utilizando Ansible galaxy.

Ahora hablemos de roles y colecciones en Ansible Galaxy.

Crear roles con Ansible Galaxy

Ansible Galaxy es básicamente un gran repositorio público de roles Ansible. Los roles vienen con READMEs que explican el uso y las variables. Galaxy tiene muchos roles que evolucionan y crecen continuamente.

Galaxy puede añadir fuentes de roles como GitHub utilizando git. Ansible Galaxy nos permite crear roles Ansible utilizando el comando ansible-galaxy. Ansible-galaxy init se puede utilizar para inicializar un nuevo rol galaxy, o puede utilizar el comando ansible-galaxy install <nombre del rol> para instalar el rol.

Antes de poder utilizarlos en los playbooks, el rol debe descargarse. Una vez colocados en el directorio por defecto /etc/ansible/roles, podrá encontrar ejemplos de roles.

Estructura de roles de Ansible y su significado

A continuación se muestran los archivos y directorios que se crean cuando se instala un rol:

  • README.md es el archivo Readme que describe el rol. El archivo readme contiene todos los detalles sobre los parámetros de entrada y yml de ejemplo.
  • tasks – Todas las tareas pueden ser alistadas por el Rol en tasks. El punto de entrada del Rol es Main.yml. Aquí comienza la ejecución. Este archivo puede contener otros archivos.
  • Manejadores – Esta categoría incluye manejadores que pueden ser utilizados en este rol o en cualquier otro rol.
  • defaults – Las variables por defecto para el Rol.
  • vars – Variables que son más importantes que las predeterminadas para el Rol.
  • Archivos – Estos archivos pueden ser desplegados usando el Rol.
  • Plantillas – Esta sección contiene plantillas que se pueden utilizar a través de Role.
  • meta – Los metadatos pueden utilizarse para definir los roles en meta. Este archivo también debe incluir cualquier dependencia de rol.
  • Pruebas – Pruebas CI a ejecutar.
  • library – Incrustación de módulos o plugins en roles. No creado por el comando init. También puede crear un módulo personalizado en Python en esta carpeta y luego utilizarlo en sus tareas.

Crear colecciones con Ansible Galaxy

Ansible Galaxy es la mejor herramienta para gestionar roles y se utiliza desde hace años. Sin embargo, verá nuevas funciones o cambios en Ansible Galaxy. La versión 2.2.8 de Ansible incluye ahora la función de colecciones.

El contenido de Ansible puede distribuirse mediante colecciones. Se utilizan para empaquetar y distribuir playbooks y roles, módulos, así como plugins.

La siguiente estructura es la base de las colecciones:

colección/
├── docs/
├── galaxy.yml
├── plugins/
│ ├──
módulos/
│ └── module1.py
│ ├──
inventario/
│ └── .../
├── README.md
├── roles/
│ ├──
roles1/
│ ├──
role2/
│ └── .../
├── libros de jugadas/
│ ├──
ficheros/
│ ├──
vars/
│ ├──
plantillas/
│ └── tareas/
└── pruebas/

Creación de un esqueleto de colección

Para instalar una colección en su ordenador, puede utilizar el comando de instalación de colecciones ansible-galaxy.

Cabe destacar que algunos subcomandos también pueden utilizarse con ansible galaxy.

  • init: Crea una estructura básica de colección basada en la plantilla predeterminada de ansible o en la suya propia
  • build: Crea un artefacto de colección que puede subirse a Galaxy o a su propio repositorio
  • publicar: Galaxy publica un artefacto de colección construido
  • instalar: Instala una o más colecciones

Conclusión

Ansible galaxy es una gran manera de organizar y pensar en sus siempre crecientes libros de roles. Ansible Galaxy cuenta con aproximadamente 39.000 autores de la comunidad, 30.000 roles y 1656 colecciones que pueden utilizarse para poner en marcha rápidamente nuestro proyecto de automatización. La guía del desarrollador y la guía del colaborador explican cómo contribuir al código existente de Ansible Galaxy, que es un proyecto de código abierto.

También puede interesarle Tareas de administrador de sistemas que puede automatizar con Ansible.