07.06.2023

Uso de libros de jugadas de Ansible

Las instrucciones describen la aplicación y el trabajo con Ansible Playbook, así como una breve descripción general de su estructura.

¿Qué son los libros de jugadas de Ansible?

El libro de jugadas en Ansible define una serie de ciertas acciones para realizar y están dirigidas a un conjunto específico de servidores. A diferencia de otras herramientas para realizar configuraciones, Playbook no describe el estado de la máquina y Ansible determina de forma independiente todos los cambios que deben realizarse. Sin embargo, los libros de jugadas deben diseñarse como idempotentes, lo que significa que pueden ejecutarse más de una vez sin consecuencias negativas.

A menudo, los playbooks se utilizan para realizar la configuración inicial de los servidores: agregar usuarios y directorios, administrar paquetes de software y archivos.

El libro de jugadas es un Archivo YAML , que suele tener la siguiente estructura:

--- - hosts: [hosts de destino] usuario_remoto: [su nombre] tareas: - [tarea 1] - [tarea 2]

Por ejemplo, el siguiente libro de jugadas se incluirá en todos los servidores del grupo de servidores de marketing y garantizará que el Apache servidor web se inicia:

--- - hosts: [servidores de marketing] usuario_remoto: tareas de administrador web: - nombre: Asegúrese de que Apache daemon ha iniciado el servicio: nombre =httpd state=iniciado se convierte en: sí se convierte en_método: sudo

En el libro de jugadas anterior hay una tarea de ejemplo:

tareas: - nombre: Asegúrese de que Apache daemon ha iniciado el servicio: nombre =httpd state=iniciado se convierte en: sí se convierte en_método: sudo

Cada tarea debe tener un nombre que se registre posteriormente y pueda ayudar a rastrear el progreso. Después de la línea de nombre está el módulo que se lanzará, en este caso, es un módulo de servicio. Otros atributos permiten más opciones; en el ejemplo de Ansible, se permiten los privilegios sudo.

Lanzar el libro de jugadas de Ansible

Puede iniciar un libro de jugadas listo para usar con el siguiente comando:

libro de jugadas ansible playbook.yml

Por ejemplo:

libro de jugadas ansible nginx.yml

Sin embargo, si necesita filtrar la lista de hosts para que el script se aplique solo a uno de estos hosts, puede agregar un indicador y especificar un subconjunto de hosts en el archivo:

libro de jugadas ansible -l host_subset libro de jugadas.yml

Por ejemplo:

libro de jugadas ansible -l host3 nginx.yml

Registro de resultados

Cuando instala y configura servicios manualmente, casi siempre es necesario conocer el resultado de las acciones. Puede configurar esta funcionalidad a través del registro.

Para cada tarea, si se desea, es posible registrar su resultado (fracaso o éxito) en una variable, que puede ser consultada posteriormente. Al usar esta funcionalidad, se recomienda indicar a Ansible que ignore los errores de dicha tarea, ya que, por lo general, el libro de jugadas se interrumpe en caso de que surja algún problema.

Por lo tanto, si necesita verificar si la tarea se ha completado o no y decidir los próximos pasos, debe usar la función de registro.

Por ejemplo, especifique playbook para cargar un archivo index.php si existe. Si esta tarea no se completa, comenzará la descarga del archivo index.html:

--- - hosts: tareas de gotitas: - nombre: Instalaciones nginx servidor web apto: pkg=nginx state=installed update_cache=true notificar: - iniciar nginx

    - nombre: Cargue el index.php predeterminado para la copia del host: src=static_files/index.php dest=/usr/share/nginx/www/ mode=0644 registro: php ignore_errors: True - nombre: Eliminar index.html para el comando host: rm /usr/share/nginx/www/index.html cuando: php|success - nombre: Subir index.html predeterminado para la copia del host: src=static_files/index.html dest=/usr/share/nginx/www/ mode=0644 cuando: php|controladores fallidos: - nombre: inicio nginx
      servicio: nombre=nginx estado=empezado

Este script intenta cargar un archivo PHP al host. Ansible registra el éxito de una operación en una variable llamada php. Si esta operación tiene éxito, la siguiente tarea es eliminar el archivo index.html. Si la operación falla, se cargará el archivo index.html.