Hoy queremos hablarte sobre una plataforma de software libre para configurar y administrar ordenadores, está considerada como una herramienta de orquestación para facilitar las tareas a los administradores de sistema y DevOps de forma fácil, sencilla, robusta y paralela.
Ansible es una herramienta Open Source que permite la automatización de tareas, el despliegue de aplicaciones, la actualización y administración en múltiples servidores, el aprovisionamiento de software y de recursos, la gestión de configuraciones, entre muchas otras tareas.
Esta herramienta de código abierto, continúa creciendo a un ritmo vertiginoso como respuesta a una elevada demanda de métodos ágiles que ahorren el mayor tiempo posible a la hora de realizar tareas y actualizar máquinas virtuales o físicas, pero ¿cómo lo logra?
A continuación te explicaremos cómo funciona esta plataforma.
¿Cómo actúa Ansible?
Ansible se encarga de gestionar sus múltiples nodos a través de SSH (Secure SHell, por sus siglas en inglés), que es es el nombre de un protocolo y del programa que lo implementa cuya función es el acceso remoto a un servidor por medio de un canal seguro donde toda la información está cifrada.
Para ello, únicamente requiere Python (lenguaje de programación interpretado que hace hincapié en la legibilidad de un código) en el servidor remoto en el que se desee ejecutar.
En otros casos se usa YAML (formato de serialización de datos legible por humanos inspirado en lenguajes como XML) para describir acciones a realizar y las configuraciones que se deben propagar a los diferentes nodos.
Para que pueda ser más clara la forma en que actúa Ansible, te daremos un ejemplo.
Con Ansible se pueden automatizar todas aquellas tareas de administración de servidores que un SysAdmin debe ejecutar en su día a día.
Pueden ser tareas a partir de comandos sencillos como “free -m” para conocer el uso de memoria o “df -h” (disk free) para conocer el espacio disponible que existe en una partición, así como tareas más complicadas que incluyan despliegues de contenedores, servicios e instancias en Cloud con ciertas características para que puedan ser ejecutadas en múltiples servidores al mismo tiempo.
Con esta herramienta podrás realizar la orquestación en el número de máquinas que tú elijas, permitiendo realizar el aprovisionamiento de servidores y del personal que ejecute cualquier tipo de tarea de instalación de software adicional que se necesite en las máquinas, la configuración de los servicios y el despliegue de aplicaciones.
Por otro lado, también se podrá realizar la instalación de cualquier servicio empleando un lenguaje declarativo, fácil de mantener y de reutilizar.
En caso de no contar con una herramienta como Ansible, en el momento de aprovisionar un servidor es necesario instalar de forma manual por medio de comandos de consola, todo el software necesario en la máquina, como el servidor web, los usuarios, las bases de datos, el firewall, entre otros.
Al adquirir esta herramienta puedes especificar por medio de código qué deseas y requieres tener en una máquina y a partir de una configuración, podrás aplicar el proceso las veces que haga falta y de forma automatizada, permitiendo un notable aumento en la productividad de los profesionales DevOps.
¿Cuáles son los principales componentes de Ansible?
Cuando llegue el momento de realizar el despliegue de todas tus aplicaciones, la orquestación multi-nivel y la gestión de la configuración consiste en los siguientes elementos:
Módulos
Estos actúan como unidades de trabajo, se encargan de controlar servicios, ficheros, paquetes y/o comandos. Cada uno de ellos son autosuficientes y pueden estar escritos en lenguajes de scripting como Python, Perl o Bash, entre otros.
Su principal característica es la idempotencia, es decir, permite realizar una acción determinada muchas veces y aun así conseguir el mismo resultado que se obtendría si se realizara una sola vez, por lo que cuando el sistema logra alcanzar el estado deseado, no se debe realizar ninguna operación extra.
Playbooks
Este elemento clave es el fichero de Ansible, escrito en YAML, el cual se encarga de establecer y definir todas las tareas que se deben de realizar sobre un conjunto de hosts.
También te brinda la posibilidad de poder gestionar la configuración del despliegue en los nodos o la misma orquestación de una serie de tareas que se deben cumplir.
Cada Playbook agrupa un conjunto de instrucciones para un fin. Así, un Playbook contiene Plays y cada Play contiene Tasks.
Inventory
Se refiere al fichero donde se define por completo el host o el grupos de hosts, así como sus posibles variables, es decir, el puerto SSH del que te mencionamos antes, donde hay que conectarse.
Roles
Se trata de los conjuntos de ficheros y tareas parecidas sobre un cierto grupo de hosts. Entre los roles más comunes se encuentra el webserver, el nginx o el dbserver.
Files
Es el directorio donde se almacenan los ficheros que se desean copiar en los hosts que pertenecen a un determinado rol.
Tasks
Habla del fichero del directorio donde se definen todas las tareas que se deben ejecutar en los hosts que pertenecen a ese determinado rol, para ello, el objetivo de cada tarea es ejecutar un módulo, el cual debe contar con un nombre que será incluido a la hora de programar la operación.
Pero entonces, a partir de sus componentes, ¿qué ventajas le ofrece a las empresas?
8 Ventajas que tiene Ansible vs otras herramientas
- Su instalación es bastante sencilla, tu proveedor será quien se encargue de todo el proceso.
- Cuenta con gran compatibilidad con la mayoría de los elementos que conforman a tu infraestructura.
- Soporta la mayoría de las distribuciones.
- Su curva de aprendizaje es muy corta, ya que emplea una sintaxis simple y no se requieren grandes y excesivos conocimientos de programación.
- No necesita contar con un agente en los clientes que se gestionan, de esta manera cuidará con completa seguridad cuando se usen conexiones SSH o WinRM (Windows Remote Management, por sus siglas en inglés).
- En caso de que se deban configurar tareas más complejas, se utiliza el lenguaje YAML (Playbooks).
- No requiere agentes, ni configuraciones complicadas.
- Cuenta con gran flexibilidad (API, Módulos, Plugins).
Como lo mencionamos anteriormente, Ansible permite diferentes formas de configuración, ya sea mediante un solo fichero (playbook), el cual debe contener todos los parámetros para hacer una tarea determinada, sobre un grupo de clientes determinado.
O bien, a través de una estructura de directorios por cada proyecto, separando los parámetros en ficheros, que después se podrán importar desde otros playbooks.
¿Y todas estas ventajas se pueden aplicar en cualquier proyecto o arquitectura? A continuación te explicaremos la compatibilidad que engloba a esta herramienta que te brinda Servnet.
¿Cuál es la compatibilidad de Ansible?
Desde un principio, Ansible se distribuye en Fedora (sistema operativo anteriormente llamado Fedora Core), Red Hat enterprise Linux, CentOS y Scientific Linux, además, está disponible para diferentes distribuciones Linux aparte de las ya mencionadas.
Te dejamos un enlace para que puedas consultar y descargar las que requiera tu empresa: Compatibilidad de Ansible con Linux
Es importante que tomes en cuenta que está disponible para MAC, pero no para Windows, sin embargo, sí se puede usar en máquinas virtuales.
En Ansible existen dos tipos de servidores:
1. Controlador
Se refiere a la máquina desde la que comienza la orquestación.
2. Nodo
Este es manejado por el controlador a través de SSH.
¿Cuál es el propósito fundamental de Ansible?
Además de las ventajas ya mencionadas, puedes instalar aplicaciones, orquestar servicios y tareas más avanzadas.
Un ejemplo puede ser la llamada entrega continua (CD) y la llamada integración continua (CI), donde las tareas deben entregarse de manera rápida y correcta.
También se puede utilizar para la estandarización de sistema operativo y de servicios instalados, de configuración de ficheros, versiones de software, entre otros y la administración de servicios centralizados, como por ejemplo DNS (Domain Name System, por sus siglas en inglés).
Otro beneficio clave es que si cuentas con una infraestructura como servicio (IaaS), tiene soporte para plataformas como vmWare y OpenStack que te ofrece Servnet.
Conclusión
Ahora que ya conoces más sobre Ansible, podrás poner en consideración si deseas ahorrar tiempo, lograr mayor efectividad y simplificar las tareas complejas en el momento de su ejecución y eliminar tareas repetitivas sobre un grupo definido de servidores.
Sumado a lo anterior, al automatizar las tareas, se eliminan en gran medida o por completo los errores humanos, el estrés y/o cansancio en las operaciones de TI de tu empresa.
Servnet sabe que la automatización de infraestructuras en los departamentos de TI permite formalizar y ejecutar órdenes de forma práctica, por ello, te ofrecemos Red Hat Ansible Automation Platform, parte de un gran catálogo de soluciones que te invitamos a consultar.
Ahora podrás realizar todas esas tareas diarias sin necesidad de que un agente esté todo el tiempo en el servidor (agentless).
Sé práctico y ahorra tiempo, Ansible es diferente a otros sistemas de aprovisionamiento y administración de servidores, ya que permite administrar cualquier servidor sin mayores requisitos, aparte del acceso por SSH a la máquina administrada.
¿Qué estás esperando para centrarte en las tareas que demandan mayor tiempo, atención y creatividad?
Si tienes alguna duda sobre esta herramienta no dudes en contactarnos, recuerda que para Servnet tú y tu empresa son lo más importante.