Capítulo 1. Introducción Introducción

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Es un momento interesante para trabajar en el sector informático. Ya no entregamos software a nuestros clientes instalando un programa en una sola máquina y listo. En lugar de eso, todos nos estamos convirtiendo gradualmente en ingenieros de la nube.

Ahora desplegamos aplicaciones de software encadenando servicios que se ejecutan en un conjunto distribuido de recursos informáticos y se comunican a través de diferentes protocolos de red. Una aplicación típica puede incluir servidores web, servidores de aplicaciones, sistemas de caché basados en memoria, colas de tareas, colas de mensajes, bases de datos SQL, almacenes de datos NoSQL y equilibradores de carga.

Los profesionales de TI también tienen que asegurarse de contar con las redundancias adecuadas, para que cuando se produzcan fallos (y se producirán), nuestros sistemas de software los gestionen con elegancia. Luego están los servicios secundarios que también tenemos que implementar y mantener, como el registro, el monitoreo y el análisis, así como los servicios de terceros con los que tenemos que interactuar, como los puntos finales de la infraestructura como servicio (IaaS) para gestionar instancias de máquinas virtuales.1

Puedes cablear estos servicios a mano: arrancando los servidores que necesites, iniciando sesión en cada uno de ellos, instalando paquetes, editando archivos de configuración, etc., pero es una lata. Lleva mucho tiempo, es propenso a errores y, sencillamente, es aburrido hacer este tipo de trabajo manualmente, sobre todo a la tercera o cuarta vez. Y para tareas más complejas, como montar una nube OpenStack, hacerlo a mano es una locura. Tiene que haber una forma mejor.

Si estás leyendo esto, probablemente ya te haya convencido la idea de la gestión de la configuración y estés considerando adoptar Ansible como tu herramienta de gestión de la configuración. Tanto si eres un desarrollador que despliega su código en producción, como si eres un administrador de sistemas que busca una forma mejor de automatizar, creo que Ansible te parecerá una solución excelente a tu problema.

Nota sobre las versiones

El código de ejemplo de este libro se ha probado con varias versiones de Ansible. Ansible 5.9.0 es la última versión en el momento de escribir este libro; Ansible Tower incluye la versión 2.9.27 en el lanzamiento más reciente. Ansible 2.8 llegó al final de su vida útil con el lanzamiento de la versión 2.8.20 el 13 de abril de 2021. Espera que Ansible siga evolucionando.

Durante años, la comunidad de Ansible ha sido muy activa en la creación de roles y módulos, tanto que en hay miles de módulos y más de 20.000 roles. Las dificultades de gestionar un proyecto de esta envergadura llevaron a los creadores a reorganizar el contenido de Ansible en tres partes:

  • Componentesbásicos, creados por el equipo de Ansible

  • Contenidocertificado, creado por los socios comerciales de Red Hat

  • Contenidocomunitario, creado por miles de entusiastas de todo el mundo

Ansible 2.9 tiene muchas funciones integradas, y las versiones posteriores son más componibles. Esta nueva configuración hace que sea más fácil de mantener en su conjunto.

Los ejemplos proporcionados en este libro deberían funcionar en varias versiones de Ansible, pero los cambios de versión en general requieren pruebas, que abordaremos en el capítulo 14.

¿Qué es eso del nombre Ansible?

Es una referencia de ciencia ficción. Un ansible es un dispositivo de comunicación ficticio que puede transferir información más rápido que la velocidad de la luz. Ursula K. Le Guin inventó el concepto en su libro El mundo de Rocannon (Ace Books, 1966), y otros autores de ciencia ficción han tomado prestada la idea desde entonces, incluido Orson Scott Card. El cofundador de Ansible, Michael DeHaan, tomó el nombre de Ansible del libro de Card El juego de Ender (Tor, 1985). En ese libro, el ansible se utilizaba para controlar muchas naves remotas a la vez, a grandes distancias. Piensa en ello como una metáfora para controlar servidores remotos.

Ansible: ¿Para qué sirve?

