Terraform y Packer
Infraestructura declarativa como código para VergeOS usando el proveedor de Terraform, OpenTofu y el complemento Packer para la creación automatizada de imágenes doradas.
La infraestructura como código (IaC) aporta el mismo control de versiones, revisión por pares y repetibilidad en los que confían los equipos de software para la provisión de infraestructura. La Proveedor Terraform de VergeOS te permite declarar VMs, redes y usuarios en archivos de configuración HCL, mientras que el complemento de Packer automatiza la creación de imágenes doradas. Juntos forman una canalización declarativa: Packer crea las imágenes, Terraform despliega la infraestructura.
Proveedor de Terraform
El proveedor Terraform de VergeOS se publica en el Registro de Terraform y es totalmente compatible con OpenTofu (la bifurcación de código abierto de Terraform). Te permite gestionar recursos de VergeOS mediante terraform plan / terraform apply flujos de trabajo.
Configuración del proveedor
terraform {
required_providers {
vergeio = {
source = "verge-io/vergeio"
version = "~> 2.7"
}
}
}
provider "vergeio" {
host = "https://vergeos.example.com"
username = "admin"
password = var.vergeos_password
insecure = true # Establézcalo en true para certificados SSL autofirmados
}host
Sí
URL o dirección IP del sistema o inquilino de VergeOS
username
Sí
Nombre de usuario de VergeOS con los permisos adecuados
password
Sí
Contraseña para el usuario especificado (marcar como confidencial)
insecure
No
Establezca true para aceptar certificados SSL autofirmados
Compatible con OpenTofu
La configuración del proveedor es idéntica para OpenTofu. Simplemente sustituye terraform los comandos con tofu — no se requieren cambios en el código.
Recursos
El proveedor actualmente admite cinco tipos de recursos administrados para crear y actualizar objetos de VergeOS:
vergeio_vm
Crear y administrar máquinas virtuales
cpu_cores, ram, os_family, machine_type, ha_group, cluster, guest_agent, uefi, secure_boot, snapshot_profile, powerstate, en línea vergeio_drive y vergeio_nic bloques
vergeio_network
Configurar redes virtuales
network (CIDR), dhcp_enabled, dhcp_start, dhcp_stop, vnet_default_gateway, powerstate
vergeio_user
Aprovisionar usuarios
Administración de cuentas de usuario dentro de VergeOS
vergeio_member
Gestionar la pertenencia a grupos
Asociar usuarios con grupos para RBAC
vergeio_tag_member
Asignar etiquetas a objetos
Adjuntar etiquetas a VMs, redes y otros objetos de VergeOS (VergeOS v26+)
Fuentes de datos
Diez fuentes de datos de solo lectura te permiten consultar objetos existentes de VergeOS para usarlos en tus configuraciones:
vergeio_version
Información actual de la versión de VergeOS
vergeio_clusters
Clústeres de cómputo/almacenamiento disponibles
vergeio_nodes
Nodos en el entorno
vergeio_networks
Redes virtuales existentes
vergeio_vms
Máquinas virtuales (filtrables por nombre, estado de instantánea)
vergeio_groups
Grupos de usuarios para RBAC
vergeio_mediasources
ISOs y archivos multimedia cargados
vergeio_cloudinitfiles
Archivos de configuración cloud-init disponibles
vergeio_resource_groups
Grupos de recursos de hardware (PCI, USB, grupos de vGPU)
vergeio_tags
Etiquetas configuradas en VergeOS
Ejemplos de HCL
VM con unidad y NIC
Este ejemplo crea un servidor web Linux con una unidad virtio-scsi de 10 GB y una NIC conectada a una red interna:
Red interna con DHCP
Consulta de VMs existentes
Usa fuentes de datos para referenciar infraestructura existente sin administrarla:
Integración de Cloud-Init
El vergeio_vm recurso admite cloud-init para la automatización del primer arranque. El esquema del proveedor expone un cloudinit_datasource atributo en la VM y una vergeio_cloudinitfiles fuente de datos para referenciar archivos cloud-init que ya existen en VergeOS:
Para conocer la sintaxis exacta usada para adjuntar archivos cloud-init en línea en el recurso de VM (frente a referenciar archivos precargados mediante la fuente de datos), consulta el repositorio del proveedor — la forma a nivel de campo puede evolucionar entre versiones.
Madurez y hoja de ruta
Consulta la cobertura actual de recursos
El proveedor Terraform de VergeOS está en desarrollo activo, y aún no todos los objetos de VergeOS están expuestos como un recurso administrado. Algunos ejemplos de áreas que pueden no tener cobertura completa del proveedor en un momento dado incluyen el aprovisionamiento de inquilinos, la administración de perfiles de instantáneas y la configuración de redes externas/WAN.
Consulta siempre el repositorio de GitHub y la entrada del Registro de Terraform para ver la cobertura actual de recursos y las notas de la versión antes de diseñar una configuración en torno a ellos.
Complemento de Packer
El Complemento de Packer para VergeOS (github.com/verge-io/packer-plugin-vergeio) automatiza la creación de imágenes de VM directamente en la plataforma VergeOS. Mientras Terraform administra la infraestructura en ejecución, Packer se centra en crear las imágenes doradas que sirven como base para las implementaciones.
¿Por qué Packer?
Las imágenes doradas garantizan que cada VM desplegada comience desde una base conocida, probada y endurecida. En lugar de aprovisionar un SO limpio y ejecutar scripts de configuración en cada despliegue, Packer precocina la imagen una sola vez:
Consistencia — Cada VM creada a partir de la imagen es idéntica
Velocidad — No hay retraso de aprovisionamiento en el primer arranque; las VMs están listas de inmediato
Cumplimiento — Las líneas base de seguridad y los parches se integran durante la compilación
Integración de la canalización — Desencadena recompilaciones de imágenes desde CI/CD en los días de parches del SO
Configuración del complemento
El complemento de Packer se declara en un required_plugins bloque junto con un source y build para la imagen de destino. Los nombres exactos de los campos para el source "vergeio" bloque (punto de conexión, credenciales, tamaño de la VM, opciones de disco, etc.) deben tomarse del repositorio del complemento, ya que pueden evolucionar entre versiones:
Una típica required_plugins declaración se ve así:
Capacidades
A alto nivel, el complemento impulsa el ciclo de vida completo de compilación de Packer contra la API de VergeOS: crea una VM temporal, ejecuta aprovisionadores y captura la imagen resultante. Para conocer el esquema de configuración exacto, los tipos de invitados admitidos y el comportamiento de apagado/limpieza, consulta directamente el repositorio del complemento:
Canalización de Packer → Recetas
Las imágenes de Packer se integran de forma natural con el sistema de Receta de recetas de VergeOS. Un flujo de trabajo típico:
Packer compila y endurece la imagen dorada según un cronograma (p. ej., ciclo mensual de parches)
La imagen se registra como una Receta de VM en el Marketplace de VergeOS
Los usuarios despliegan VMs estandarizadas a partir de la receta — ya sea a través de la UI o mediante Terraform
Las actualizaciones fluyen automáticamente: recompila la imagen de Packer, actualiza la receta y todos los nuevos despliegues obtienen la versión más reciente
Patrones de flujo de trabajo de IaC
Flujo de trabajo solo con Terraform
Para equipos que quieren infraestructura declarativa sin canalizaciones de imágenes:
Canalización completa (Packer + Terraform)
Para entornos de producción con gestión de imágenes doradas:
Combinado con otras herramientas
Terraform se encarga del aprovisionamiento; las herramientas de gestión de configuración se encargan del resto:
Creación de imágenes
Packer
Compilar imágenes doradas endurecidas
Aprovisionamiento
Terraform
Desplegar VMs, redes, usuarios
Configuración
Ansible / cloud-init
Configuración de software posterior al despliegue
Monitoreo
Prometheus / alertas de VergeOS
Observar la infraestructura desplegada
Buenas prácticas
Gestión del estado
Usa backends de estado remotos (S3, Consul, Terraform Cloud) para la colaboración en equipo
Nunca cometas
terraform.tfstateal control de versiones — puede contener credencialesBloquea los archivos de estado para evitar modificaciones simultáneas en entornos multiusuario
Seguridad
Usa variables para valores confidenciales (
var.vergeos_password) — nunca codifiques credenciales de forma fijaMarca las salidas confidenciales con
sensitive = truepara evitar la exposición accidental en los registrosRestringe los permisos del proveedor — crea un usuario dedicado de la API de VergeOS con el mínimo acceso requerido
Organización de módulos
Separa los entornos en espacios de trabajo o directorios (
dev/,staging/,prod/)Crear módulos reutilizables para patrones comunes (p. ej., un módulo "web-server" con VM + red + reglas de firewall)
Fijar las versiones del proveedor para evitar cambios incompatibles inesperados durante las actualizaciones
Lectura adicional
Última actualización
¿Te fue útil?