Cómo usar Ansible Playbooks para automatizar tareas complejas en múltiples servidores remotos - Parte 2

Cómo usar Ansible Playbooks para automatizar tareas complejas en múltiples servidores remotos - Parte 2

En el artículo anterior de esta serie Ansible, explicamos que Ansible es una herramienta sin agente que le permite administrar de manera rápida y eficiente múltiples máquinas (también conocidas como nodos, y realizar implementaciones también desde un solo sistema.

Utilice Ansible Playbooks para automatizar tareas complejas en Linux - Parte 2

Después de instalar el software en la máquina del controlador, creando las teclas para el inicio de sesión sin contraseña y copiarlos en los nodos, es hora de aprender cómo optimizar el proceso de administración de sistemas remotos utilizando Ansible.

Entorno de prueba ansible

A lo largo de este artículo, así como el siguiente, utilizaremos el siguiente entorno de prueba. Todos los anfitriones son Centos 7 cajas:

Máquina controladora (donde se instala Ansible): 192.168.0.19 Nodo1: 192.168.0.29 Nodo2: 192.168.0.30 

Además, tenga en cuenta que ambos nodos se han agregado en la sección de servidores web del local /etc/ansible/hosts archivo:

Archivo de host ansible

Dicho esto, comencemos con el tema en cuestión.

Introducción de libros de jugadas Ansible

Como se describe en la guía anterior, puede usar el ansible utilidad para ejecutar comandos en nodos remotos de la siguiente manera:

# ansible -a "/bin/hostnamectl --s -static" 
Ansible: Ejecutar comandos en Linux remoto

En el ejemplo anterior, corrimos HostNAMECTL -ESTÁTICO en nodo1 y nodo2. No tarda mucho en darse cuenta de que este método de ejecutar tareas en computadoras remotas funciona bien para comandos cortos, pero puede volverse pesado o desordenado rápidamente para tareas más complejas que requieren más parámetros de configuración bien estructurados o interacciones con otros servicios

Por ejemplo, configurar y configurar WordPress en múltiples hosts, que cubriremos en el próximo artículo de esta serie). Aquí es donde Libros de jugadas entrar en escena.

Simplemente pon, Libros de jugadas ¿Están escritos archivos de texto en el Yaml formatear y contener una lista con elementos con uno o más pares de clave/valor (también conocido como "picadillo"O un"diccionario").

Dentro de cada libro de jugadas encontrarás uno o más grupo de hosts (cada uno de estos grupos también se llama jugar) donde se realizarán las tareas deseadas.

Un ejemplo de los documentos oficiales nos ayudará a ilustrar:

1. Hospedadores: Esta es una lista de máquinas (según /etc/ansible/hosts) donde se realizarán las siguientes tareas.

2. Remote_User: Cuenta remota que se utilizará para realizar las tareas.

3. vars: Variables utilizadas para modificar el comportamiento de los sistemas remotos.

4. Las tareas se ejecutan en orden, una a la vez, contra todas las máquinas que coinciden con los hosts. Dentro de una obra de teatro, todos los anfitriones obtendrán las mismas directivas de tareas.

Si necesita ejecutar un conjunto diferente de tareas asociadas para un host específico, cree otra jugada en la actual Libro de jugadas (En otras palabras, el propósito de una obra es asignar una selección específica de hosts a tareas bien definidas).

En ese caso, comience una nueva jugada agregando la Directiva de hosts en la parte inferior y comenzando de nuevo:

--- - Hosts: WebServers Remote_User: Root Vars: Variable1: Value1 Variable2: Value2 Remote_user: Root Tasks: - Nombre: Descripción Para Tarea1 Tarea1: Parameter1 = Value_FOR_PARAMETER1 Parameter2 = Value_FOR_PARAMETER2 - Nombre: Descripción para la tarea1 Tarea2: Parameter1 = Value_FOR_PARAMETER1 Parameter2 = Value_for_Parameter2 Handlers: - - - - - - - - - - - - - Nombre: Descripción para el controlador 1 Servicio: name = name_of_service state = servicio_status - hosts: dbservers remoto_user: root vars: variable1: valor1 variable2: valor2 .. 

5. Los manejadores son acciones que se activan al final de la sección Tareas en cada jugada, y se utilizan principalmente para reiniciar los servicios o activar reinicios en los sistemas remotos.

# mkdir/etc/ansible/playbooks 

Y un archivo llamado apache.YML Dentro de allí con los siguientes contenidos:

--- - Hosts: WebServers vars: http_port: 80 max_clients: 200 remoto_user: tareas raíz: - nombre: Asegúrese de que Apache sea a la última versión yum: pkg = httpd state = último - nombre: reemplazar índice predeterminado.Copia del archivo html: src =/static_files/index.html des =/var/www/html/mode = 0644 notificar: - reiniciar Apache - Nombre: Asegúrese de que Apache esté ejecutando (y habilitarlo en el arranque) Servicio: Nombre = Httpd State = Iniciado habilitado = Sí Handlers: - Nombre: Reiniciar Apache Servicio: nombre = httpd state = reiniciar 

En segundo lugar, cree un directorio /static_files:

# mkdir /static_files 

Donde almacenarás la personalización índice.html archivo:

       

Apache se inició en este host a través de Ansible


Traído a ti por Tecmint.comunicarse

Dicho esto, ahora es el momento de usar este libro de jugadas para realizar las tareas mencionadas anteriormente. Notará que Ansible pasará por cada tarea por host, una a la vez, e informará sobre el estado de tales tareas:

# Ansible-playbook/etc/ansible/playbooks/apache.YML 
Ansible: automatizar tareas en Linux

Ahora veamos qué sucede cuando abrimos un navegador y lo señalamos a 192.168.0.29 y 192.168.0.30:

Ansible: confirme las tareas automatizadas

Vamos un paso más allá y detengamos y deshabilitemos y deshabilitemos a Apache en nodo1 y nodo2:

# SystemCTL Stop Httpd # SystemCTL DISAT HTTPD # SystemCTL IS-Active Httpd # SystemCTL IS-habilitado HTTPD 
Detener y deshabilitar el servicio Apache

Entonces corre de nuevo,

# Ansible-playbook/etc/ansible/playbooks/apache.YML 

Esta vez, la tarea informa que el servidor web Apache se inició y habilitó en cada host:

Ansible: Iniciar servidor web

Considere el ejemplo anterior como una visión del poder de Ansible. Si bien estas son tareas relativamente fáciles cuando se realizan en un pequeño número de servidores, puede volverse muy tedioso y lento si necesita hacer lo mismo en varios (quizás cientos) de máquinas.

Resumen

En este artículo hemos descrito cómo ejecutar comandos y ejecutar tareas complejas en varios hosts remotos simultáneamente usando Ansible. La documentación oficial y el repositorio de GitHub proporcionan muchos ejemplos y guías sobre cómo usar Ansible para lograr casi cualquier tarea imaginable.

A medida que comienza a aprender a automatizar tareas en hosts remotos de Linux usando Ansible, nos gustaría escuchar sus pensamientos. Las preguntas, comentarios y sugerencias también siempre son bienvenidos, así que no dude en contactarnos usando el formulario debajo de cualquier momento.