Ansible se describe a menudo como una herramienta de gestión de la configuración y suele mencionarse al mismo tiempo que Puppet, Chef y Salt. Cuando los profesionales de TI hablamos de gestión de la configuración, solemos referirnos a escribir algún tipo de descripción del estado de nuestros servidores y, a continuación, a utilizar una herramienta para garantizar que los servidores se encuentran, de hecho, en ese estado: los paquetes correctos están instalados, los archivos de configuración tienen los valores y permisos esperados, los servicios correctos se están ejecutando, etc. Al igual que otras herramientas de gestión de la configuración, Ansible expone un lenguaje específico del dominio (DSL) que utilizas para describir el estado de tus servidores.

También puedes utilizar estas herramientas para la implementación de software. Cuando la gente habla de implementación, suele referirse al proceso de generar binarios o activos estáticos (si es necesario) a partir de software escrito por desarrolladores internos, copiar los archivos necesarios en los servidores, añadir propiedades de configuración y variables de entorno, e iniciar los servicios en un orden determinado. Capistrano y Fabric son dos ejemplos de herramientas de implementación de código abierto. Ansible es una gran herramienta tanto para la implementación como para la gestión de la configuración. Utilizar una única herramienta para ambas cosas simplifica la vida a los responsables de la integración del sistema.

Algunas personas hablan de la necesidad de orquestar las Implementaciones. La orquestación es el proceso de coordinar la implementación cuando intervienen varios servidores remotos y las cosas deben suceder en un orden específico. Por ejemplo, puede que necesites desplegar la base de datos antes de desplegar los servidores web, o sacar los servidores web del equilibrador de carga de uno en uno para actualizarlos sin tiempo de inactividad. DeHaan diseñó Ansible desde cero para que sirviera para esto y para realizar acciones en varios servidores. Tiene un modelo refrescantemente sencillo para controlar el orden en que se producen las acciones.

Por último, oirás hablar del aprovisionamiento de nuevos servidores. En el contexto de nubes públicas como Amazon EC2, el aprovisionamiento se refiere a crear nuevas instancias de máquinas virtuales o software como servicio (SaaS) nativo de la nube. Ansible te tiene cubierto aquí, con módulos para hablar con nubes como EC2, Azure,2 Digital Ocean, Google Compute Engine, Linode y Rackspace,3 así como cualquier nube compatible con las API de OpenStack.

Nota

De forma confusa, la herramienta Vagrant, que se trata más adelante en este capítulo, utiliza el término aprovisionador para referirse a una herramienta que realiza la gestión de la configuración. Por tanto, se refiere a Ansible como una especie de aprovisionador. Vagrant llama proveedores a las herramientas que crean máquinas, como VirtualBox y VMWare. Vagrant utiliza el término máquina para referirse a una máquina virtual y caja para referirse a una imagen de máquina virtual.

Cómo funciona Ansible

La Figura 1-1 muestra un ejemplo de caso de uso de Ansible en acción. Una usuaria a la que llamaremos Alice está utilizando Ansible para configurar tres servidores web basados en Ubuntu para que ejecuten NGINX. Ha escrito un script llamado webservers.yml. En Ansible, el equivalente a un guión se llama libro de jugadas. Un playbook describe qué hosts (lo que Ansible llama servidores remotos) hay que configurar, y una lista ordenada de tareas a realizar en esos hosts. En este ejemplo, los servidores son web1, web2 y web3, y las tareas son cosas como éstas:

  • Instalar NGINX

  • Generar un archivo de configuración de NGINX

  • Copia el certificado de seguridad

  • Inicia el servicio NGINX

Figura 1-1. Ejecución de un libro de jugadas de Ansible para configurar tres servidores web

En el próximo capítulo, explicaremos con más detalle qué contiene este libro de jugadas; por ahora, nos centraremos en su papel en el proceso global. Alice ejecuta el libro de consulta utilizando el comando ansible-playbook. Alice inicia su libro de jugadas de Ansible escribiendo primero el comando y luego el nombre del libro de jugadas en una línea del terminal:

$ ansible-playbook webservers.yml

