Búsqueda de sitios web

Comprender los componentes principales 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 tus habilidades para utilizar Ansible para automatizar. la configuración de sistemas y aplicaciones.

La serie se titulará “Examen de especialista certificado de Red Hat en Ansible Automation (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 de Ansible:

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

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

Comprender los componentes principales 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 tienes que realizar tareas múltiples y repetitivas. 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 resulta beneficioso cuando se desea mantener la coherencia en la implementación de aplicaciones, reducir los errores humanos y automatizar tareas repetitivas y algo mundanas.

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

¿Por qué es fácil de aprender, te preguntarás? 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 utiliza el protocolo SSH para comunicarse con servidores remotos, a diferencia de otras plataformas de automatización que requieren la instalación de 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 no perderse ni confundirse a medida que avanzamos.

Inventario

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 según 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 según grupos. En el siguiente ejemplo, tenemos servidores ubicados en 2 grupos: servidores web y bases de datos. De esta manera se puede hacer referencia a ellos según los nombres de sus grupos y no según 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.

Libro de jugadas

Un playbook es un conjunto de scripts de gestió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 scripts o instrucciones están escritos en formato YAML.

Por ejemplo, puede tener un archivo playbook 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 estrategias 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 estrategias 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 comprueba posteriormente si el servidor web Apache está iniciado y ejecutándose.

Módulos

Los módulos son unidades discretas de código utilizadas en playbooks para ejecutar comandos en hosts o servidores 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.

Obras de teatro

Un play ansible es un script o una instrucción que define la tarea a realizar en un servidor. Una colección de obras de teatro 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.

variables

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 DEBE comenzar siempre 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 jugadas
  • variables de inventario
  • variables especiales

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

La sintaxis es la que 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/.

Hechos

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 sistema operativo, tipo de CPU y núcleos de CPU, por mencionar algunas.

Para tener una idea del número de datos disponibles para su uso, emita el comando.

ansible localhost -m setup

Como puede ver, se ha mostrado 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"

Archivos de configuración

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, como rutas de archivos de inventario y biblioteca, usuario sudo, filtros de complementos, módulos, etc. Estos parámetros se pueden ajustar simplemente comentándolos. y modificando los valores en el mismo.

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

Resumen

Habiendo analizado los componentes principales de Ansible, esperamos que esté en condiciones de tenerlos a su alcance y seleccionarlos a medida que avanzamos. Únase a nosotros en su próximo tema.