Configuración de Ansible para EC2 con inventario dinámico🙂

Poojan Mehta
Poojan Mehta

Sigue

Sep 25, 2020 – 5 min read

→ Requisitos previos:

– >RedHat Ansible descargado y configurado en el sistema local.

>Revisa mi artículo anterior para Ansible👇👇:

~Enunciado del Problema:

♦️ ¡Desplegar el Servidor Web en AWS a través de ANSIBLE!

🔹 Aprovisionar la instancia EC2 a través de ansible.

🔹 Recuperar la dirección IP de la instancia utilizando el concepto de inventario dinámico.

🔹 ¡Configurar el servidor web a través de ansible!

  • Como Ansible está construido sobre python, se requiere un kit de desarrollo de software (SDK) de Python que permite la configuración de los servicios de AWS. El paquete es una API orientada a objetos llamada boto3.
pip3 install boto3 //assuming python3 is installed

→STEP-1)

  • En el primer paso, aprovisioné una instancia ec2 con este playbook.
  • Aquí, el propio sistema RedHat llama a la API para la configuración en AWS, y este procedimiento se hace en la máquina local por eso el host se supone que es localhost.
  • Para la autenticación en la cuenta de AWS, crear un usuario IAM que tenga menos privilegios que la cuenta root. La clave AWS_ACCESS_KEY y AWS_SECRET se pasan explícitamente a través de una bóveda de Ansible llamada secret.yml

Encriptado Vault🔒
- hosts: localhost
vars_files:
- secret.yml
tasks:
- name: Provision os in AWS
ec2:
key_name: "keytask" //keypair to be attached to the instance
instance_type: "t2.micro"
image: "ami-0ebc1ac48dfd14136" //amazon linux
count: 1
wait: yes
vpc_subnet_id: "subnet-e7780dab"
region: "ap-south-1" //asia-pecific-south region of AWS
state: present
assign_public_ip: yes
group_id: "sg-0512d293cfb4af6e4" //security group
aws_access_key: "{{ myuser }}"
aws_secret_key: "{{ mypass }}"
register: ec2 - debug:
var: ec2.instances.public_ip

ansible-playbook ec2.py – ask-vault-pass🚀

El registro de Ansible permite al usuario capturar la salida y almacenarla como variables y puede ser utilizada en diferentes escenarios. Las variables contendrán el valor devuelto por la tarea.

La variable register imprimirá la dirección IP pública de la instancia a partir de los datos de Ansible que recoge.

→STEP-2)

> ¡La instancia ha sido lanzada! ¿Qué es lo siguiente?🤔🤔

¡Necesitamos volcar la dirección IP de esta instancia en el archivo de inventario y hacer el procedimiento posterior!

¿Se trata de escribir simplemente la IP en el archivo de host🤭? ¡NAH ! No manualmente🤫🤫

Y AQUÍ ES DONDE ENTRA EN JUEGO EL INVENTARIO DINÁMICO🔥:

→El inventario dinámico ansible es un concepto que contiene scripts que funcionan como APIs externas y tiran de la información(hechos) de un determinado proveedor.

→Los hechos recogidos se volcarán dinámicamente en el archivo de host y, además, podemos crear grupos de estos hosts de acuerdo a los requerimientos.

→Copiar los siguientes archivos en el nodo controlador para habilitar el inventario dinámico.

https://raw.githubusercontent.com/ansible/ansible/stable-1.9/plugins/inventory/ec2.pyhttps://raw.githubusercontent.com/ansible/ansible/stable-1.9/plugins/inventory/ec2.ini

→Ambos archivos deben estar en formato ejecutable:

chmod +x ec2.py
chmod +x ec2.ini

→Además, para la autenticación de la cuenta, pasar AWS_ACCESS_KEY y AWS_SECRET_KEY en el archivo ec2.ini. Esto contactará con AWS en nuestro nombre y recuperará la información de la instancia ec2.

→Edita también el archivo de inventario en los archivos de configuración ANSIBLE.CFG.

→Ahora, para ver la salida, ejecuta ./ec2.py - - list

Deja un comentario