Ansible establecerá conexiones SSH en paralelo con web1, web2 y web3. A continuación, ejecutará la primera tarea de la lista en los tres hosts simultáneamente. En este ejemplo, la primera tarea es instalar el paquete NGINX, por lo que la tarea en el libro de jugadas sería algo así:

- name: Install nginx
  package:
    name: nginx

Ansible hará lo siguiente

  1. Genera un script Python que instale el paquete NGINX

  2. Copia el script en web1, web2 y web3

  3. Ejecuta el script en web1, web2 y web3

  4. Espera a que se complete la ejecución del script en todos los hosts

Ansible pasará a la siguiente tarea de la lista y seguirá los mismos cuatro pasos.

Es importante tener en cuenta lo siguiente:

  1. Ansible ejecuta cada tarea en paralelo en todos los hosts.

  2. Ansible espera a que todos los hosts hayan completado una tarea antes de pasar a la siguiente.

  3. Ansible ejecuta las tareas en el orden en que las especifiques.

¿Qué tiene de bueno Ansible?

Hay varias herramientas de gestión de la configuración de código abierto entre las que elegir, así que ¿por qué Ansible? He aquí 21 razones que nos atrajeron de él. En resumen: Ansible es sencillo, potente y seguro.

Simple

Ansible se diseñó para tener un proceso de configuración muy sencillo y una curva de aprendizaje mínima.

Sintaxis fácil de leer

Ansible utiliza el formato de archivo YAML y plantillas Jinja2, ambos fáciles de aprender. Recuerda que los scripts de gestión de la configuración de Ansible se llaman playbooks. En realidad, Ansible construye la sintaxis de los playbooks sobre YAML, que es un lenguaje de formato de datos diseñado para que sea fácil de leer y escribir para los humanos. En cierto modo, YAML es a JSON lo que Markdown es a HTML.

Fácil de auditar

Puedes inspeccionar los playbooks de Ansible de varias formas, como listando todas las acciones y hosts implicados. Para las ejecuciones en seco, a menudo utilizamos ansible-playbook --check. Con el registro integrado es fácil ver quién hizo qué y dónde. El registro es conectable y los recopiladores de registros pueden ingerirlos fácilmente.

Poco o nada que instalar en los hosts remotos

Para gestionar servidores con Ansible, los servidores Linux necesitan tener instalados SSH y Python, mientras que los servidores Windows necesitan tener activado WinRM. En Windows, Ansible utiliza PowerShell en lugar de Python, por lo que no es necesario preinstalar un agente ni ningún otro software en el host.

En la máquina de control (es decir, la máquina que utilizas para controlar máquinas remotas), es mejor instalar Python 3.8 o posterior. Dependiendo de los recursos que gestiones con Ansible, puede que tengas requisitos previos de bibliotecas externas. Consulta la documentación para ver si un módulo tiene requisitos específicos.

Ansible se reduce

Los autores de este libro utilizan Ansible para gestionar cientos de nodos. Pero lo que nos enganchó es su escalabilidad. Puedes utilizar Ansible en hardware muy modesto, como una Raspberry Pi o un viejo PC. Utilizarlo para configurar un único nodo es fácil: basta con escribir un único playbook. Ansible obedece a la máxima de Alan Kay: "Las cosas sencillas deben ser sencillas; las complejas, posibles".

Fácil de compartir

No esperamos que reutilices los libros de jugadas de Ansible en diferentes contextos. En el Capítulo 7 hablaremos de los roles, que son una forma de organizar tus libros de jugadas, y de Ansible Galaxy, un repositorio en línea de estos roles.

Actualmente, la principal unidad de reutilización de en la comunidad de Ansible es la colección. Puedes organizar tus módulos, plug-ins, bibliotecas, roles e incluso playbooks en una colección y compartirla en Ansible Galaxy. También puedes compartirla internamente utilizando Automation Hub, una parte de Ansible Tower. Las funciones pueden compartirse como repositorios individuales.

En la práctica, sin embargo, cada organización configura sus servidores de forma un poco diferente, y lo mejor es que escribas libros de procedimientos para tu organización en lugar de intentar reutilizar los genéricos. Creemos que el principal valor de consultar los libros de procedimientos de otras personas es ver cómo funcionan las cosas, a menos que trabajes con un producto concreto del que el proveedor sea socio certificado o participe en la comunidad Ansible.

