Día 55: Gestión de Configuración con Ansible

Resumen rápido de prerequisitos: tener AWS CLI configurado en tu equipo opcionalmente, disponer de una VPC o subred para lanzar instancias, elegir un nombre de keypair y descargar la clave privada una sola vez, y contar con permisos para crear instancias EC2, grupos de seguridad e IAM si hace falta. Estas son las tareas principales para montar un entorno con 1 master y 2 nodos gestionados por Ansible.

1) Crear o reutilizar un par de claves SSH para las instancias. En la consola de EC2 crear Key pair y descargar el archivo .pem; por ejemplo day55-key.pem. En CLI se puede ejecutar aws ec2 create-key-pair con el nombre deseado y redirigir la salida a un archivo day55-key.pem y luego chmod 400 day55-key.pem. Mantén esa clave privada segura ya que la usarás para SSH al master y para que el master haga SSH a los nodos.

2) Lanzar instancias EC2: 1 master y 2 nodos. Usa la consola Launch Instance si prefieres interfaz gráfica. Al crear las tres instancias selecciona el mismo key pair para que una sola clave privada funcione en todas. Recomendación práctica: master con Ubuntu 22.04 LTS y tipo t3.micro para pruebas. Crear un security group llamado ansible-sg que permita SSH puerto 22 desde tu IP para acceder al master y permita SSH desde el master a los nodos. Añade HTTP puerto 80 si quieres probar un servidor web. Si usas CLI necesitas indicar VPC_ID, SUBNET_ID y AMI_ID al lanzar instancias; no dejes SSH abierto a 0.0.0.0 en producción.

3) Asegurar la red: permitir SSH del master a los nodos. Lo ideal es crear ansible-master-sg para el master y ansible-nodes-sg para los nodos y en las reglas entrantes de ansible-nodes-sg permitir SSH desde la fuente ansible-master-sg. Esto evita exponer puertos innecesarios y mejora la seguridad.

4) Instalar Ansible en el master. Conecta por SSH desde tu portátil al master: ssh -i ./day55-key.pem ubuntu@MASTER_PUBLIC_IP. En Ubuntu ejecutar apt update, apt install software-properties-common, agregar el PPA de Ansible con apt-add-repository ppa:ansible/ansible, y luego apt install ansible. Verifica con ansible --version. En Amazon Linux usar amazon-linux-extras install ansible2 -y o instalar ansible vía pip según prefieras.

5) Copiar la clave privada al master de forma segura. Para que Ansible en el master haga SSH a los nodos necesitas la clave privada en el master. Copia temporalmente con scp -i ./day55-key.pem ./day55-key.pem ubuntu@MASTER_PUBLIC_IP:/home/ubuntu/.ssh/node_key.pem y en el master asegurar permisos con chmod 600 y chown ubuntu:ubuntu. Nota de seguridad: copiar claves privadas es sensible; elimina la .pem del master cuando deje de ser necesaria o, mejor, utiliza AWS Systems Manager o un vault en producción.

6) Crear el inventario de Ansible en el master. Mantén un inventario por proyecto en lugar de editar /etc/ansible/hosts global. Ejemplo de contenido para /home/ubuntu/ansible/hosts con las IP privadas de los nodos cuando master y nodos comparten VPC: [web] 10.0.1.12 ansible_user=ubuntu ansible_ssh_private_key_file=/home/ubuntu/.ssh/node_key.pem 10.0.1.13 ansible_user=ubuntu ansible_ssh_private_key_file=/home/ubuntu/.ssh/node_key.pem [all:vars] ansible_python_interpreter=/usr/bin/python3. Valida con ansible-inventory -i /home/ubuntu/ansible/hosts --list.

7) Asegurar que los nodos tienen Python. Ansible necesita Python en los nodos gestionados. Si aparece un error failed to find interpreter for /bin/python instala python3 en los nodos, por ejemplo ssh -i ./day55-key.pem ubuntu@NODE_IP sudo apt update && sudo apt install -y python3 o en Amazon Linux yum install -y python3.

8) Ejecutar la prueba ping de Ansible desde el master. Opción A usando el inventario con clave por host: ansible -i /home/ubuntu/ansible/hosts web -m ping. Opción B pasando usuario y clave en la línea: ansible all -i /home/ubuntu/ansible/hosts -u ubuntu --private-key=/home/ubuntu/.ssh/node_key.pem -m ping. Salida esperada: 10.0.1.12 | SUCCESS => ping pong y similar para 10.0.1.13.

Resolución de problemas comunes: error permission denied SSH verificar clave y permisos chmod 600 y que la instancia usa ese key pair; connection timed out revisar reglas del security group y tablas de ruteo; python no encontrado instalar python3 o configurar ansible_python_interpreter en el inventario; errores de verificación de host usar ssh-keyscan -H y añadir al known_hosts o temporalmente ANSIBLE_HOST_KEY_CHECKING=False para pruebas, no recomendado en producción.

Limpieza y buenas prácticas de seguridad: no dejes archivos .pem desprotegidos, rota o elimina claves tras pruebas, y en entornos productivos usa AWS Systems Manager SSM, bastion hosts y roles IAM en lugar de copiar claves. Para almacenar secretos emplea Ansible Vault o un gestor de secretos. Si buscas apoyo profesional en despliegue, automatización y seguridad, en Q2BSTUDIO somos especialistas en desarrollo de software y aplicaciones a medida, inteligencia artificial e infraestructuras seguras. Podemos ayudarte a integrar Ansible en pipelines CI CD, diseñar soluciones de servicios cloud AWS y Azure y aplicar prácticas de ciberseguridad y pentesting.

Sobre Q2BSTUDIO: somos una empresa de desarrollo de software dedicada a crear aplicaciones a medida y soluciones de software a medida para empresas que requieren innovación en inteligencia artificial, servicios inteligencia de negocio y agentes IA. Ofrecemos consultoría en automatización de procesos, integración con Power BI y soluciones de IA para empresas que buscan mejorar procesos con agentes IA y analítica avanzada. Si necesitas crear una aplicación a medida confiable y segura, consulta nuestros servicios de software a medida.

Palabras clave integradas naturalmente para mejorar posicionamiento: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi.