# 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)