Abstracción del sistema

Ansible trabaja con abstracciones sencillasde recursos del sistema como archivos, directorios, usuarios, grupos, servicios, paquetes y servicios web.

A modo de comparación, veamos cómo configurar un directorio en el shell. Utilizarías estos tres comandos

mkdir -p /etc/skel/.ssh
chown root:root /etc/skel/.ssh
chmod go-wrx /etc/skel/.ssh

En cambio, Ansible ofrece el módulo file como una abstracción de , donde defines los parámetros del estado deseado. Esta única acción tiene el mismo efecto que los tres comandos del shell combinados:

- name: Ensure .ssh directory in user skeleton
  file:
    path: /etc/skel/.ssh
    mode: '0700'
    owner: root
    group: root
    state: directory

Con esta capa de abstracción, puedes utilizar los mismos scripts de gestión de la configuración para gestionar servidores que ejecuten distribuciones de Linux. Por ejemplo, en lugar de tener que tratar con un gestor de paquetes específico como dnf, yum o apt, Ansible tiene una abstracción de "paquetes" que puedes utilizar en su lugar (sólo ten en cuenta que los nombres de los paquetes pueden diferir). Pero también puedes utilizar las abstracciones específicas del sistema si lo prefieres.

Si realmente quieres, puedes escribir tus libros de jugadas de Ansible para que realicen acciones diferentes, dependiendo de la variedad de sistemas operativos de los servidores remotos. Pero Bas, uno de los autores de este libro, intenta evitar eso siempre que puede; en lugar de eso, se centra en escribir libros de jugadas para los sistemas que se utilizan realmente.

Tareas de arriba abajo

Los libros sobre gestión de la configuración suelen mencionar en el concepto de convergencia, o estado coherente final. La convergencia en la gestión de la configuración está muy asociada al sistema de gestión de la configuración CFEngine de Mark Burgess. Si un sistema de gestión de la configuración es convergente, el sistema puede ejecutarse varias veces para poner un servidor en el estado deseado, y cada ejecución acerca al servidor a ese estado.

El estado coherente eventual no se aplica realmente a Ansible, ya que no se ejecuta varias veces para configurar los servidores. En su lugar, los módulos de Ansible funcionan de tal manera que ejecutar un libro de jugadas una sola vez debería poner cada servidor en el estado deseado.

Potente

Disponer de Ansible puede suponer un enorme aumento de la productividad en varias áreas de la gestión de sistemas. Las abstracciones de alto nivel que proporciona Ansible (como los roles) hacen que puedas instalar y configurar cosas más rápidamente y, potencialmente, de forma más segura.

Pilas incluidas

Puedes utilizar Ansible para ejecutar comandos shell arbitrarios en tus servidores remotos, pero su verdadero poder proviene de la amplia variedad de módulos disponibles. Los módulos se utilizan para realizar tareas como instalar un paquete, reiniciar un servicio o copiar un archivo de configuración.

Como verás más adelante, los módulos Ansible son declarativos; los utilizas para describir el estado en el que quieres que se encuentre el servidor. Por ejemplo, invocarías el módulo user así para asegurarte de que hay una cuenta llamada "deploy" en el grupo web:

- name: Ensure deploy user exists
  user:
    name: deploy
    group: web

Basado en empujar

Chef y Puppet son sistemas de gestión de la configuración que utilizan agentes. Están basados en pull por defecto. Los agentes instalados en los servidores se conectan periódicamente con un servicio central y descargan información de configuración del servicio. Hacer cambios en la gestión de la configuración de los servidores es algo así:

  1. Tú: realiza un cambio en un script de gestión de la configuración.

  2. Tú: envía el cambio a un servicio central de gestión de la configuración.

  3. Agente en el servidor: se despierta tras dispararse el temporizador periódico.

  4. Agente en el servidor: se conecta al servicio central de gestión de la configuración.

  5. Agente en el servidor: descarga nuevos scripts de gestión de la configuración.

  6. Agente en el servidor: ejecuta localmente scripts de gestión de la configuración que cambian el estado del servidor.

