Comprender los componentes básicos de Ansible - Parte 1


El examen Red Hat Certified Specialist in Ansible Automation (EX407) es un nuevo programa de certificación de Red Hat que pone a prueba sus habilidades para utilizar Ansible para automatizar la configuración de sistemas y aplicaciones.

La serie se titulará "El examen Red Hat Certified Specialist in Ansible Automation exam (EX407)" y cubre los siguientes objetivos del examen basados en Red Hat Enterprise Linux 7.5 y Ansible 2.7, que cubriremos en esta serie Ansible:

Para ver las tarifas y registrarse para un examen en su país, consulte la página de exámenes de Ansible Automation.

En esta Parte 1 de la serie Ansible, discutiremos una descripción general básica de los componentes centrales de Ansible.

Ansible es una plataforma de automatización gratuita y de código abierto de RedHat que le permite administrar y controlar múltiples servidores desde una ubicación central. Es especialmente ideal cuando tiene tareas múltiples y repetitivas que deben realizarse. Entonces, en lugar de iniciar sesión en cada uno de estos nodos remotos y realizar sus tareas, puede hacerlo cómodamente desde una ubicación central y administrar cómodamente sus servidores.

Esto es beneficioso cuando desea mantener la coherencia en la implementación de aplicaciones, reducir el error humano y automatizar tareas repetitivas y algo mundanas.

Por supuesto, existen otras alternativas a Ansible como Puppet, Chef y Salt. Sin embargo, Ansible se prefiere principalmente porque es fácil de usar y fácil de aprender.

¿Por qué es tan fácil de aprender? Esto se debe a que Ansible utiliza YAML (otro lenguaje de marcado) en sus trabajos de configuración y automatización que son legibles por humanos y bastante fáciles de seguir. YAML usa el protocolo SSH para comunicarse con servidores remotos, a diferencia de otras plataformas de automatización que requieren que instale un agente en nodos remotos para comunicarse con ellos.

Antes de comenzar con Ansible, es importante que se familiarice con algunas terminologías básicas para que no se pierda ni se confunda a medida que avanzamos.

Un inventario es un archivo de texto que contiene una lista de servidores o nodos que está administrando y configurando. Por lo general, los servidores se enumeran en función de sus nombres de host o direcciones IP.

Un archivo de inventario puede contener sistemas remotos definidos por sus direcciones IP como se muestra:

10.200.50.50
10.200.50.51
10.200.50.52

Alternativamente, se pueden enumerar por grupos. En el siguiente ejemplo, tenemos servidores ubicados en 2 grupos: servidores web y bases de datos. De esta forma, se puede hacer referencia a ellos de acuerdo con los nombres de sus grupos y no con sus direcciones IP. Esto simplifica aún más los procesos operativos.

[webservers]
10.200.50.60
10.200.50.61

[databases]
10.200.50.70
10.200.50.71

Puede tener varios grupos con varios servidores si se encuentra en un entorno de producción grande.

Un libro de jugadas es un conjunto de scripts de administración de configuración que definen cómo se ejecutarán las tareas en hosts remotos o en un grupo de máquinas host. Los guiones o instrucciones están escritos en formato YAML.

Por ejemplo, puede tener un archivo de libro de jugadas para instalar el servidor web Apache en CentOS 7 y llamarlo httpd.yml.

Para crear el libro de jugadas, ejecute el comando.

$ touch playbook_name.yml

Por ejemplo, para crear un libro de jugadas llamado httpd, ejecute el comando.

$ touch httpd.yml

Un archivo YAML comienza con 3 guiones como se muestra. Dentro del archivo, agregue las siguientes instrucciones.

---
- name: This installs and starts Apache webserver
  hosts: webservers

  tasks:
  - name: Install Apache Webserver 
    yum:   name=httpd  state=latest

 - name: check httpd status
    service:   name=httpd  state=started

El libro de jugadas anterior instala el servidor web Apache en sistemas remotos definidos como servidores web en el archivo de inventario. Después de la instalación del servidor web, Ansible luego verifica si el servidor web Apache está iniciado y funcionando.

Los módulos son unidades discretas de código que se utilizan en los libros de jugadas para ejecutar comandos en servidores o hosts remotos. Cada módulo va seguido de un argumento.

El formato básico de un módulo es clave: valor.

- name: Install apache packages 
    yum:   name=httpd  state=present

En el fragmento de código YAML anterior, -name y yum son módulos.

Una obra ansible es un guión o una instrucción que define la tarea a realizar en un servidor. Una colección de obras constituye un libro de jugadas. En otras palabras, un libro de jugadas es una colección de múltiples jugadas, cada una de las cuales estipula claramente la tarea a realizar en un servidor. Las reproducciones existen en formato YAML.

Si tiene experiencia en programación, lo más probable es que haya utilizado variables. Básicamente, una variable representa un valor. Una variable puede incluir letras, números y guiones bajos, pero siempre DEBE comenzar con letras.

Las variables se utilizan cuando las instrucciones varían de un sistema a otro. Esto es especialmente cierto durante la configuración de varios servicios y funciones.

Hay 3 tipos principales de variables:

  • Variables del libro de estrategias
  • Variables de inventario
  • Variables especiales

En Ansible, las variables se definen primero usando las vars k, luego seguidas por el nombre de la variable y el valor.

La sintaxis es como se muestra:

vars:
Var name1: ‘My first variable’
	Var name2:  ‘My second variable’

Considere el código a continuación.

- hosts: webservers
  vars: 
    - web_directory:/var/www/html/

En el ejemplo anterior, la variable aquí es web_directory e indica a ansible que cree un directorio en la ruta/var/www/html /.

Los hechos son propiedades del sistema recopiladas por Ansible cuando ejecuta un libro de jugadas en un sistema host. Las propiedades incluyen nombre de host, familia de SO, tipo de CPU y núcleos de CPU, por mencionar algunos.

Para tener una idea de la cantidad de datos disponibles para su uso, emita el comando.

$ ansible localhost -m setup

Como puede ver, se muestra una gran cantidad de datos de forma predeterminada. Puede limitar aún más los resultados utilizando el parámetro de filtro como se muestra.

$ ansible localhost -m setup -a "filter=*ipv4"

En Ansible, un archivo de configuración es un archivo que contiene diferentes configuraciones de parámetros que determinan cómo se ejecuta Ansible. El archivo de configuración predeterminado es el archivo ansible.cfg ubicado en el directorio/etc/ansible /.

Puede ver el archivo de configuración ejecutando:

$ cat /etc/ansible/ansible.cfg

Como puede observar, se incluyen varios parámetros tales como rutas de archivo de inventario y biblioteca, usuario sudo, filtros de complementos, módulos, etc. Estos parámetros se pueden ajustar simplemente comentando y modificando sus valores.

Además, puede tener varios archivos de configuración trabajando con Ansible además de su archivo de configuración predeterminado.

Después de haber examinado los componentes principales de Ansible, esperamos que esté en condiciones de tenerlos al alcance de la mano y seleccionarlos a medida que avanzamos. Únase a nosotros en su próximo tema.