An open API service indexing awesome lists of open source software.

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.

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/`