Skip to main content

Stacks i ISOs

Un stack és una aplicació desplegada: una o diverses VMs a Proxmox creades a partir d'una plantilla. És la secció principal d'Horizon.

Crear un stack​

  1. Escollir una plantilla activa.
  2. Configurar-la treball a treball: el formulari dibuixa les fases de la plantilla i cada treball té els seus propis paràmetres. Una plantilla amb un màster petit i workers grans s'emplena exactament així.
  3. Adjuntar a cada VM el que necessita: una adreça amb nom (reservada a la xarxa), una clau SSH, el servidor Proxmox, el seu resource pool i, segons la plantilla, una ISO. Si només hi ha una opció possible, ja ve escollida.
  4. Decidir la monitorització de cada VM: Nagios (amb el seu host group) i Node Exporter. La secció de Nagios només apareix si hi ha un servidor Nagios registrat.
  5. Els treballs marcats com a múltiples execucions (per exemple els workers de Kubernetes) comencen amb una i se n'hi afegeixen tantes com es vulgui, cadascuna amb la seva configuració.

L'stack es guarda primer com a esborrany: es pot preparar, deixar-lo i desplegar-lo més tard, o editar-lo i llençar-lo sense tocar cap infraestructura.

Desplegar​

En desplegar, Horizon construeix les VMs en l'ordre de la plantilla: els treballs d'una fase en paral·lel, i les fases una darrere l'altra. Les màquines d'un mateix servidor Proxmox es construeixen d'una en una, ja que la pujada per SSH del cloud-init no en suporta dues alhora.

Un stack fixa la plantilla (i el commit de cada treball) amb què es va crear, així que els canvis posteriors a la plantilla no afecten el que ja està desplegat.

Si la plantilla declara checks de Nagios, l'últim pas d'un desplegament correcte és publicar-ne les màquines a Nagios. Un desplegament que falla no publica res, i un que demana una ordre que Nagios no té es rebutja abans de començar.

Seguiment​

  • La llista i el detall s'actualitzen en temps real.
  • Cada stack guarda l'historial d'estats (qui, quan i l'error si n'hi va haver) i el log complet del desplegament, que es pot pausar, filtrar per treball o execució, i descarregar.
  • El pipeline es dibuixa tal com es va executar: una columna per fase, una targeta per execució de cada treball, amb el seu estat. Un treball held no es va arribar a executar perquè va fallar una fase anterior. Una targeta fallida mostra la primera línia del seu error.
  • Les sortides de cada treball (una IP, una contrasenya generada, una ordre de join, ...) es mostren agrupades per treball. Les marcades com a secretes queden ocultes darrere d'un botó, i es poden copiar sense mostrar-les.

El dia a dia​

Editar​

Edit permet canviar el nom, la descripció, les etiquetes, els paràmetres i el nombre d'execucions:

  • Canviar un paràmetre torna a aplicar la plantilla fixada amb els valors nous (el botó diu Save and re-apply). Només es tornen a aplicar els treballs afectats: pujar la memòria d'un worker torna a aplicar aquest worker, no el clúster sencer. Els treballs que en depenen s'executen de nou.
  • Afegir una execució en construeix la màquina i n'executa els scripts. Treure-la executa primer els seus scripts de neteja i després destrueix la VM. Abans de desar, Horizon llista exactament què es crearà i què es destruirà, i demana confirmació.
  • Substituir una màquina és treure una execució i afegir-ne una altra al mateix desament. Si la plantilla ho indica (replace by adding first), la nova es construeix abans de treure l'anterior, de manera que un clúster no es queda mai sense control plane.
  • Les etiquetes d'un stack de Proxmox també s'escriuen a les VMs.

L'entorn no es pot canviar un cop desplegat, i no s'accepta cap edició mentre hi hagi una execució en curs.

Accions​

Una plantilla pot oferir accions sobre un stack desplegat: un petit Terraform (per exemple, crear un usuari de base de dades) o un script en una de les seves màquines (per exemple, renovar certificats). Els valors que necessiten arriben emplenats a partir de les sortides de l'stack i es poden modificar. Les accions de Terraform queden com a instàncies que es poden desfer una a una; les d'script queden a l'historial.

Run again​

Cada targeta del pipeline ofereix Run again, que executa de nou aquell treball amb les mateixes respostes. És la manera de refrescar una sortida que ha canviat fora d'Horizon, com el kubeconfig d'un clúster després de renovar-ne els certificats.

Reintentar​

Un stack fallit ofereix Retry failed jobs, que només executa el que està trencat: el que va fallar, el que no es va arribar a executar i el que queda pendent. El que va acabar bé no es toca. Al mateix menú:

  • Force retry failed jobs: torna a descarregar el codi de la branca abans de reintentar (la sortida per a un stack fixat en un commit trencat).
  • Retry everything: torna a aplicar tot l'stack.

Editar un stack fallit també és la manera de corregir el que el va trencar: l'execució que aplica el canvi acaba a més el que estava pendent.

Actualitzar la plantilla​

Quan la plantilla ha canviat des que es va fixar, un administrador pot prémer Upgrade template. L'stack passa a fer servir la nova definició a la seva execució següent. Si la nova versió elimina treballs, primer es destrueixen amb la versió que els va crear.

Cancel·lar​

Un pas bloquejat (per exemple, una màquina que no respon mai) deixaria l'stack ocupat indefinidament. Cancel run interromp Terraform i deixa l'stack com a fallit. No és un rollback: el que s'ha creat es queda, i es recupera reintentant o eliminant.

Duplicar​

Duplicate obre un esborrany nou amb la mateixa plantilla, entorn, etiquetes i respostes, deixant buit el que no es pot compartir (adreces i valors propis de cada màquina).

Eliminar​

Remove treu primer les màquines de Nagios, destrueix el que han creat les accions i després la infraestructura, n'allibera les adreces i n'esborra els logs i l'estat. L'activitat es manté.

Si el Terraform de l'stack està trencat (un bug, un proveïdor que ja no existeix, màquines esborrades a mà), l'esborrat normal fallarà sempre. Per a això, un administrador pot fer servir force-remove en un stack fallit: el desvincula d'Horizon sense destruir res. La confirmació llista cada VM (amb el seu id i node de Proxmox) i cada adreça que s'allibera, perquè després caldrà esborrar-les a mà a Proxmox.

Startup​

La secció Startup llista totes les VMs de tots els stacks de Proxmox en l'ordre en què arrenquen quan un host es reinicia, amb el seu stack, entorn, treball, host i estat. El número d'arrencada es defineix a cada màquina en configurar l'stack; les que no en tenen arrenquen al final.

ISOs​

Moltes plantilles necessiten una imatge d'instal·lació a Proxmox abans de crear una VM. La secció ISOs les construeix a partir d'una plantilla ISO, amb el mateix tractament que els stacks: historial, log en directe, reintent i edició.

Una ISO construïda està disponible per a les VMs del seu servidor i de qualsevol altre node del mateix clúster. No es pot esborrar mentre un stack la faci servir.