Planes
+-> | VMs(1) | ---> | [ (usuario, puerto) ] |
internet ---> | nginx(1+) | --+-> | VMs(..) | ---> | [ (usuario, puerto) ] |
+-> | VMs(n) | ---> | [ (usuario, puerto) ] |
nginx
Tiene que:
- Crear una ruta subdominio <--> VM:Puerto
- Conseguir certificado Let's encrypt
- Renovar certificados
VMs(k)
Tiene que:
- Tener distintos usuarios(unix) por cliente (señora), distintos $HOME con distintos puertos para backend.
- Droppear TODO el trafico que no sea de nginx.
- Backup? por proxy nginx?
Ansible
- Crear VM nginx
- DO VM + Agregar a lista de nginx
- Instalar SSH, nginx, certbot
- Configurar subdominios (DO) para señoras
- Configurar subdominios (nginx) para señoras
- Conseguir certificados para señoras
- Crear VM(k) señora
- DO VM + Agregar a lista de VMs existentes
- Instalar SSH, python, pip
- sacar passwd login de ssh
- iptables/ufw que dropee todo el trafico que no sea ssh y que no sea de VM nginx
- Asignar señora a VM
- crear usuario señora, con HOME
- asignarle un puerto disponible a la señora
- Agregar (señora,VM,puerto) a lista de señoras
Ansible en orden de resolucion
Crear VM nginx
- DO VM + Agregar a lista de nginx (requerido para IP en ufw, dns)
Instalar SSH, nginx, certbot
- (Si es necesario)
Crear VM(k) señora
- DO VM + Agregar a lista de VMs existentes (requerido para dns, subdominio, certificado)
Instalar SSH, python, pip
sacar passwd login de ssh
iptables/ufw que dropee todo el trafico que no sea ssh y que no sea de VM nginx (sigue faltando obtener la whitelist)
- Asignar señora a VM
- crear usuario señora, con HOME
- asignarle un puerto disponible (8000-8100) a la señora
- Agregar (señora,VM,puerto) a lista de señoras
Configurar subdominios (DO) para señoras(http POST "https://api.digitalocean.com/v2/domains/davidventura.com.ar/records" type="A" name="senora" data="1.2.3.4" Authorization:"Bearer $DO_API_TOKEN")
Configurar subdominios (nginx) para señoras
- Conseguir certificados para señoras
Listas/Base de datos
- Lista de VMs nginx(id,ip)
- Lista de VMs señoras (id, ip)
- Lista de señoras (datos personales, VM-señora-id, usuario, puerto)