Zum Inhalt springen
Odinex Cloud
Terraform-Provider

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
ArgumentUmgebungsvariableStandardwert
tokenODINEX_TOKENErforderlich. Ein Projekt-API-Token (odx_…)
endpointODINEX_ENDPOINThttps://api.odinex.cloud/v1
poll_intervalODINEX_POLL_INTERVAL1s (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 apply

Ein 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_interval ab und meldet eine fehlgeschlagene Aktion als Fehler mit deren Code und Meldung.
  • Wiederholungen. Anfragen, die mit 429 beantwortet werden, werden nach Retry-After wiederholt (siehe Ratenbegrenzung), und 409 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 = true behält die Festplatte ihre Größe, sodass Sie später wieder herunterstufen können. Eine Änderung von image baut 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:

InlineSeparate Ressource
odinex_server network-Blöckeodinex_server_network
odinex_firewall apply_to-Blöckeodinex_firewall_attachment
odinex_volume.server_idodinex_volume_attachment
odinex_floating_ip.server_idodinex_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.

Auf dieser Seite