Playbook no es más que Ansible's scripts de administración de configuración, y se puede usar para administrar implementaciones y configuraciones de nodos administrados. Playbook contiene un conjunto de políticas que desea que apliquen sus nodos administrados o un conjunto de pasos en un proceso de TI general.
Los libros de jugadas están escritos y desarrollados en un lenguaje de texto simple. La sintaxis que usamos en los libros de jugadas es diferente de los comandos normales que usamos para probar en el tutorial anterior.
En el tutorial anterior, vimos cómo instalar Ansible en CentOS 7/RHEL 7/Ubuntu 18.04/16.04 y Debian 9 .
Crear libro de jugadas de Ansible
Para esta demostración, crearemos un libro de jugadas llamado web.yml para configurar un host para ejecutar un servidor web Apache . Cada libro de jugadas se compone de una o más jugadas en una lista.
Para cada juego en el libro de jugadas, puede elegir qué máquinas en su infraestructura apuntar y qué usuario remoto completar las tareas.
vi web.yml
Guía de CentOS/RHEL:
--- - hosts: 192.168.1.20 remote_user: raj become: yes become_method: su tasks: - name: Install Apache yum: pkg=httpd state=latest - name: Copying the demo file template: src=/etc/ansible/index.html dest=/var/www/html owner=apache group=apache mode=0644 - name: Enable Apache on System Boot service: name=httpd enabled=yes notify: - start apache - setup firewalld - reload firewalld handlers: - name: start apache service: name=httpd state=started - name: setup firewalld firewalld: service: http permanent: true state: enabled - name: reload firewalld service: name=firewalld state=restarted
Guía de Ubuntu/Debian:
--- - hosts: 192.168.1.30 remote_user: raj become: yes become_method: sudo tasks: - name: Install Apache apt: name: apache2 update_cache: yes - name: Copying the demo file template: src=/etc/ansible/index.html dest=/var/www/html owner=www-data group=www-data mode=0644
Cree un archivo HTML de demostración (/etc/ansible/index.html ). Este archivo HTML se colocará en el DocumentRoot predeterminado del servidor Apache en el nodo administrado.
vi /etc/ansible/index.html
<html> <head> <title>Apache is installed by Ansible</title> </head> <body> <h1>Apache is installed by Ansible</h1> <p>Now, Apache is managed through Ansible</p> </body> </html>
Desglosando el manual de estrategias de Ansible
Ahora, revisaremos cada sección del libro de jugadas web.yml archivo para entender lo que estos son medios.
El archivo comienza con
---
Todos los archivos YAML deben comenzar con (tres guiones) ---
y esto indica el comienzo de un documento. YAML es muy sensible al espacio y lo usa para agrupar diferentes piezas de información. Los espacios deben ser consistentes en todo el archivo para que se lean correctamente. Los elementos con el mismo nivel de sangría se consideran elementos hermanos.
Anfitrión y Usuarios
--- - hosts: 192.168.1.20 remote_user: raj
La línea de hosts es una lista de uno o más grupos (p. ej., servidores de demostración) o patrones de host (p. ej., 192.168.1.20), separados por dos puntos. Junto con el host, puede mencionar la cuenta de usuario remoto.
--- - hosts: 192.168.1.20 remote_user: raj become: yes become_method: su
Debe convertirse en usuario raíz para instalar cualquier paquete en un sistema. Para hacerlo, puede usar métodos de escalada de privilegios, como su o sudo . Siempre que utilice este tipo de métodos de escalamiento de privilegios, debe ejecutar ansible playbook con --ask-become-pass
argumento.
Tareas
Ahora, tenemos un conjunto de tareas.
tasks: - name: Install Apache yum: pkg=httpd state=latest - name: Copying the demo file template: src=/etc/ansible/index.html dest=/var/www/html owner=apache group=apache mode=0644 - name: Enable Apache on System Boot service: name=httpd enabled=yes
Cada jugada contiene una lista de tareas, que se ejecutan en orden, una a la vez, contra todas las máquinas que coinciden con el patrón de host, antes de pasar a la siguiente tarea.
Cuando está ejecutando el libro de jugadas, se ejecuta de arriba a abajo y los hosts con tareas fallidas se eliminan de la rotación de todo el libro de jugadas.
Cada tarea debe tener un nombre y se utiliza para mostrar la actividad actual mientras se ejecuta el libro de jugadas. Esta salida es para humanos, por lo que es bueno tener descripciones razonablemente buenas de cada paso de la tarea.
Aquí, instalará la última versión de Apache y copiará el HTML de demostración (/etc/ansible/index.html) en el directorio /var/www/html del nodo administrado y luego habilitará el servicio de Apache para que se inicie automáticamente durante el arranque del sistema.
Notificar
Estos notifican las acciones se activan al final de cada bloque de tareas en un libro de jugadas y solo se activarán una vez, incluso si varias tareas diferentes lo notifican.
notify: - start apache - setup firewalld - reload firewalld
El notificar item contiene un elemento llamado start apache , configurar cortafuegos y recargar firewalld . Estos son la referencia a los controladores que realizan funciones específicas cuando se llama desde dentro de una tarea. Definiremos el controlador de inicio de apache y firewalld.
Manejador
Los controladores son listas de tareas, no muy diferentes de las tareas regulares. Sin embargo, solo se ejecutan cuando una tarea les ha dicho que se han producido cambios en el sistema cliente.
handlers: - name: start apache service: name=httpd state=started - name: setup firewalld firewalld: service: http permanent: true state: enabled - name: reload firewalld service: name=firewalld state=restarted
En nuestro caso, tenemos un controlador que inicia el servicio Apache y configura el firewall después de instalar el paquete.
Esta acción ocurre debido a que el notificador notificó al controlador sobre los cambios en el sistema, lo que significa que se tuvo que instalar el paquete Apache y, junto con ese archivo de demostración, se tuvo que copiar a DocumentRoot.
Ejecutar libro de jugadas de Ansible
Una vez que tenga un libro de jugadas listo, puede ejecutarlo usando el siguiente comando.
ansible-playbook web.yml -f 1 --ask-become-pass OR ansible-playbook web.yml -f 1 --ask-become-pass -u raj --ask-pass
libro de jugadas de ansible :Comando para ejecutar libros de jugadas de Ansible.
web.yml: Archivo YAML (archivo Ansible Playbook, que creamos al comienzo de este tutorial)
-f 1 :libro de jugadas usando un nivel de paralelismo de 1
–pedir-convertirse-aprobar :Dado que necesitamos convertirnos en usuarios root para instalar paquetes.
-u-raj :Usuario en el nodo administrado
Salida:
Suponga que ha creado un libro de jugadas para un grupo (por ejemplo, servidores de demostración) de servidores y desea ejecutar un libro de jugadas en un host específico. El siguiente comando ejecuta el libro de jugadas solo en 192.168.1.40 .
ansible-playbook -l 192.168.1.40 web.yml -u raj --ask-become-pass
Verificar las acciones del libro de estrategias de Ansible
Después de ejecutar un libro de jugadas, abra su navegador y navegue hasta el host remoto mencionado en el inventario ansible.
En mi caso, la URL será
http://192.168.1.20Ahora debería obtener la página anterior Apache está instalado por Ansible , y esta página nos confirma que Ansible instaló Apache.
Ha aprendido a crear un libro de jugadas simple para la automatización de la instalación de Apache. Puede encontrar más información sobre cómo crear playbooks aquí .
Eso es todo.