GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo descargar y usar los roles de Ansible Galaxy en Ansible Playbook

Ansible es la herramienta preferida en estos días si debe administrar varios dispositivos, ya sea Linux, Windows, Mac, dispositivos de red, VMware y muchos más. Lo que hace que Ansible sea popular es su agente sin funciones y su control granular. Si ha trabajado con python o tiene experiencia con yaml , se sentirá como en casa con Ansible. Para ver cómo puede instalar Ansible, haga clic aquí.

Los módulos de Ansible Core le permitirán administrar casi cualquier cosa si desea escribir libros de jugadas, sin embargo, a menudo hay alguien que ya ha escrito un rol para un problema que está tratando de resolver. Tomemos un ejemplo, desea administrar clientes NTP en las máquinas Linux, tiene 2 opciones:escribir un rol que se pueda aplicar a los nodos o usar ansible-galaxy para descargar un rol existente que alguien ya ha escrito/probado para usted. Ansible galaxy tiene roles para casi todos los dominios y estos atienden diferentes problemas. Puede visitar https://galaxy.ansible.com/ para hacerse una idea de los dominios y funciones populares que tiene. Cada función publicada en el repositorio de galaxy se prueba exhaustivamente y ha sido calificada por los usuarios, para que tenga una idea de cómo les gustó a otras personas que lo han usado.

Para seguir avanzando con la idea de NTP, así es como puede buscar e instalar una función de NTP desde galaxy.

En primer lugar, ejecutemos ansible-galaxy con el indicador de ayuda para comprobar qué opciones nos ofrece

[[email protected] ~]# ansible-galaxy --help

Como puede ver en el resultado anterior, se muestran algunas opciones interesantes, ya que estamos buscando un rol para administrar clientes ntp, probemos la opción de búsqueda para ver qué tan bueno es encontrar lo que estamos buscando.

[[email protected] ~]# ansible-galaxy search ntp

Aquí está el resultado truncado del comando anterior.

Encontró 341 coincidencias basadas en nuestra búsqueda, como puede ver en el resultado anterior, muchas de estas funciones ni siquiera están relacionadas con NTP, lo que significa que nuestra búsqueda necesita algo de refinamiento, sin embargo, ha logrado obtener algunas funciones de NTP, profundicemos para ver cuáles son estos roles. Pero antes déjame decirte la convención de nomenclatura que se sigue aquí. El nombre de un rol siempre va precedido por el nombre del autor para que sea fácil segregar roles con el mismo nombre. Por lo tanto, si ha escrito un rol NTP y lo ha publicado en el repositorio galaxy, no se mezcla con el repositorio de otra persona con el mismo nombre.

Con eso fuera del camino, continuemos con nuestro trabajo de instalar un rol NTP para nuestras máquinas Linux. Probemos bennojoy.ntp para este ejemplo, pero antes de usar esto, debemos averiguar un par de cosas, ¿es este rol compatible con la versión de ansible que estoy ejecutando? Además, cuál es el estado de la licencia de este rol. Para resolver esto, ejecutemos debajo del comando ansible-galaxy,

[[email protected] ~]# ansible-galaxy info bennojoy.ntp

ok, esto dice que la versión mínima es 1.4 y la licencia es BSD, descárguemosla

[[email protected] ~]# ansible-galaxy install bennojoy.ntp
- downloading role 'ntp', owned by bennojoy
- downloading role from https://github.com/bennojoy/ntp/archive/master.tar.gz
- extracting bennojoy.ntp to /etc/ansible/roles/bennojoy.ntp
- bennojoy.ntp (master) was installed successfully
[[email protected] ~]# ansible-galaxy list
- bennojoy.ntp, master
[[email protected] ~]#

Busquemos el rol recién instalado.

[[email protected] ~]# cd /etc/ansible/roles/bennojoy.ntp/
[[email protected] bennojoy.ntp]# ls -l
total 4
drwxr-xr-x. 2 root root   21 May 21 22:38 defaults
drwxr-xr-x. 2 root root   21 May 21 22:38 handlers
drwxr-xr-x. 2 root root   48 May 21 22:38 meta
-rw-rw-r--. 1 root root 1328 Apr 20  2016 README.md
drwxr-xr-x. 2 root root   21 May 21 22:38 tasks
drwxr-xr-x. 2 root root   24 May 21 22:38 templates
drwxr-xr-x. 2 root root   55 May 21 22:38 vars
[[email protected] bennojoy.ntp]#

