• ¡Obtenga la seguridad de la aplicación de la manera correcta! Detectar, proteger, monitorear, acelerar y más ...
  • Aprenda sobre Ansible Playbook para automatizar las tareas.

    Anteriormente, discutimos Introducción a Ansible, guía de instalacióny, a continuación, hablemos de Playbook y sus componentes básicos.

    ¿Qué es Ansible Playbook?

    El libro de jugadas es el lenguaje de automatización de Ansible. Es un archivo simple con un conjunto de instrucciones. Es en los libros de jugadas donde definimos lo que queremos que haga Ansible. Los libros de jugadas contienen obras de teatro que ejecutan tareas y estas tareas ejecutan módulos. Sus tareas se ejecutan secuencialmente.

    Por ejemplo, puede ser tan simple como ejecutar una serie de comandos en diferentes servidores en una secuencia y reiniciar esos servidores en orden. O podría ser tan complejo como implementar y aprovisionar cientos de máquinas virtuales en una nube pública y privada, incluido su equilibrio de carga, monitoreo y configuraciones de red.

    Idioma del libro de jugadas

    Los Playbooks son archivos simples escritos en código YAML.

    Ñame es un lenguaje de serialización de datos. Es legible por humanos y máquinas. No necesita ninguna habilidad de codificación especial para escribir códigos YAML. Puede pensar en el lenguaje de serialización de datos como un traductor para desglosar toda su estructura de datos y serializarlos en un orden que se puede reconstruir nuevamente para su uso posterior. Puede utilizar esta estructura de datos reconstruida en el mismo entorno o incluso en un entorno diferente.

    A continuación se muestra un archivo YAML de muestra para instalar mysql:

    ---
    - name: Install MySQL
      hosts: geekflare-mysql-service
      tasks:
        - name: Install MySQL
          action: $ansible_pkg_mgr pkg=mysql-server state=installed
        - name: Add Python MySQL DB
          action: $ansible_pkg_mgr pkg=python-mysqldb state=installed

    Conceptos básicos de Ansible Playbook

    Esta parte del artículo cubre los conceptos básicos de Ansible para comprender más sobre Ansible Playbook.

    Hosts y usuarios

    Ansible necesita máquinas de destino en la infraestructura en las que se deben implementar las jugadas desde el libro de jugadas de Ansible. Los hosts se agregan al inventario de Ansible a través de sus direcciones IP. Los hosts son una lista de uno o más grupos o patrones de host separados por dos puntos. Remote_user contiene el nombre de la cuenta de usuario.

    ---
    - hosts: ProdServers
      remote_user: geekflare

    Variables

    Las variables le permiten modificar cómo se ejecuta un libro de jugadas. Se pueden usar en casi todas partes del libro de jugadas y se pueden heredar de un inventario, se establecen explícitamente en tiempo de ejecución y se descubren al comienzo de la ejecución de un libro de jugadas. Puede definir un nombre de variable usando letras, números y guiones bajos, pero debe comenzar solo con una letra.

    Por ejemplo, port_01 es una variable válida, mientras que 01_post es una variable no válida. Aquí hay un ejemplo de variables en un libro de jugadas de Ansible:

    vars:
        http_port: 80
        max_clients: 200

    Los inventarios

    Para ejecutar un libro de jugadas, necesita una lista de objetivos en los que desea que se produzca la automatización. Esto es lo que hace un inventario. Las listas de inventario se pueden crear y almacenar de varias formas diferentes, incluidos archivos estáticos, es decir, Ansible Hosts. O se puede generar dinámicamente a través de un script de inventario que extraerá una lista de hosts para una fuente externa.

    También puede especificar una variable como parte de una lista de inventario. Los inventarios son, en última instancia, una lista de cosas que desea automatizar.

    [webservers]
    192.168.20.1
    192.168.20.2
    192.168.20.4
    [dbservers]
    172.17.1.56
    172.17.1.57

    tareas

    Reproduce en ansible playbook ejecutar tareas. La tarea es responsable de ejecutar módulos ansible. A la vez, solo se puede ejecutar una tarea y las tareas se ejecutan en orden secuencial. Sus tareas están escritas en YAML, que es bastante parecido al inglés.

    Por ejemplo: instalar nombre_paquete, actualizar nombre_software, etc. A continuación se muestra un ejemplo de una tarea en el libro de jugadas de Ansible para instalar httpd:

    tasks:
      - name: Install httpd Package
        yum: name=httpd state=latest

    Manejadores

    Los manipuladores son un tipo especial de tareas.

    Pueden activarse mediante una tarea y se ejecutan una vez al final de la obra. Se utiliza para enviar notificaciones si hay algún cambio en el archivo de configuración, por ejemplo, notificar al servicio para que inicie Apache una vez que se instale. La sintaxis de "notificar" se utiliza para llamar a los controladores. A continuación se muestra un ejemplo de un controlador para reiniciar Apache:

    ---
    - hosts: all
      tasks:
      - name: ensure apache is at the latest version
        yum: name=httpd state=latest
        notify:
        - restart apache
      - name: ensure apache is running (and enable it at boot)
        service: name=httpd state=started enabled=yes
      handlers:
        - name: restart apache
          service: name=httpd state=restarted

    Crea y ejecuta tu primer libro de jugadas de Ansible

    Déjame decirte cómo escribir un libro de jugadas. Cada libro de jugadas comienza con tres guiones (-) en la parte superior.

    Lo primero que menciona en un libro de jugadas de Ansible son las máquinas host en las que desea ejecutar el libro de jugadas.

    Luego, puede mencionar las variables reuniendo hechos; a continuación, puede mencionar las diferentes tareas que desea realizar. Ahora, recuerde que la tarea se ejecuta en el mismo orden en que las escribe. Por ejemplo, si desea instalar el software A primero y luego el software B, asegúrese de que la primera tarea escrita en el libro de jugadas sea instalar el software A y la siguiente tarea podría instalar el software B.

    Entonces tienes controladores en la parte inferior. Los manejadores también son tareas, pero la diferencia es que para ejecutar manejadores necesita algún tipo de disparadores en la lista de tareas para ejecutar manejadores.

    Déjame mostrarte cómo crear un libro de jugadas ansible para instalar e iniciar nginx en un host e iniciarlo.

    Cree un archivo .yml donde colocará sus códigos YAML para crear un libro de jugadas ansible.

    gedit nginx.yml

    Coloque el código YAML a continuación en este archivo y guárdelo.

    ---
    - hosts: Client
      sudo: yes
      vars:
        - server_port: 8080
    
      tasks:
        - name: Installs nginx web server
          apt: pkg=nginx state=installed update_cache=true
          notify:
            - start nginx
    
      handlers:
        - name: start nginx
          service: name=nginx state=started

    El archivo YAML anterior comienza con anfitriones, Quiero ejecutar este libro de jugadas en la máquina cliente (Cliente). La dirección IP del cliente ya está guardada en /etc/ansible/hosts archivo.

    La siguiente línea permite ejecutar las tareas con sudo privilegios.

    Entonces he definido Puerto de servicio como una variable en este manual.

    Entonces viene mi primero tarea en este manual ansible para instalar un servidor web Nginx. Esta tarea también tiene notificar parámetro, lo que significa que después de esta tarea un controlador con run.

    Finalmente, he escrito un entrenador de animales para iniciar nginx en la máquina cliente.

    Ahora que tiene claro los códigos YAML en el libro de jugadas ansible, ejecutemos el libro de jugadas. A continuación se muestra la sintaxis para ejecutar un libro de jugadas ansible:

    ansible-playbook file_name.yml

    Ahora, ejecutaré el libro de jugadas ansible, que creo para instalar e iniciar nginx.

    [email protected]:/home/geekflare# ansible-playbook nginx.yml 
    
    PLAY [Client] ******************************************************************
    
    TASK [Gathering Facts] *********************************************************
    ok: [node1]
    
    TASK [Installs nginx web server] ***********************************************
    
    changed: [node1]
    
    RUNNING HANDLER [start nginx] **************************************************
    ok: [node1]
    
    PLAY RECAP *********************************************************************
    node1                      : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

    Ejecute el siguiente comando para verificar si el servidor nginx se instaló e inició correctamente con el libro de jugadas ansible.

    [email protected]:/home/geekflare# ps waux | grep nginx
    root      3021  0.0  0.0  77676  1516 ?        Ss   15:27   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;

    Conclusión

    Eso era sobre el libro de jugadas de Ansible. Espero que este artículo te haya ayudado a aprender cómo puedes crear y ejecutar un manual de Ansible. Mira esto Comidas, si desea aprender temas avanzados en Ansible, incluidos roles, Jinja2, búsquedas, filtros, módulos personalizados.