clouds / provision
El aprovisionamiento de Clouds es de lejos una de las tareas más importantes no sólo en la creación de clouds, sino también en su mantenimiento.
A su implementación la llamaremos aquí wu wei como un modo taoista de la acción sin esfuerzo con mucha combinación de vacío, quietud y no-acción.
La mayoría del conocimiento sobre la instalación depende de la plataforma del proveedor y del sistema operativo, tiene muchas pequeñas tareas que hay que preparar y verificar y ha de tener en cuenta cómo se actualizarán las versiones, configuracione y plataformas.
Dado que ha muchas utilidades y modos, es necesario seleccinar un criterio para establecer una forma de hacer, ya que puede llevar a métodos y resultados diferentes.
Las tareas se puden agrupara como:
- Aprovisionamiento de Nodos (instancias o servidores).
- Preparación de Nodos.
- Intalación y configuración de Aplicaciones.
Path para aprovisonamiento
Se sigue los criterios principales, ha de ser KISS y no vendor lock-in.
Se han realizado test con Upcloud y Scaleway
Demo
Un ejemplo de demo se puede encontrar a partir de la ponencia "En un Mar de Nubes" presentada en la WordCamp de WordPress en Las Palmas de Gran Canaria 2019 en este enlace:
Video Demo En un Mar de Nubes [7:25 minutes]
Aprovisionamiento de Nodos
Terraform puede cubrir muchos proveedores, ha evolucionado en su CLI y API.
Tras una definición de recursos a provisionar, el resultado pude usarse para crear/actualizar el aprovisionamiento de instancias
Desde la disponiblidad de recursos es posiblre crear un inventario que se use como base principal para los siguientes pasos de aprovisionamiento.
Preparación de Nodos
Con Ansible, sus roles y playbooks se pueden preparar los nodos y configurar las aplicaciones que se van a instalar.
Intalación y configuración de Aplicaciones.
Ansible con sus utilidades para installar y configurarlas.
Casi 50 roles ansible para gestionar systempack, docker, container, kubernetes, proxies, storages, etc
Multi-targets
para gestionar varios clusters se ha creado esta estructura:
├── README.md ├── ansible │ ├── README.md │ ├── ansible.cfg │ ├── bin │ ├── global.yml │ ├── group_vars │ ├── inventories │ ├── keys │ ├── library │ ├── roles │ ├── run_playbook.sh │ ├── secret │ └── vars ├── lib │ ├── local │ ├── provision.sh │ ├── run_on_target.sh │ ├── scaleway │ ├── terraform-started.sh │ ├── trf.sh │ └── upcloud ├── provision │ ├── README.md │ ├── bin │ ├── cluster-one │ ├── cluster-two │ └── cluster-three └── targets ├── README.md ├── bin ├── cluster-one ├── cluster-two └── cluster-three
El path principal de ansible se usará como biblioteca principal y será llamado desde los path de los targets cluster de ansible.
Hay ficheros vars para roles y tasks para proporcionar url de descarga, paths, versiones, plantillas, parámentros, etc.
Un fichero lst-vars.yml en cada target cluster directory contiente la últimas versiones para configurar/installar/actualizar. Las tareas son gestionadas desde los playbooks de los cluster target. Cada target cluster puede ser independiente de los demás y reutilizar los roles y valores comunes.