https://github.com/ralf02/k8s-ansible-aws
Propuesta de automatización de Instalación de Kubernetes y Docker en Instancias Debian AWS con Ansible.
https://github.com/ralf02/k8s-ansible-aws
ansible aws cluster devops docker k8s
Last synced: about 2 months ago
JSON representation
Propuesta de automatización de Instalación de Kubernetes y Docker en Instancias Debian AWS con Ansible.
- Host: GitHub
- URL: https://github.com/ralf02/k8s-ansible-aws
- Owner: ralf02
- Created: 2025-06-13T20:38:28.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-06-13T20:45:54.000Z (about 1 year ago)
- Last Synced: 2025-06-13T21:33:37.801Z (about 1 year ago)
- Topics: ansible, aws, cluster, devops, docker, k8s
- Homepage:
- Size: 0 Bytes
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Infraestructura como Código con Terraform & Ansible
Este proyecto contiene la configuración de infraestructura como Codigo (IaC) con Terraform y playbooks de Ansible para la gestión de infraestructura en la nube AWS, con soporte para Kubernetes, Docker, GitLab Runner y más.
## Estructura del Proyecto
```
.
├── ansible/ # Configuración principal de Ansible
│ ├── ansible.cfg # Configuración global de Ansible
│ ├── inventory/ # Definición de hosts y grupos
│ │ └── hosts.yml # Configuración de hosts en formato YAML
│ ├── playbooks/ # Playbooks principales
│ │ ├── k8s-cluster.yml # Configuraciones comunes
│ │ └── simple-server.yml # Instalación y configuración de Docker
│ └── roles/ # Roles de Ansible organizados por funcionalidad
│ ├── commons/ # Configuraciones básicas del sistema
│ ├── cerbot # Configuraciones cerbot
│ ├── docker # Configuraciones docker
│ ├── gitlab-runner # Configuraciones gitlab-runner
│ ├── kubernetes # Configuraciones para un cluster k8s
│ ├── php # Configuraciones php
│ └── update-system # Actualizaciones del sistema
│
├── terraform/ # Configuración de infraestructura con Terraform
│ ├── environments/ # Entornos (dev, prod, etc.)
│ │ └── dev/
│ │ └── simple-server/ # Configuración para servidor simple
│ └── modules/ # Módulos reutilizables
│ ├── ec2/ # Configuración de instancias EC2
│ ├── vpc/ # Configuración de VPC
│ └── security_groups/ # Configuración de grupos de seguridad
│
├── scripts/
│ ├── run_ansible_k8s # Script para ejecutar la creacion de un cluster k8s
│ ├── run_ansible.sh # Script para ejecutar playbooks
│ └── run_IaC_simple_server.sh # Script completo IaC (Terraform + Ansible)
│
├── notes/ # Documentación y notas adicionales
│ └── labs/ # Laboratorios iniciales
└── env.example # Plantilla de variables de entorno
```
## Configuración de variables de Entorno
1. Copia el archivo de entorno de ejemplo:
```bash
cp env.example .env
```
2. Edita el archivo `.env` con tus credenciales y configuraciones:
```bash
# Configuración default ansible
ANSIBLE_HOST=1.2.3.4
ANSIBLE_USER=user
ANSIBLE_KEY=~/.ssh/tu-clave.pem
# IPs de los servidores para cluster k8s
WORKER_NODE_01_IP=1.2.3.2
WORKER_NODE_02_IP=1.2.3.3
```
## Uso Básico
### Ejecucción playbooks Ansible
Usa el script `run_ansible.sh` para ejecutar un playbook en especifico para testear. Este script cargará automáticamente las variables de entorno desde el archivo `.env`:
```bash
# Dar permisos de ejecución al script
chmod +x ./scripts/run_ansible.sh
# Ejecutar playbook de actualizaciones del sistema
./scripts/run_ansible.sh playbooks/00-update-system.yml
# Ejecutar playbook de paquetes comunes
./scripts/run_ansible.sh playbooks/01-commons.yml
# Ejecutar playbook de dokcer
./scripts/run_ansible.sh playbooks/02-docker.yml
```
### Gestión de Infraestructura con Terraform
Incluyo scripts para gestionar la infraestructura con terraform :
```bash
# Dar permisos de ejecución a los scripts
chmod +x ./scripts/run_terraform_simple_server.sh
chmod +x ./scripts/run_IaC_simple_server.sh
# Desplegar infraestructura
./scripts/run_terraform_simple_server.sh apply
# Destruir infraestructura (con confirmación)
./scripts/run_terraform_simple_server.sh destroy
# Despliegue completo (Terraform + Ansible)
./scripts/run_IaC_simple_server.sh
```
## Variables de Entorno
Las siguientes variables de entorno pueden configurarse en el archivo `.env`:
- `ANSIBLE_HOST`: IP del host (en el cluster k8s actuara como nodo de control)
- `ANSIBLE_USER`: Usuario para conectarse a los servidores remotos
- `ANSIBLE_KEY`: Ruta a la clave privada SSH
- `WORKER_NODE_XX_IP`: IPs de los nodos worker para cluster k8s
## Notas adicionales
- Todas las credenciales y configuraciones sensibles deben ir en el archivo `.env`
- El archivo `.env` está incluido en `.gitignore` por defecto
- Usa `run_ansible.sh` para ejecutar playbooks con las variables de entorno cargadas automáticamente
- Los archivos `*.tfplan` y `*.tfstate` están incluidos en `.gitignore` por seguridad
- La infraestructura se puede gestionar manualmente con Terraform en el directorio `terraform/environments/dev/simple-server/`