En cambio, Ansible está basado en push por defecto. Hacer un cambio tiene este aspecto:

  1. Tú: haz un cambio en un libro de jugadas.

  2. Tú: ejecuta el nuevo libro de jugadas.

  3. Ansible: se conecta a los servidores y ejecuta módulos que cambian el estado de los servidores.

En cuanto ejecutas el comando ansible-playbook, Ansible se conecta a los servidores remotos y hace lo suyo; esto reduce el riesgo de que se rompan servidores aleatorios cada vez que sus tareas programadas no consigan cambiar las cosas con éxito. El enfoque basado en push tiene una ventaja significativa: tú controlas cuándo se producen los cambios en los servidores. No tienes que esperar a que caduque un temporizador. Cada paso de un libro de jugadas puede dirigirse a uno o a un grupo de servidores. Consigues hacer más trabajo en lugar de entrar en los servidores a mano.

Orquestación multinivel

El modo Push también te permite utilizar Ansible para la orquestación multinivel, gestionando distintos grupos de máquinas para una operación como una actualización. Puedes orquestar el sistema de monitoreo, los equilibradores de carga, las bases de datos y los servidores web con instrucciones específicas para que funcionen en concierto. Eso es muy difícil de hacer con un sistema basado en pull.

Masterless

Los defensores del enfoque "pull" afirman que es superior para escalar a un gran número de servidores y para hacer frente a nuevos servidores que pueden entrar en línea en cualquier momento. Sin embargo, un sistema central de gestión de la configuración deja de funcionar lentamente cuando miles de agentes tiran de su configuración al mismo tiempo, especialmente cuando necesitan varias ejecuciones para converger. En comparación, Ansible viene con el comando ansible-pull, que puede extraer playbooks de un repositorio VCS como GitHub. Ansible no necesita un maestro, pero puedes utilizar un sistema central para ejecutar playbooks si lo deseas.

Conectable e integrable

Una parte considerable de la funcionalidad de Ansible procede del sistema de plugins de Ansible, de los cuales los más utilizados son los plugins de Búsqueda y Filtro. Los complementos aumentan la funcionalidad básica de Ansible con lógica y características accesibles a todos los módulos. Los módulos introducen nuevos "verbos" en el lenguaje Ansible. Puedes escribir tus propios plug-ins (ver Capítulo 10) y módulos(Capítulo 12) en Python.

Puedes integrar Ansible en otros productos: Kubernetes y Ansible Tower son ejemplos de integraciones exitosas. Ansible Runner "es una herramienta y una biblioteca de Python que ayuda a interactuar con Ansible directamente o como parte de otro sistema, ya sea a través de una interfaz de imagen de contenedor, como herramienta independiente o como módulo de Python que se puede importar".4

Utilizando la biblioteca ansible-runner, puedes ejecutar un playbook de Ansible desde un script de Python:

#!/usr/bin/env python3
import ansible_runner

r = ansible_runner.run(private_data_dir='./playbooks', playbook='playbook.yml')

print("{}: {}".format(r.status, r.rc))
print("Final status:")
print(r.stats)

Funciona con muchas cosas

Los módulos de Ansible sirven para una amplia gama de tareas de administración de sistemas. Esta lista contiene las categorías de los tipos de módulos que puedes utilizar. Éstos enlazan con el índice de módulos de la documentación:

Realmente escalable

Las grandes empresas utilizan Ansible con éxito en producción con decenas de miles de nodos y tienen un excelente soporte para entornos en los que se añaden y eliminan servidores dinámicamente. Las organizaciones con cientos de equipos de software suelen utilizar AWX o una combinación de Ansible Tower y Automation Hub para la auditabilidad, y para la seguridad con controles de acceso basados en roles.

¿Te preocupa la escalabilidad de SSH? Ansible utiliza multiplexación SSH para optimizar el rendimiento, y hay gente por ahí que está gestionando miles de nodos con Ansible (consulta el Capítulo 12 de este libro).

Asegura

