GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo crear playbooks de Ansible para la automatización de TI

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:

<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.20

Ahora 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.


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

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

  3. Desmitificando Ansible para administradores de sistemas Linux

  4. Cómo crear un contenedor MySQL Docker para pruebas

  5. ¿Cómo crear el libro de jugadas de Ansible para obtener versiones del sistema operativo de los hosts remotos?

Cómo usar controladores en Ansible Playbook

Cómo crear roles de Ansible y usarlos en Playbook

Guía de Ansible:Cree un libro de jugadas de Ansible para LEMP Stack

Cómo configurar la herramienta de automatización Ansible en CentOS 7

Cómo definir y usar controladores en Ansible Playbooks

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