Actualizar README.md

clarificando README
This commit is contained in:
2025-07-03 02:23:46 +00:00
parent d8f0b5fb66
commit 741a026408

112
README.md
View File

@ -1,32 +1,50 @@
# ABYAYA.LA #
Este sistema automatiza la configuración de infraestructura mediante Ansible, utilizando un archivo de matriz (abyayala.yml) para gestionar:
- La VPN llamada *RAP*
Este sistema automatiza el despliegue de la red Abyaya.la, mediante [Ansible](), un software de automatización de código abierto, que permite la gestión de configuraciones, el despliegue de aplicaciones y la orquestación de tareas.
- Sintaxis basada en YAML, que significa "Yet Another Markup Language". Un formato de serialización de datos legible por humanes.
- Se definien playbooks, que son scripts que automatizan secuencias de tareas y configuraciones.
- Opera sin necesidad de instalar agentes en los nodos gestionados, ya que se comunica a través de SSH.
### abyayala.yml
Así, gestionamos la __infraestructura como código__, en un único archivo de matriz __abyayala.yml__
Este describe los componentes a desplegar para qu esta red funcione. Podríamos dividirlos en dos grandes componentes:
### La RAP
La _Red Autónoma Pirata_ es la __VPN__ que nos permite acceder a nuestros servidores, sin importar el lugar donde estén conectados.
|Características||
|-------------------------------|--------------------------------------------|
| Red | `10.13.12.1/24` |
| DHCP | Automático |
| Resolución de nombres | Hostname (ej. `ping ka.comun`) |
- El **proxy reverso** en *abyaya.la*:
|-------------------------------|--------------------------------------------|
| SSL/TLS Certificates | Automatic (Let's Encrypt) |
| Wildcard Domain | `*.nuevo.abyaya.la` |
| Acceso HTTPS | Ej: `https://sitio.nuevo.abyaya.la` |
### El PROXY
Es un servidor con una IP pública, a la que apuntamos el dominio __abyaya.la__.
La idea es reducir todo a un minimo de comandos de consola que gestionen al VPN y al Proxy a la vez.
Hace de **proxy reverso** para los demás servidores, ruteando el tráfico a cada servidor a través de la RAP.
|Características||
|-------------------------------|--------------------------------------------|
| Subdominios para los servidores|`nuevo.abyaya.la` |
| Servicios en los sub-sub-dominios| Ej: `https://sitio.nuevo.abyaya.la` |
| Certificados Wildcard| `*.nuevo.abyaya.la` |
----
# Cómo funciona
Con un "comando único" en Ansible
```
ansible-playbook deploy.yml
```
Esto ejecuta el playbook de ansible llamado *deploy.yml", el cual lee la matriz **abyayala.yml** para actualizar tanto a la VPN como al Proxy.
La idea es reducir todo a un solo comando único *deploy.yml", el cual leerá la matriz **abyayala.yml** para desplegar o actualizar, tanto a la VPN como al Proxy.
# Componentes Principales
## Estructura de Archivos
- abyayala.yml: Configuración principal (YAML) en donde se define declarativamente la infraestructura de ambos componentes (VPN y Proxy)
- deploy.yml: Playbook principal, el "comando único"
- abyayala.yml: Configuración principal (YAML) en donde se define declarativamente la infraestructura de ambos componentes (VPN y Proxy)
- tasks/: Playbooks adicionales para tareas específicas
- roles/: Cada rol configura un servicio del sistema
@ -34,21 +52,7 @@ Esto ejecuta el playbook de ansible llamado *deploy.yml", el cual lee la matriz
Esta se hace en dos partes, pues hay que configurarlo primero en el nodo de destino y después en el servidor del proxy.
## 1.1 - Instalar la RAP en el nodo
Para desplegar la RAP en nuestro nodo destino, utilizamos otro playbook, el script **tasks/rap.yml** especificando sus parámetros con **-e
"..."**
```
ansible-playbook --become tasks/rap.yml -e "nodo=nuevo host=miservidora"
```
En donde:
- **host**: es el nodo nuevo a configurar, según su definición en el inventario de ansible
- **nodo**: es el nombre que le daremos, el cual debe coincidir con el que desplegamos en el proxy más adelante
## 1.2 - Autorizar nuevo nodo en la RAP...
## 1.1 - Autorizar nuevo nodo en la RAP...
También tenemos que avisar a la RAP, la cual se define en el archivo abyayala.yml, en el **server_name: vpn**
@ -84,6 +88,20 @@ Siguiendo con el ejemplo anterior, utilizaremos el parametro **service** para ej
ansible-playbook deploy.yml -e "alt=abyayala host=hetzner service=vpn"
```
## 1.2 - Instalar la RAP en el nodo
Para desplegar la RAP en nuestro nodo destino, utilizamos otro playbook, el script **tasks/rap.yml** especificando sus parámetros con **-e
"..."**
```
ansible-playbook --become tasks/rap.yml -e "nodo=nuevo host=miservidora"
```
En donde:
- **host**: es el nodo nuevo a configurar, según su definición en el inventario de ansible
- **nodo**: es el nombre que le daremos, el cual debe coincidir con el que desplegamos en el proxy más adelante
## 2 - HABILITAR ACCESO HTTPS AL NUEVO NODO
Por otro lado, hay que actualizar al **Proxy** para que el nuevo nodo sea accesible por HTTPS, en un subdominio público.
@ -122,6 +140,8 @@ Por ejemplo se puede acotar aún más, saltándose todas las tareas de instalaci
ansible-playbook deploy.yml -e "alt=abyayala host=hetzner service=nuevo" --skip-tags=installation
```
----
# INSTALACIÓN
## Instalar Ansible
@ -147,7 +167,7 @@ ssh-keygen -t ed25519
ssh-copy-id root@nuevo.comun
```
## ALTA DE USUARIXS EN EL PROXY
### ALTA DE USUARIXS EN EL PROXY
Para conectarse al proxy deben agregar sus llaves como dice a continuación:
@ -155,20 +175,7 @@ Para conectarse al proxy deben agregar sus llaves como dice a continuación:
* Agregarle en `group_vars/all/ssh_users.yml` (copiando la sintaxis)
* Correr `ansible-playbook tasks/users.yml -e "host=hetzner"`
## DEPLOY LOCAL
En este ejemplo, instalaremos todo en nuestro localhost para desarrollo, como si fuera un nodo del proxy.
```
ansible-playbook --become tasks/rap.yml -e "host=localhost nodo=nombrelo" -i hosts.local
```
Esto también es útil para instalar Ansible en nuestra terminal, junto con sus dependencias (Módulos para docker, etc.)
#### SSH PARA DESARROLLO
Para autoconectarse por SSH hay que autorizarse a sí mismx:
```
# Habilitar auto-conexión SSH
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
```
---
# TESTING
@ -183,6 +190,7 @@ root@proxy-reverso-escuela-comun:~# ping ka.comun
PING ka.comun (10.13.12.129) 56(84) bytes of data.
64 bytes from ka.comun (10.13.12.129): icmp_seq=1 ttl=64 time=169 ms
```
## Acceso HTTPS
Por otra parte, como resultado del despliegue de la segunda parte (PROXY), el **nodo** debe ser accesible en el subdominio **nuevo. abyaya.la**
@ -191,3 +199,19 @@ Los servicios de cada nodo son accesibles a través de SSL en **sub-sub-** domin
Por ej. **https://sitio.nuevo.abyaya.la** o **https://nube.nuevo.abyaya.la**
---
## DEPLOY LOCAL
En este ejemplo, instalaremos todo en nuestro localhost para desarrollo, como si fuera un nodo del proxy.
```
ansible-playbook --become tasks/rap.yml -e "host=localhost nodo=nombrelo" -i hosts.local
```
Esto también es útil para instalar Ansible en nuestra terminal, junto con sus dependencias (Módulos para docker, etc.)
#### SSH PARA DESARROLLO
Para autoconectarse por SSH hay que autorizarse a sí mismx:
```
# Habilitar auto-conexión SSH
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
```