Vaya a la automatización con Ansible

A finales de 2015 y principios de 2016, decidimos utilizar Red Hat Enterprise Linux (RHEL) como nuestro tercer sistema operativo, junto con Solaris y Microsoft Windows. Formé parte del equipo que probó RHEL, entre otras distribuciones, y estaba comprometido con la próxima explotación del nuevo sistema operativo. Pensando en la creciente cantidad de sistemas Red Hat Enterprise Linux, se me ocurrió que necesitaba una herramienta para automatizar las cosas porque sin automatización, la cantidad de hosts que puedo administrar es limitada.

Tenía experiencia con Puppet en ese momento, pero no me gustaba esta herramienta debido a su complejidad. Teníamos más módulos y clases que anfitriones para administrar en ese entonces. Así que eché un vistazo a Ansible versión 2.1.1.0 en julio de 2016.

Lo que me encantó de Ansible y aún me encanta es que se basa en push. En un nodo de destino, solo se necesita acceso Python y SSH para controlar el nodo y enviarle los ajustes de configuración. No se debe eliminar ningún agente si decide que Ansible no es la herramienta para usted. el YAML la sintaxis es fácil de leer y escribir, y la capacidad de usar libros de jugadas y comandos ad hoc hacen de Ansible una solución flexible que ahorra tiempo en nuestras actividades diarias. Por ello, fue a finales de 2016 cuando decidimos evaluar Ansible en nuestro entorno.

Índice

    Primeros pasos

    En general, debe comenzar a automatizar las cosas que necesita hacer a diario o al menos con regularidad. De esta forma, la automatización ahorra tiempo para cosas más interesantes o importantes. Seguí esta regla usando Ansible para las siguientes tareas:

    1. Establezca una configuración básica para hosts recién aprovisionados (establezca DNS, hora, red, sshd, etc.)
    2. Configurar la administración de parches para instalar Aviso de seguridad de Red Hat (RHSA).
    3. Probar la utilidad de los comandos ad hoc y dónde podemos beneficiarnos de ellos.

    Configuración básica de Ansible

    Para nosotros, esta es la configuración que obtiene cada host recién aprovisionado. Esta práctica asegura que el anfitrión encaje en nuestro entorno y sea capaz de comunicarse en la red. Dado que se deben realizar los mismos pasos de configuración para cada nuevo host, este es un gran paso para comenzar con la automatización.

    Estas son las tareas con las que comencé:

    (Algunos de estos pasos ya están publicados aquí en Habilitar Sysadmin, como puede ver, y es posible que sigan más pronto).

    Todas estas tareas tienen en común que son pequeñas y fáciles de iniciar, lo que le permite ganar experiencia con el uso de diferentes tipos de módulos, roles, variables, etc. de Ansible. Puede realizar cada una de estas funciones y tareas por su cuenta, o vincularlas todas en un libro de jugadas que establezca la línea de base para su sistema recién aprovisionado.

    Gestión de parches de Red Hat Enterprise Linux Server con Ansible

    Como expliqué en mi página de GitHub para ansible-role-rhel-patchmanagement, en nuestro entorno, implementamos servidores Red Hat Enterprise Linux para que nuestros departamentos de operaciones ejecuten sus aplicaciones.

    Este rol se escribió para proporcionar un mecanismo para instalar los avisos de seguridad de Red Hat en los nodos de destino una vez al mes. En nuestro caso de uso particular, solo se instalan RHSA para garantizar un límite mínimo de seguridad. La instalación se realiza una vez al mes. Las revisiones se resumen en "Patch-Sets". De esta manera se asegura que se utilicen los mismos avisos para todas las etapas de un ciclo de parches.

    Los nodos de Ansible Inventory se resumen en uno de los siguientes grupos, cada uno de los cuales define cuándo se programa un nodo para la instalación de parches:

    • [rhel-patch-phase1] - El segundo martes de un mes.
    • [rhel-patch-phase2] - El tercer martes del mes.
    • [rhel-patch-phase3] - El cuarto martes del mes.
    • [rhel-patch-phase4] - El cuarto miércoles de un mes.

    Si los paquetes se han actualizado en los nodos de destino, los hosts se reiniciarán.

    Debido a que los sistemas de producción son los más importantes, se dividen en dos grupos distintos (Fase 3 y Fase 4) para reducir el riesgo de interrupción y tiempo de inactividad del servicio debido a la instalación de la placa.

    Puede leer más sobre este rol en mi repositorio de GitHub: https://github.com/Tronde/ansible-role-rhel-patchmanagement.

    La actualización y la gestión de parches son tareas que todo administrador de sistemas tiene que afrontar. Con estos roles, Ansible me ha ayudado a realizar esta tarea todos los meses y ya no tengo que preocuparme por eso. Solo cuando no se puede acceder a un sistema, o yum tiene un problema, recibo un informe por correo electrónico pidiéndome que eche un vistazo. Pero he tenido suerte y no he recibido un informe por correo en los últimos dos meses. (Sí, por supuesto, el sistema puede enviar correo).

    Comandos ad hoc

    La capacidad de ejecutar comandos ad hoc para tareas rápidas (y sucias) fue una de las razones por las que elegí Ansible. Puede usar estos comandos para recopilar información cuando la necesite o para hacer cosas sin necesidad de escribir un libro de jugadas primero.

    Utilicé comandos ad hoc en trabajos cron hasta que encontré tiempo para escribir libros de jugadas para ellos. Pero, con el tiempo viene la práctica, y hoy trato de usar libros de jugadas y roles para cada tarea que se debe realizar más de una vez.

    Estos son pequeños ejemplos de comandos ad hoc que brindan información rápida sobre sus nodos.

    Solicitar versión del paquete

    ansible all -m command -a'/usr/bin/rpm -qi <PACKAGE NAME>' | grep 'SUCCESS|Version'

    Consulta la versión del sistema operativo

    ansible all -m command -a'/usr/bin/cat /etc/os-release'

    Consultar la versión del kernel en ejecución

    ansible all -m command -a'/usr/bin/uname -r'

    Servidores DNS de consulta utilizados por los nodos

    ansible all -m command -a'/usr/bin/cat /etc/resolv.conf' | grep 'SUCCESS|nameserver'

    Esperemos que estos ejemplos le den una idea de los comandos ad hoc que se pueden usar.

    Resumen

    No es difícil comenzar con la automatización. Simplemente encuentre las tareas pequeñas y fáciles que realiza todos los días, o incluso más de una vez al día, y deje que Ansible haga esas tareas por usted.

    Con el tiempo, podrá resolver tareas más complejas a medida que desarrolle sus habilidades de automatización. Pero mantenga las cosas lo más simples posible. No gana nada cuando tiene que solucionar problemas de un libro de jugadas durante tres días mientras resuelve una tarea que podría haber completado en una hora.

    Artículos de interés

    Subir