Cuando gestionas las instancias existentes de Amazon Web Service (AWS) EC2, hacer clic en el Panel de Control de Gestión funciona bien. Pero a medida que tu infraestructura crece, gestionar las instancias lleva mucho tiempo y se vuelve complejo. ¿Existe una mejor manera de gestionar las instancias? ¡Sí! El módulo AWS Ansible EC2 puede ayudarte.
En este tutorial, aprenderás cómo el módulo Ansible AWS EC2 te brinda un control poderoso para gestionar las instancias de AWS en un enfoque basado en ejemplos.
¡Sigue leyendo y comienza!
Prerrequisitos
Este tutorial consta de instrucciones paso a paso. Si deseas seguirlo, asegúrate de tener lo siguiente en su lugar:
- Un host controlador de Ansible – Este tutorial utiliza Ansible v2.11.7 en una máquina Ubuntu 20.04.3 LTS.
- A remote Linux computer to test out the amazon.aws.ec2_instance Ansible module. This tutorial uses Ubuntu 20.04.3 LTS as the remote node.
- Una cuenta de AWS.
- Un usuario IAM de AWS, una clave de acceso y una clave secreta configurados en tu máquina local con acceso para crear y administrar instancias EC2. Este tutorial utilizará un usuario IAM llamado ec2user.
Asegúrate de que el usuario IAM esté configurado para acceso programático y que le asignes la política existente de AmazonEC2FullAccess.
- Un archivo de inventario y uno o más hosts están configurados para ejecutar comandos y playbooks de Ansible. La computadora Linux remota se llama mi_servidor, y este tutorial utiliza un grupo de inventario llamado web.
- Python v3.6 o posterior instalado en tu host controlador de Ansible y en la máquina de nodo remoto. Este tutorial utiliza Python v3.8.10 en una máquina Ubuntu.
- Módulos de Python boto3 mayores a 1.15.0 y botocore mayores a 1.18.0 deben estar instalados en el host del controlador de Ansible y en la máquina del nodo remoto.
Creación o reinicio de una instancia EC2 con comandos ad hoc
Si planeas crear o reiniciar una única instancia EC2 en una cuenta de AWS, ejecutar comandos ad hoc será suficiente. Los comandos ad hoc son una forma rápida y eficiente de ejecutar un solo comando para crear una instancia EC2 o modificar el tipo de instancia de una instancia EC2 de AWS.
Inicia sesión en tu controlador de Ansible y ejecuta el siguiente comando ansible
para conectarte (-m amazon.aws.ec2_instance
) al host (web
).
El comando pasa un argumento (-a
) que indica a Ansible que reinicie la instancia EC2 de AWS con instance_tags=Name=Tag1
) en la región us-east-2
. Para autenticar la conexión a la cuenta de AWS, añades detalles de aws_access_key
y aws_secret_key
en el comando ad hoc.
El tutorial realiza todas las acciones en la región us-east-2, pero puedes realizar las mismas acciones en cualquier región de AWS de tu elección.
Una vez que el comando se complete, verás un mensaje CHANGED, como se muestra a continuación, que confirma que Ansible reinició con éxito la instancia EC2 de AWS.

Lanzando una instancia EC2 con Ansible Playbook
Acabas de aprender cómo ejecutar un comando ad hoc de Ansible, ¡lo cual es genial para una acción única! Pero quizás necesites realizar múltiples tareas. Si es así, crea un playbook de Ansible que lance una instancia EC2 para ejecutar múltiples tareas.
1. Abre la terminal en tu host controlador de Ansible, luego ejecuta los siguientes comandos para crear un directorio llamado ~/ansible_aws_ec2_module
y cambia a ese directorio.
Este directorio contendrá el playbook y todos los archivos de configuración requeridos que usarás para invocar el módulo AWS EC2 de Ansible.
2. A continuación, abre tu editor de texto favorito, crea un archivo llamado main.yml en el directorio ~/ansible_aws_ec2_module. Rellena el archivo main.yml con el siguiente contenido del playbook YAML.
El playbook a continuación contiene la tarea que inicia una instancia con una dirección IP pública dentro de una VPC particular en una cuenta de AWS.
Desde este punto en el tutorial en adelante, reemplaza los valores de
aws_access_key
yaws_secret_key
con los tuyos propios.
3. Ejecute el siguiente comando para invocar el playbook (main.yml
). El playbook ejecutará las tareas para crear una nueva instancia en la región us-east-2
con un tipo de instancia t2.micro.
A continuación, puede ver que algunas tareas muestran un estado cambiado, lo que indica que Ansible creó la instancia con éxito y modificó el estado de la tarea para ejecutar el comando. En contraste, verá un estado ok ya que algunas tareas no requieren cambios.