La automatización con Ansible nos ayuda a mejorar la seguridad del sistema según las líneas básicas de seguridad y las normas de cumplimiento.

Conocimientos codificados

A sus autores les gusta pensar en los playbooks de Ansible como documentación ejecutable. Los playbooks son como los archivos README que solían describir los comandos que tenías que teclear para implementar tu software, salvo que estas instrucciones nunca quedarán obsoletas porque también son el código que se ejecuta. Los expertos en productos pueden crear libros de jugadas que tengan en cuenta las buenas prácticas. Cuando los novatos utilizan un libro de jugadas de este tipo para instalar el producto, pueden estar seguros de que obtendrán un buen resultado.

Sistemas reproducibles

Si configuras todo tu sistema con Ansible, pasará lo que Steve Traugott llama la "prueba del décimo piso":"¿Puedo coger una máquina aleatoria de de la que nunca se haya hecho copia de seguridad y tirarla por la ventana del décimo piso sin perder el trabajo de administrador del sistema?".

Entornos equivalentes

Ansible tiene una forma inteligente de organizar el contenido que ayuda a definir la configuración en el nivel adecuado. Es fácil crear una configuración para distintos entornos de desarrollo, pruebas, staging y producción. Un entorno de ensayo se diseña para que sea lo más parecido posible al entorno de producción, de modo que los desarrolladores puedan detectar cualquier problema antes de que los cambios entren en funcionamiento.

Variables encriptadas

Si necesitas almacenar datos sensibles como contraseñas o tokens, entonces ansible-vault es una herramienta eficaz. Nosotros la utilizamos para almacenar variables encriptadas en Git. Hablaremos de ella en detalle en el Capítulo 8.

Transporte seguro

Ansible utiliza simplemente Secure Shell (SSH) para Linux y WinRM para Windows. Normalmente protegemos y reforzamos estos protocolos de gestión de sistemas ampliamente utilizados con una configuración y un cortafuegos sólidos.

Si prefiere utilizar un modelo basado en pull, Ansible tiene soporte oficial para el modo pull, utilizando una herramienta que incluye llamada ansible-pull. Este libro no cubre el modo pull, pero puedes leer más sobre él en la documentación oficial de Ansible.

Idempotencia

Los módulos también son idempotentes. La idempotencia es una buena propiedad porque significa que es seguro ejecutar un libro de jugadas de Ansible varias veces en un servidor. Veamos qué significa eso cuando necesitemos un usuario llamado deploy:

- name: Ensure deploy user exists
  user:
    name: deploy
    group: web

Si el usuario deploy no existe, Ansible lo creará. Si existe, Ansible no hará nada. Esto supone una gran mejora con respecto al método del script de shell casero, en el que ejecutar el script de shell una segunda vez podría tener un efecto diferente (y no deseado).5

Sin demonios

No hay ningún agente de Ansible escuchando en un puerto. Por tanto, cuando utilizas Ansible, no hay una superficie de ataque adicional. (Sigue habiendo una superficie de ataque con los elementos de la cadena de suministro de software, como las bibliotecas Python y otros contenidos importados).

¿Cuál es la relación de Ansible, Inc. con Ansible?

El nombre Ansible hace referencia tanto al software como a la empresa que dirige el proyecto de código abierto. Michael DeHaan, el creador del software Ansible, es el antiguo director técnico de la empresa Ansible. Para evitar confusiones, nos referimos al software como Ansible y a la empresa como Ansible, Inc.

Ansible, Inc. vende servicios de formación y consultoría para Ansible, así como una herramienta de gestión basada en web llamada Ansible Tower, de la que hablamos en el Capítulo 19. En octubre de 2015, Red Hat compró Ansible, Inc.; IBM compró Red Hat en 2019.

¿Es Ansible demasiado sencillo?

Cuando Lorin trabajaba en una edición anterior de este libro en , el editor mencionó que "algunas personas que utilizan la herramienta de gestión de la configuración XYZ llaman a Ansible un bucle for sobre scripts SSH". Si estás pensando en cambiar de otra herramienta de gestión de la configuración, puede que en este momento te preocupe si Ansible es lo bastante potente para satisfacer tus necesidades.

