Ansible es un conjunto de herramientas de software que permite la infraestructura como código . Es de código abierto y el conjunto incluye funciones de aprovisionamiento de software , gestión de configuración e implementación de aplicaciones . [2]
Ansible , escrito originalmente por Michael DeHaan en 2012 y adquirido por Red Hat en 2015, está diseñado para configurar sistemas tipo Unix y Microsoft Windows . Ansible no tiene agentes y se basa en conexiones remotas temporales a través de SSH o Windows Remote Management , lo que permite la ejecución de PowerShell . El nodo de control de Ansible se ejecuta en la mayoría de los sistemas tipo Unix que pueden ejecutar Python , incluido Windows con el Subsistema de Windows para Linux instalado. [3] La configuración del sistema se define en parte mediante su propio lenguaje declarativo .
El término " ansible " fue acuñado por Ursula K. Le Guin en su novela de 1966 El mundo de Rocannon , [4] y se refiere a sistemas ficticios de comunicación instantánea. [5] [6]
La herramienta Ansible fue desarrollada por Michael DeHaan, autor de la aplicación de servidor de aprovisionamiento Cobbler y coautor del marco Fedora Unified Network Controller (Func) para administración remota. [7]
Ansible, Inc. (originalmente AnsibleWorks, Inc.) fue la empresa fundada en 2013 por DeHaan, Timothy Gerla y Saïd Ziouani para respaldar y patrocinar comercialmente a Ansible. [8] [9] [10] Red Hat adquirió Ansible en octubre de 2015. [11] [12]
Ansible se incluye como parte de la distribución Fedora de Linux, propiedad de Red Hat , y también está disponible para Red Hat Enterprise Linux , CentOS , openSUSE , SUSE Linux Enterprise , Debian , Ubuntu , Scientific Linux y Oracle Linux a través de paquetes adicionales para Enterprise Linux, así como para otros sistemas operativos. [13]
Ansible ayuda a gestionar varias máquinas seleccionando partes del inventario de Ansible almacenadas en archivos de texto sin formato . El inventario es configurable y el inventario de la máquina de destino se puede obtener de forma dinámica o de fuentes basadas en la nube en diferentes formatos ( YAML , INI ). [14]
Los datos confidenciales se pueden almacenar en archivos cifrados utilizando Ansible Vault [15] desde 2014. [16] A diferencia de otro software de gestión de configuración popular, como Chef , Puppet , Salt y CFEngine , Ansible utiliza una arquitectura sin agentes , [17] con el software de Ansible que normalmente no se ejecuta o incluso no se instala en el nodo controlado. [17] En cambio, Ansible orquesta un nodo instalando y ejecutando módulos en el nodo temporalmente a través de SSH. Durante la duración de una tarea de orquestación, un proceso que ejecuta el módulo se comunica con la máquina controladora con un protocolo basado en JSON a través de su entrada y salida estándar. [18] Cuando Ansible no está administrando un nodo, no consume recursos en el nodo porque no se ejecutan daemons ni se instala software. [17]
Ansible requiere que Python esté instalado en todas las máquinas de administración, incluido el administrador de paquetes pip junto con el software de administración de configuración y sus paquetes dependientes. Los dispositivos de red administrados no requieren dependencias adicionales y no tienen agentes. [19]
El nodo de control (host maestro) está destinado a administrar (orquestar) máquinas de destino (nodos denominados "inventario", consulte a continuación). [20] Los nodos de control se pueden ejecutar desde sistemas operativos Linux y similares a Unix (incluido MacOS ); los sistemas operativos Windows solo se admiten a través del Subsistema de Windows para Linux . [21] Se permiten múltiples nodos de control. [20] Ansible no requiere una sola máquina de control para la orquestación, [22] lo que garantiza que la recuperación ante desastres sea sencilla. [22] Los nodos son administrados por el nodo de control a través de SSH .
Los objetivos de diseño de Ansible incluyen: [18]
Los módulos [24] son en su mayoría independientes y pueden escribirse en un lenguaje de programación estándar (como Python, Perl , Ruby , Bash, etc.) [ cita requerida ] . Uno de los objetivos rectores de los módulos es la idempotencia, lo que significa que incluso si una operación se repite varias veces (por ejemplo, al recuperarse de una interrupción), siempre colocará al sistema en el mismo estado. [18] [ fuente no primaria necesaria ]
La ubicación de los nodos de destino se especifica a través de listas de configuración de inventario (formato INI o YAML) ubicadas en /etc/ansible/hosts
(en Linux). [14] [25] El archivo de configuración enumera la dirección IP o el nombre de host de cada nodo al que Ansible puede acceder. Además, los nodos se pueden asignar a grupos. [14]
Un ejemplo de formato de inventario ( archivo INI ):
192.168.6.1[servidores web] foo.example.com bar.example.com
Este archivo de configuración especifica tres nodos: el primer nodo se especifica mediante una dirección IP y los dos últimos se especifican mediante nombres de host. Además, los dos últimos nodos se agrupan en el webservers
grupo.
Ansible también puede utilizar un script de inventario dinámico personalizado , que puede extraer datos dinámicamente de un sistema diferente, [26] y admite grupos de grupos. [27]
Los playbooks son archivos YAML que almacenan listas de tareas para ejecuciones repetidas [28] [20] en nodos administrados. [20] [29] Cada playbook asigna (asocia) un grupo de hosts a un conjunto de roles. Cada rol está representado por llamadas a tareas de Ansible. [30]
Ansible Automation Platform (AAP) es una API REST , un servicio web y una interfaz (aplicación) basada en la web diseñada para hacer que Ansible sea más accesible para personas con una amplia gama de habilidades de TI. Es una plataforma compuesta por múltiples componentes que incluyen herramientas para desarrolladores, una interfaz de operaciones y una malla de automatización para habilitar tareas de automatización a escala en los centros de datos. AAP es un producto comercial respaldado por Red Hat, Inc. pero derivado de más de 17 proyectos de código abierto upstream , incluido el proyecto upstream AWX (anteriormente derivado de Ansible Tower), que ha sido de código abierto desde septiembre de 2017. [31] [32] [33] [34]
También existe otra alternativa de código abierto a Tower, Semaphore, escrita en Go . [35] [36]
Las máquinas de control deben ser un host Linux/Unix (por ejemplo , BSD , CentOS , Debian , macOS , Red Hat Enterprise Linux , SUSE Linux Enterprise , Ubuntu [13] ) y se requiere Python 2.7 o 3.5. [19]
Los nodos administrados, si son similares a Unix, deben tener Python 2.4 o posterior. Para los nodos administrados con Python 2.5 o anterior, python-simplejson
también se requiere el paquete. [37] Desde la versión 1.7, Ansible también puede administrar nodos Windows [38] . [37] En este caso, se utiliza la comunicación remota nativa de PowerShell compatible con el protocolo WS-Management en lugar de SSH.
Ansible se puede implementar en hosts físicos , máquinas virtuales y entornos de nube. [18]
AnsibleFest es una conferencia anual de la comunidad de usuarios, colaboradores, etc. de Ansible. [39]
{{cite web}}
: CS1 maint: varios nombres: lista de autores ( enlace )