Cómo usar Ansible Playbooks para automatizar tareas complejas en múltiples servidores remotos - Parte 2
- 3066
- 809
- Norma Sedillo
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 2Despué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 ansibleDicho 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.YMLAnsible: 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 automatizadasVamos 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 HTTPDDetener 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 webConsidere 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.
- « 8 comandos útiles para monitorear el uso del espacio de intercambio en Linux
- 13 cosas útiles que hacer después de la instalación de la estación de trabajo Fedora 22 »