Voy a ejecutar este rol recién descargado en mi nodo de Elasticsearch CentOS. Aquí está mi archivo de hosts

[[email protected] ~]# cat hosts
[CentOS]
elastic7-01 ansible_host=192.168.1.15 ansibel_port=22 ansible_user=linuxtechi
[[email protected] ~]#

Intentemos hacer ping al nodo usando el siguiente módulo de ping ansible,

[[email protected] ~]# ansible -m ping -i hosts elastic7-01
elastic7-01 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
[[email protected] ~]#

Así es como se ve el ntp.conf actual en el nodo elástico.

[[email protected] ~]# head -30 /etc/ntp.conf

Como estoy en la India, agreguemos el servidor in.pool.ntp.org a ntp.conf. Tendría que editar las variables en el directorio predeterminado del rol.

[[email protected] ~]# vi /etc/ansible/roles/bennojoy.ntp/defaults/main.yml

Cambie la dirección del servidor NTP en el parámetro "ntp_server", después de actualizar debería verse como a continuación.

Lo último ahora es crear mi libro de jugadas que llamaría a este rol.

[[email protected] ~]# vi ntpsite.yaml
---
 - name: Configure NTP on CentOS/RHEL/Debian System
   become: true
   hosts: all
   roles:
    - {role: bennojoy.ntp}

guardar y salir del archivo

Estamos listos para ejecutar este rol ahora, use el siguiente comando para ejecutar el libro de jugadas ntp,

[[email protected] ~]# ansible-playbook -i hosts ntpsite.yaml

La salida del libro de jugadas ntp ansible anterior debería ser similar a la siguiente,

Revisemos el archivo actualizado ahora. vaya al nodo elástico y vea el contenido del archivo ntp.conf

[[email protected] ~]# cat /etc/ntp.conf
#Ansible managed

driftfile /var/lib/ntp/drift
server in.pool.ntp.org

restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
[[email protected] ~]#

En caso de que no encuentre una función que cumpla con sus requisitos, ansible-galaxy puede ayudarlo a crear una estructura de directorios para sus funciones personalizadas. Esto ayuda a sus libros de jugadas junto con las variables, controladores, plantillas, etc. ensamblados en una estructura de archivos estandarizada. Creemos nuestro propio rol, siempre es una buena práctica dejar que ansible-galaxy cree la estructura para usted.

[[email protected] ~]# ansible-galaxy init pk.backup
- pk.backup was created successfully
[[email protected] ~]#

Verifique la estructura de su rol usando el comando de árbol,

Permítanme explicarles rápidamente para qué sirven cada uno de estos directorios y archivos, cada uno de estos tiene un propósito.

El primero es el predeterminado directorio que contiene los archivos que contienen variables con la prioridad más baja, si se asignan las mismas variables en el directorio var, tendrá prioridad sobre el valor predeterminado. Los manejadores El directorio aloja los controladores. El archivo y plantillas guarde todos los archivos que su rol pueda necesitar para copiar y las plantillas jinja para ser utilizados en libros de jugadas respectivamente. Las tareas El directorio es donde se guardan los libros de jugadas que contienen las tareas. El directorio var consta de todos los archivos que albergan las variables utilizadas en role. El directorio de prueba consta de un inventario de muestra y manuales de prueba que se pueden usar para probar el rol. El metadirectorio consta de cualquier dependencia de otros roles junto con la información de autoría.

Finalmente, README.md El archivo simplemente consta de información general como la descripción y la versión mínima de ansible con la que esta función es compatible.


Linux
  1. Cómo uso Ansible y Anacron para la automatización

  2. Cómo instalar y usar Ansible en Debian 11

  3. Cómo crear un libro de jugadas de Ansible

  4. Cómo usar Ansible para instalar y configurar Redis 6 en Debian 11

  5. Serie RHCE Ansible n.º 9:Roles de Ansible

Cómo crear y usar datos personalizados en Ansible

Cómo definir y usar controladores en Ansible Playbooks

Cómo crear y ejecutar un archivo de libro de jugadas de Ansible

Roles de Ansible y cómo usarlos en Playbooks

Cómo usar Ansible para configurar Vim

Cómo instalar y usar Ansible en Debian 10