Terraform-Provider
Odinex Cloud mit Terraform oder OpenTofu verwalten.
Der Provider odinex-cloud/odinex verwaltet Server, Netzwerke, Volumes, Firewalls, Floating IPs, Load Balancer und mehr mit
Terraform oder OpenTofu. Er folgt den bekannten
Mustern von Infrastructure as Code und unterstützt die Vorgänge, die die Odinex-API anbietet.
Provider konfigurieren
terraform {
required_providers {
odinex = {
source = "odinex-cloud/odinex"
}
}
}
provider "odinex" {} # reads the token from ODINEX_TOKEN| Argument | Umgebungsvariable | Standardwert |
|---|---|---|
token | ODINEX_TOKEN | Erforderlich. Ein Projekt-API-Token (odx_…) |
endpoint | ODINEX_ENDPOINT | https://api.odinex.cloud/v1 |
poll_interval | ODINEX_POLL_INTERVAL | 1s (eine Go-Dauer wie 500ms) |
Alles, was der Provider verwaltet, liegt im Projekt des Tokens. Für Änderungen benötigen Sie ein Token mit dem
Scope read_write. Halten Sie das Token aus Ihrem Code heraus: Setzen Sie ODINEX_TOKEN oder übergeben Sie es als
sensible Variable.
export ODINEX_TOKEN=odx_...
terraform init
terraform applyEin erster Server
resource "odinex_ssh_key" "admin" {
name = "admin"
public_key = file("~/.ssh/id_ed25519.pub")
}
resource "odinex_server" "web" {
name = "web-1"
server_type = "s2"
image = "ubuntu-24.04"
location = "fra1"
ssh_keys = [odinex_ssh_key.admin.id]
labels = { role = "web" }
}
output "ipv4" {
value = odinex_server.web.ipv4_address
}Verhalten des Providers
- Aktionen. Lang laufende Vorgänge liefern eine Aktion; der Provider fragt sie alle
poll_intervalab und meldet eine fehlgeschlagene Aktion als Fehler mit deren Code und Meldung. - Wiederholungen. Anfragen, die mit
429beantwortet werden, werden nachRetry-Afterwiederholt (siehe Ratenbegrenzung), und409 resource_busy(auf der Ressource läuft bereits eine andere Aktion) wird mit kurzem Back-off erneut versucht. - Ein Wechsel des Servertyps erfolgt direkt am bestehenden Server: Der Provider schaltet den Server aus, ändert den
Typ und schaltet ihn wieder ein. Mit
keep_disk = truebehält die Festplatte ihre Größe, sodass Sie später wieder herunterstufen können. Eine Änderung vonimagebaut den Server neu auf und löscht dabei seine Festplatte. - Drift. Wurde eine Ressource außerhalb von Terraform gelöscht (die API antwortet mit 404), wird sie aus dem State entfernt und erneut eingeplant.
- Import. Die meisten Ressourcen lassen sich per ID oder Name importieren, z. B.
terraform import odinex_server.web web-1.
Ein Weg pro Beziehung
Manche Beziehungen lassen sich auf zwei Arten verwalten. Verwenden Sie für dasselbe Objekt nur eine davon:
| Inline | Separate Ressource |
|---|---|
odinex_server network-Blöcke | odinex_server_network |
odinex_firewall apply_to-Blöcke | odinex_firewall_attachment |
odinex_volume.server_id | odinex_volume_attachment |
odinex_floating_ip.server_id | odinex_floating_ip_assignment |
Floating IPs müssen weiterhin im Gastsystem konfiguriert werden
Wenn Sie eine Floating IP mit Terraform zuweisen, wird sie zum Server geroutet. Die Adresse muss aber trotzdem im Server konfiguriert und per Gratuitous ARP bekannt gegeben werden. Siehe Floating IPs.
Referenz
Alle Ressourcen und Datenquellen mit sämtlichen Argumenten und Attributen sind in der Referenz dokumentiert, die aus dem Schema des Providers generiert wird.
Ressourcen: odinex_server, odinex_ssh_key, odinex_volume, odinex_volume_attachment, odinex_network,
odinex_server_network, odinex_firewall, odinex_firewall_attachment, odinex_floating_ip,
odinex_floating_ip_assignment, odinex_rdns, odinex_load_balancer, odinex_placement_group, odinex_snapshot.
Datenquellen: odinex_location(s), odinex_server_type(s), odinex_image, odinex_ssh_key(s), odinex_server(s),
odinex_network, odinex_load_balancer_type(s), odinex_pricing.