Red Hat Ansible Automation Platform: Guía para principiantes
Empiece a automatizar su empresa o si ya empezó, continúe haciéndolo. Esta guía le ayudará ya sea que tenga experiencia o no en la automatización. Obtenga más información.
Ansible es una herramienta potente de automatización de TI. Como con la mayoría de las herramientas potentes, se necesita tiempo para dominarla y se debe aprender a usar de forma correcta y segura en el entorno.
Luego de utilizar Ansible para automatizar la implementación y la gestión de las aplicaciones empresariales, aprendí algunas lecciones que considero prácticas recomendadas para la automatización con Ansible y que me gustaría compartir para ayudar a los demás. Después de todo, de eso se trata el enfoque open source. Eche un vistazo a esta Guía para principiantes de Ansible si recién comienza a utilizar la herramienta.
Hace mucho tiempo que me dedico a los sistemas de software empresariales, mucho antes de que Ansible siquiera existiera. Recuerdo aquellos días de implementación de producción trimestral en los que trabajaba durante la noche con un equipo de personas de turno para lanzar una versión. Las implementaciones eran costosas y complejas, carecían de uniformidad y eran muy estresantes.
Alejarse de esa realidad y aprender a automatizar la implementación de software con mayor rapidez y frecuencia requiere mucho trabajo cultural y técnico. Abordaré los aspectos culturales en otra publicación y ahora me centraré en algunas de las prácticas que aprendí con Ansible para aprovechar al máximo sus características y su comunidad.
Estándares
Hay tres aspectos importantes cuando hablamos de la automatización:
Estándares
Estándares
Más estándares
Quizá sea más fácil y divertido escribir un playbook pequeño para realizar una tarea administrativa específica, pero cuando se desarrollan cientos de playbooks o funciones para la implementación automatizada de toda una pila de software en muchos entornos, esta tendrá una gran cantidad de elementos de configuración y se volverá bastante complicada. Además, los playbooks y las funciones solo evolucionarán si no reutiliza las funciones y desarrolla estándares. Este tutorial de playbooks de Ansible lo ayudará a comenzar a transitar el camino hacia el éxito.
Desde el primer día, busque formas de estandarizar los playbooks, las funciones y demás prácticas con Ansible para que el equipo pueda reutilizarlas lo más posible y comprender cómo se organizan los elementos.
Una galaxia muy, muy lejana
Aproveche Ansible Galaxy, el repositorio centralizado de funciones de la comunidad Ansible que se diseñó para que otros usuarios de Ansible lo reutilizaran. Debe consultar Ansible Galaxy para verificar si alguien ya solucionó un problema que usted deba abordar.
Sin embargo, sea cauteloso. El contenido de Galaxy puede reutilizarse, pero debe revisarlo y comprenderlo antes de aplicarlo en su entorno, ya que puede causar un gran daño con facilidad y en muy poco tiempo si utiliza una función que haga algo inesperado.
Cree un inventario sólido
Ansible puede trabajar con los equipos de su infraestructura de forma simultánea basándose en su inventario para enumerar diferentes grupos de sistemas y definirlos según la carga de trabajo u otras características. Incluso puede trabajar con un sistema de inventario dinámico para entornos donde la cantidad de hosts varía en función de la demanda.
El inventario de Ansible puede tornarse muy complejo rápidamente cuando trabaja con aplicaciones empresariales con una gran cantidad de información de configuración.
Por ejemplo, debido a que teníamos una gran cantidad de archivos XML que contenían información de configuración para nuestro software middleware, creamos plantillas de Jinja y trasladamos los elementos de configuración de los archivos XML a nuestro inventario de Ansible. De esta forma, los archivos XML se generaban con mayor facilidad y se enviaban a los servidores de destino. Además, teníamos muchos entornos, por lo que terminamos usando un complemento Vars personalizado y escrito en Python para cargar solo los datos de configuración específicos en nuestra estructura de carpetas de inventario personalizada.
Aproveche los controladores
Los controladores son un conjunto de tareas que se ejecutan únicamente en las notificaciones y solo una vez por playbook. Por ejemplo, puede configurar un playbook con controladores que se activen a partir de eventos específicos, como el reinicio de un servicio o una aplicación. Usar controladores en una función de Ansible que gestione un servicio determinado es ideal para crear tareas comprensibles y claras en el archivo "handlers/main.yml" que se activen por los cambios en el servicio.
Cuando comencé a trabajar con Ansible, no tenía controladores, por eso puedo contarle cómo era la vida antes y después de ellos; así que no los desperdicie.
Idempotencia: conózcala, aplíquela y valórela
La idempotencia es un estilo de vida para la automatización de TI. Primero, debe comprender de qué se trata y, luego, aplicarla cuando escriba códigos de automatización; lo que nos lleva a preguntarnos qué es la idempotencia. Para citar la definición del glosario de Ansible, una operación "es idempotente cuando produce los mismos resultados si se ejecuta una sola vez o reiteradas veces sin que intervenga ninguna acción".
Por consiguiente, puede ejecutar los playbooks varias veces y obtener el mismo resultado final, y los servidores de destino estarán en el "estado deseado". En el caso de que su playbook falle en un grupo pequeño de servidores, puede solucionar el problema y luego ejecutarlo nuevamente. Dado que el playbook es idempotente, los servidores de destino deberían estar en el "estado deseado" y no se producirá ningún otro cambio.
La importancia del nombre
Siempre debe asignar un nombre a las tareas. Esto parece absurdo y casi como si le pidiera que agregue comentarios al código, pero es importante que asigne un nombre legible a la tarea para que los demás puedan comprender de qué se trata. Siga estas reglas simples:
No escriba comentarios de programación tradicionales, como "# es un comentario", en los playbooks de Ansible. Recuerde que Ansible no es un lenguaje de programación, sino una herramienta de automatización.
En su lugar, use el "Nombre" para describir la estrategia o la tarea con explicaciones legibles. Describa sus intenciones sin ser muy técnico.
El mayor beneficio de utilizar la propiedad "Nombre" en todas las estrategias o tareas es que la información aparece cuando se ejecutan los playbooks, lo cual ayuda a realizar un diagnóstico de ellos. Sin embargo, los comentarios no aparecen en la pantalla de ejecución.
Según mi experiencia, muchas personas en la empresa (por empezar, los equipos de desarrollo y operaciones) escriben los playbooks, las estrategias y las tareas; y generalmente debemos saber cuáles son las intenciones para cada una.
Denominación y precedencia de las variables
Sea cauteloso al denominar las variables en el inventario, los playbooks y las funciones de Ansible. Recuerde que Ansible asigna cada variable a un host específico (conocidas como Variables de host), por eso debe evitar el uso de nombres genéricos para las variables como "java_path: /my/path
". Es probable que otra aplicación en el mismo host utilice Java y tenga una ruta diferente. Muchas veces, habrá varias aplicaciones en el mismo host que utilizarán versiones de Java diferentes ubicadas en rutas distintas.
Elija nombres diferentes para las variables, anteponga el nombre de su empresa para personalizarlas y asegúrese de que sean legibles. Por ejemplo, la empresa ABC creó variables de inventario personalizadas para una aplicación denominada AppOne que utiliza la versión Java 1.8.
abc_appone_java_path: "/opt/appone/java" abc_appone_java_version: "1.1"
No sea uno de los que copian y pegan el contenido
Permítame aclarar este punto. Debe hacer lo correcto y crear funciones que se puedan volver a usar, en lugar de copiar los elementos de un playbook y pegarlos en otro. De esta manera, edite la función una sola vez y las dependencias utilizarán la última versión automáticamente, sin tener que buscar instrucciones obsoletas o encontrarse con un comportamiento inesperado al momento de ejecutar un playbook meses después.
Valore su entorno
Utilice el IDE que desee con Ansible. Después de todo, solo se trata de sintaxis YAML. Sin embargo, debe tener un IDE que facilite su trabajo. Estas son algunas características que considero fundamentales para un IDE al momento de crear funciones y playbooks de Ansible:
Compatibilidad con la detección de errores y el resaltado de sintaxis de YAML
Compatibilidad con la detección de errores y el resaltado de sintaxis de Python: Ansible está escrita en Python, y créame que deberá revisar el código fuente algunas veces
Sistema de control de versiones integrado
Integración de JIRA: puede gestionar los cambios de varios incidentes al mismo tiempo
Función sólida de "Buscar y reemplazar": a menudo deberá cambiar, eliminar o trasladar esa variable de Ansible de varias fuentes y buscar y encontrar todas las referencias
Compatibilidad con el lenguaje Ruby, si también desea editar archivos de Vagrant
Compatibilidad con el lenguaje Groovy, si desea programar sus trabajos de Jenkins
Si adopta estas prácticas, estará a la vanguardia y evitará cometer los mismos errores que yo cometí al utilizar Ansible en la implementación y automatización de sistemas de software empresariales. Podrá cometer sus propios errores nuevos e interesantes. Para obtener más información sobre las prácticas recomendadas de Ansible, consulte la sección de prácticas recomendadas de la documentación de Ansible, descargue la lista de verificación de la automatización empresarial y eche un vistazo al blog de Red Hat y al blog de Ansible.
Sobre el autor
Más similar
Navegar por canal
Automatización
Las últimas novedades en la automatización de la TI para los equipos, la tecnología y los entornos
Inteligencia artificial
Descubra las actualizaciones en las plataformas que permiten a los clientes ejecutar cargas de trabajo de inteligecia artificial en cualquier lugar
Nube híbrida abierta
Vea como construimos un futuro flexible con la nube híbrida
Seguridad
Vea las últimas novedades sobre cómo reducimos los riesgos en entornos y tecnologías
Edge computing
Conozca las actualizaciones en las plataformas que simplifican las operaciones en el edge
Infraestructura
Vea las últimas novedades sobre la plataforma Linux empresarial líder en el mundo
Aplicaciones
Conozca nuestras soluciones para abordar los desafíos más complejos de las aplicaciones
Programas originales
Vea historias divertidas de creadores y líderes en tecnología empresarial
Productos
- Red Hat Enterprise Linux
- Red Hat OpenShift
- Red Hat Ansible Automation Platform
- Servicios de nube
- Ver todos los productos
Herramientas
- Training y Certificación
- Mi cuenta
- Soporte al cliente
- Recursos para desarrolladores
- Busque un partner
- Red Hat Ecosystem Catalog
- Calculador de valor Red Hat
- Documentación
Realice pruebas, compras y ventas
Comunicarse
- Comuníquese con la oficina de ventas
- Comuníquese con el servicio al cliente
- Comuníquese con Red Hat Training
- Redes sociales
Acerca de Red Hat
Somos el proveedor líder a nivel mundial de soluciones empresariales de código abierto, incluyendo Linux, cloud, contenedores y Kubernetes. Ofrecemos soluciones reforzadas, las cuales permiten que las empresas trabajen en distintas plataformas y entornos con facilidad, desde el centro de datos principal hasta el extremo de la red.
Seleccionar idioma
Red Hat legal and privacy links
- Acerca de Red Hat
- Oportunidades de empleo
- Eventos
- Sedes
- Póngase en contacto con Red Hat
- Blog de Red Hat
- Diversidad, igualdad e inclusión
- Cool Stuff Store
- Red Hat Summit