Terraform & Packer
Deklarative Infrastructure-as-Code für VergeOS mit dem Terraform-Provider, OpenTofu und dem Packer-Plugin für die automatisierte Erstellung von Golden Images.
Infrastructure als Code (IaC) bringt dieselbe Versionskontrolle, Peer-Review und Wiederholbarkeit in die Bereitstellung von Infrastruktur, auf die sich Softwareteams verlassen. Die VergeOS-Terraform-Provider ermöglicht es Ihnen, VMs, Netzwerke und Benutzer in HCL-Konfigurationsdateien zu deklarieren, während das Packer-Plugin die Erstellung von Golden Images automatisiert. Zusammen bilden sie eine deklarative Pipeline: Packer erstellt die Images, Terraform deployt die Infrastruktur.
Terraform-Provider
Der VergeOS-Terraform-Provider ist im Terraform Registry veröffentlicht und vollständig kompatibel mit OpenTofu (dem Open-Source-Fork von Terraform). Es ermöglicht Ihnen, VergeOS-Ressourcen über standardmäßige terraform plan / terraform apply Workflows zu verwalten.
Provider-Konfiguration
terraform {
required_providers {
vergeio = {
source = "verge-io/vergeio"
version = "~> 0.1.0"
}
}
}
provider "vergeio" {
host = "https://vergeos.example.com"
username = "admin"
password = var.vergeos_password
insecure = true # Auf true setzen für selbstsignierte SSL-Zertifikate
}host
Ja
URL oder IP-Adresse des VergeOS-Systems oder -Mandanten
username
Ja
VergeOS-Benutzername mit den entsprechenden Berechtigungen
password
Ja
Passwort für den angegebenen Benutzer (als sensitiv)
insecure
Nein
Setzen Sie true zu kennzeichnen, um selbstsignierte SSL-Zertifikate zu akzeptieren
Mit OpenTofu kompatibel
Die Provider-Konfiguration ist für OpenTofu identisch. Ersetzen Sie einfach terraform Befehle durch tofu — keine Codeänderungen erforderlich.
Ressourcen
Der Provider unterstützt derzeit vier verwaltete Ressourcentypen zum Erstellen und Aktualisieren von VergeOS-Objekten:
vergeio_vm
Virtuelle Maschinen erstellen und verwalten
cpu_cores, ram, os_family, machine_type, ha_group, Cluster, guest_agent, uefi, secure_boot, snapshot_profile, powerstate, inline vergeio_drive und vergeio_nic blocks
vergeio_network
Virtuelle Netzwerke konfigurieren
network_address (CIDR), dhcp_enabled, dhcp_start, dhcp_end, dns_server_list, gateway, powerstate
vergeio_user
Benutzer bereitstellen
Benutzerkontenverwaltung innerhalb von VergeOS
vergeio_member
Gruppenmitgliedschaft verwalten
Benutzer mit Gruppen für RBAC verknüpfen
Datenquellen
Acht schreibgeschützte Datenquellen ermöglichen es Ihnen, vorhandene VergeOS-Objekte für die Verwendung in Ihren Konfigurationen abzufragen:
vergeio_version
Aktuelle VergeOS-Versionsinformationen
vergeio_clusters
Verfügbare Compute-/Storage-Cluster
vergeio_nodes
Knoten in der Umgebung
vergeio_networks
Vorhandene virtuelle Netzwerke
vergeio_vms
Virtuelle Maschinen (nach Name, Snapshot-Status filterbar)
vergeio_groups
Benutzergruppen für RBAC
vergeio_mediasources
Hochgeladene ISOs und Mediendateien
vergeio_cloudinitfiles
Verfügbare Cloud-Init-Konfigurationsdateien
HCL-Beispiele
VM mit Laufwerk und NIC
Dieses Beispiel erstellt einen Linux-Webserver mit einem 10-GB-virtio-scsi-Laufwerk und einer NIC, die an ein internes Netzwerk angebunden ist:
Internes Netzwerk mit DHCP
Vorhandene VMs abfragen
Verwenden Sie Datenquellen, um auf bestehende Infrastruktur zu verweisen, ohne sie zu verwalten:
Cloud-Init-Integration
Das vergeio_vm Die Ressource unterstützt cloud-init für die Automatisierung beim ersten Start. Das Provider-Schema stellt ein cloudinit_datasource Attribut auf der VM sowie eine vergeio_cloudinitfiles Datenquelle zum Referenzieren von bereits in VergeOS vorhandenen Cloud-Init-Dateien bereit:
Für die genaue Syntax, die verwendet wird, um Cloud-Init-Dateien inline an die VM-Ressource anzuhängen (anstatt über die Datenquelle auf vorab hochgeladene Dateien zu verweisen), konsultieren Sie das Repository des Providers — das feldbezogene Format kann sich zwischen Releases weiterentwickeln.
Reifegrad & Roadmap
Aktuelle Ressourcenabdeckung prüfen
Der VergeOS-Terraform-Provider befindet sich in aktiver Entwicklung, und noch nicht jedes VergeOS-Objekt wird bereits als verwaltete Ressource bereitgestellt. Beispiele für Bereiche, die zu einem bestimmten Zeitpunkt möglicherweise nicht vollständig vom Provider abgedeckt sind, sind die Mandantenbereitstellung, die Verwaltung von Snapshot-Profilen und die Konfiguration externer/WAN-Netzwerke.
Prüfen Sie immer das GitHub-Repository und den Terraform-Registry-Eintrag auf die aktuelle Ressourcenabdeckung und die Release Notes, bevor Sie eine Konfiguration darauf aufbauen.
Packer-Plugin
Das Packer-Plugin für VergeOS (github.com/verge-io/packer-plugin-vergeio) automatisiert die Erstellung von VM-Images direkt auf der VergeOS-Plattform. Während Terraform laufende Infrastruktur verwaltet, konzentriert sich Packer auf das Erstellen der goldenen Images die als Grundlage für Bereitstellungen dienen.
Warum Packer?
Golden Images stellen sicher, dass jede bereitgestellte VM mit einer bekannten, getesteten und gehärteten Ausgangsbasis startet. Anstatt ein nacktes Betriebssystem bereitzustellen und bei jeder Bereitstellung Konfigurationsskripte auszuführen, erstellt Packer das Image einmal vorab:
Konsistenz — Jede aus dem Image erstellte VM ist identisch
Geschwindigkeit — Keine Verzögerung durch die Erststart-Bereitstellung; VMs sind sofort einsatzbereit
Compliance — Sicherheits-Baselines und Patches werden bereits zur Build-Zeit integriert
Pipeline-Integration — Lösen Sie Image-Neubuilds per CI/CD an Tagen mit Betriebssystem-Patches aus
Plugin-Konfiguration
Das Packer-Plugin wird in einem required_plugins Block zusammen mit einem source und build für das Ziel-Image deklariert. Die genauen Feldnamen für den source "vergeio" Block (Endpunkt, Anmeldedaten, VM-Größe, Datenträgeroptionen usw.) sollten aus dem Plugin-Repository übernommen werden, da sie sich zwischen Releases weiterentwickeln können:
Eine typische required_plugins Deklaration sieht folgendermaßen aus:
Funktionen
Auf hoher Ebene steuert das Plugin den vollständigen Packer-Build-Lebenszyklus gegen die VergeOS-API — es erstellt eine temporäre VM, führt Provisioner aus und erfasst das resultierende Image. Für das genaue Konfigurationsschema, unterstützte Gastertypen und das Verhalten bei Herunterfahren/Bereinigung verweisen Sie direkt auf das Plugin-Repository:
Packer → Rezept-Pipeline
Packer-Images integrieren sich nahtlos in das VergeOS Rezept System. Ein typischer Workflow:
Packer erstellt und härtet das Golden Image nach einem Zeitplan (z. B. monatlicher Patch-Zyklus)
Das Image wird als VM-Rezept im VergeOS Marketplace registriert
Benutzer stellen standardisierte VMs aus dem Rezept bereit — entweder über die UI oder via Terraform
Updates fließen automatisch: Erstellen Sie das Packer-Image neu, aktualisieren Sie das Rezept, und alle neuen Bereitstellungen erhalten die neueste Version
IaC-Workflow-Muster
Nur-Terraform-Workflow
Für Teams, die deklarative Infrastruktur ohne Image-Pipelines wollen:
Vollständige Pipeline (Packer + Terraform)
Für Produktionsumgebungen mit Golden-Image-Verwaltung:
Mit anderen Tools kombiniert
Terraform übernimmt die Bereitstellung; Konfigurationsmanagement-Tools übernehmen den Rest:
Image-Erstellung
Packer
Gehärtete Golden Images erstellen
Bereitstellung
Terraform
VMs, Netzwerke, Benutzer bereitstellen
Konfiguration
Ansible / cloud-init
Softwarekonfiguration nach der Bereitstellung
Überwachung
Prometheus / VergeOS-Warnmeldungen
Bereitgestellte Infrastruktur überwachen
Best Practices
Zustandsverwaltung
Verwenden Sie Remote-State-Backends (S3, Consul, Terraform Cloud) für die Zusammenarbeit im Team
Committen Sie niemals
terraform.tfstatein die Versionskontrolle — es kann Anmeldedaten enthaltenSperren Sie State-Dateien um gleichzeitige Änderungen in Mehrbenutzerumgebungen zu verhindern
Sicherheit
Verwenden Sie Variablen für sensible Werte (
var.vergeos_password) — hinterlegen Sie Anmeldedaten niemals hart im CodeKennzeichnen Sie sensible Ausgaben mit
sensitive = trueum eine versehentliche Offenlegung in Protokollen zu verhindernSchränken Sie die Provider-Berechtigungen ein — erstellen Sie einen dedizierten VergeOS-API-Benutzer mit minimal erforderlichem Zugriff
Modulorganisation
Trennen Sie Umgebungen in Workspaces oder Verzeichnisse (
dev/,staging/,prod/)Erstellen Sie wiederverwendbare Module für gängige Muster (z. B. ein "web-server"-Modul mit VM + Netzwerk + Firewall-Regeln)
Fixieren Sie Provider-Versionen um unerwartete Breaking Changes bei Upgrades zu vermeiden
Weiterführende Lektüre
Zuletzt aktualisiert
War das hilfreich?