Como pronto aprenderás, Ansible proporciona mucha más funcionalidad que los scripts de shell. Además de la idempotencia, Ansible tiene un excelente soporte para plantillas, así como para definir variables en distintos ámbitos. Cualquiera que piense que Ansible es equivalente a trabajar con shell scripts nunca ha tenido que dar soporte a un programa no trivial escrito en shell. Siempre elegiremos Ansible en lugar de shell scripts para las tareas de gestión de la configuración si nos dan a elegir.

¿Qué necesito saber?

Para ser productivo con Ansible, debes estar familiarizado con las tareas básicas de administración de sistemas Unix/Linux. Ansible facilita la automatización de tus tareas, pero no es el tipo de herramienta que hace "automáticamente" cosas que de otro modo no sabrías hacer.

Para este libro, hemos asumido que estás familiarizado con al menos una distribución de Linux (como Ubuntu, RHEL/CentOS o SUSE), y que sabes cómo hacerlo:

  • Conectarse a una máquina remota mediante SSH

  • Interactuar con el shell de línea de comandos Bash (tuberías y redireccionamiento)

  • Instalar paquetes

  • Utiliza el comando sudo

  • Comprobar y establecer los permisos de los archivos

  • Iniciar y detener servicios

  • Establecer variables de entorno

  • Escribe guiones (en cualquier idioma)

Si todos estos conceptos te resultan familiares, puedes utilizar Ansible.

No asumiremos que tienes conocimientos de ningún lenguaje de programación en particular. Por ejemplo, no necesitas saber Python para utilizar Ansible, a menos que quieras publicar tu propio módulo.

Lo que no está cubierto

Este libro no es un tratamiento exhaustivo de Ansible. La primera parte está diseñada para que empieces a trabajar de forma productiva en Ansible lo antes posible. Luego describe cómo realizar ciertas tareas que no son obvias en la documentación oficial.

No cubrimos en detalle todos los módulos de Ansible: hay más de 3.500. Puedes utilizar la herramienta de línea de comandos ansible-doc con lo que tengas instalado para ver la documentación de referencia y el índice de módulos mencionado anteriormente.

El capítulo 8 sólo cubre las características básicas de Jinja2, el motor de plantillas que utiliza Ansible, principalmente porque sus autores sólo memorizan las características básicas cuando utilizamos Jinja2 con Ansible. Si necesitas utilizar funciones más avanzadas de Jinja2 en las plantillas, consulta la documentación oficial de Jinja2.

Tampoco entramos en detalles sobre algunas características de Ansible que son útiles sobre todo cuando lo ejecutas en una versión antigua de Linux.

Por último, hay funciones de Ansible que no cubrimos simplemente para que el libro tenga una extensión manejable. Te animamos a que consultes la documentación oficial para saber más sobre estas funciones.

Avanzar

En este capítulo introductorio se han tratado los conceptos básicos de Ansible a nivel general, incluido cómo se comunica con servidores remotos y en qué se diferencia de otras herramientas de gestión de la configuración. Los siguientes capítulos tratan sobre cómo practicar el uso de Ansible.

1 Para más información sobre la creación y el mantenimiento de este tipo de sistemas distribuidos, consulta The Practice of Cloud System Administration, volúmenes 1 y 2 (Addison-Wesley), de Thomas A. Limoncelli, Strata R. Chalup y Christina J. Hogan, y Designing Data-Intensive Applications, de Martin Kleppman (O'Reilly).

2 Sí, Azure admite servidores Linux.

3 Por ejemplo, consulta "Using Ansible at Scale to Manage a Public Cloud", una presentación de diapositivas de Jesse Keating, antiguo empleado de Rackspace.

4 Documentación de Ansible Runner, último acceso: 2 de junio de 2022.

5 Si te interesa saber qué opina el autor original de Ansible sobre la idea de convergencia, consulta el post del grupo de noticias del Proyecto Ansible de Michael DeHaan "Idempotencia, convergencia y otras tontas palabras rimbombantes que utilizamos con demasiada frecuencia".

Get Ansible: Up and Running, 3ª Edición now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.