4. Ahora, abra su navegador web favorito e inicie sesión en la Consola de Administración de AWS.
5. Finalmente, haga clic en la barra de búsqueda en la parte superior de la consola, busque EC2 y haga clic en el elemento del menú EC2. Al hacerlo, su navegador se redirige a la página de EC2.

En la página de EC2, verá su instancia recién creada, como se muestra a continuación.

Detener varias instancias de AWS EC2
Quizás algunas instancias de AWS EC2 ya no sirvan para ningún propósito. Si es así, puedes detener o terminar múltiples instancias ejecutando un playbook de Ansible. Especifica los IDs de las instancias y declara valores en una tarea para establecer el comportamiento del módulo AWS EC2 de Ansible al detener las instancias.
1. Crea un playbook de Ansible llamado stop.yml y copia/pega el código a continuación en el playbook.
El playbook siguiente detiene dos instancias (i-0d8c7eb4eb2c643a1 e i-0dbc17a67c0f7577c).
Si prefieres terminar las instancias en lugar de detenerlas, cambia el valor de
state
aabsent
.
2. Ahora ejecuta el siguiente comando para ejecutar el playbook (stop.yml
), que detendrá las instancias que especificaste en el playbook. ansible-playbook stop.yml

3. Finalmente, navega a tus instancias de AWS en tu navegador web, y verás que dos instancias se detuvieron correctamente, como se muestra a continuación.

Creando una instancia con etiqueta, volumen y monitoreo de Cloud Watch.
Quizás necesites provisionar tu instancia con componentes más avanzados como etiquetas, monitorización con alarmas de CloudWatch, y crear un volumen para fines de almacenamiento. En ese caso, usar el módulo AWS EC2 de Ansible en un playbook resolverá el problema.
Las etiquetas son una excelente manera de organizar los recursos de AWS y realizar cálculos eficientes de costos de recursos en la Consola de Gestión de AWS.
1. Crea un nuevo playbook de Ansible llamado advanced.yml y llénalo con el código a continuación.
El playbook a continuación lanzará una instancia AWS EC2 con (volúmenes
—> /dev/sdb
, monitoreo y etiquetado de la instancia con Instance1
).
2. Ahora ejecuta el siguiente comando para ejecutar el playbook (advanced.yml
), que lanzará una instancia AWS EC2 con etiquetas, volumen y monitorización de CloudWatch. ansible-playbook advanced.yml

3. Navegue hasta la pestaña de Almacenamiento de la instancia que desea verificar en la consola de AWS EC2. Bajo Dispositivos de bloque, haga clic en un ID de volumen de la lista para ver la información detallada de la instancia.

4. Finalmente, haga clic en la pestaña de Etiquetas en la página de información resumida de la instancia. Verá la etiqueta que estableció para la instancia en el playbook (paso uno), como la que se muestra a continuación.

Conclusión
En este tutorial, ha aprovechado el módulo de Ansible para AWS EC2 para gestionar instancias de AWS EC2 con un solo comando. También aprendió cómo ajustar instancias de AWS EC2, como reiniciar, terminar, agregar etiquetas, y así sucesivamente.
Ahora que tiene un conocimiento sólido del módulo de Ansible para AWS EC2, ¿está dispuesto a incorporar el módulo de AWS EC2 de Ansible en su rutina de gestión de instancias? ¿Quizás quiera automatizar la tarea añadiendo un trabajo cron?