Actualizar README.md
clarificando README
This commit is contained in:
112
README.md
112
README.md
@ -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
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user