Terraform verwenden

Konfigurieren Sie den OpenStack-Provider für Terraform mit den Credential-Dateien, und erstellen und verwalten Sie damit Ressourcen in einem Projekt.

Terraform verwaltet die Ressourcen Ihres Projekts über den OpenStack-Provider terraform-provider-openstack/openstack. Der Provider meldet sich mit einem Anwendungs-Credential an, das er aus clouds.yaml liest, sodass Ihre Terraform-Dateien das Secret nicht enthalten.

Voraussetzungen

  • Installieren Sie Terraform.
  • Erstellen Sie im Projekt ein Anwendungs-Credential mit dem Profil Vollzugriff, und laden Sie clouds.yaml und main.tf herunter. Siehe Anwendungs-Credential erstellen.
  • Für Terraform, das ein Team oder eine CI-Pipeline ausführt, verwenden Sie das Credential eines Dienstkontos, eines pro Pipeline. Ein persönliches Credential funktioniert nicht mehr, wenn sein Inhaber Ihre Organisation verlässt oder seine Rolle im Projekt verliert.

Provider konfigurieren

Legen Sie main.tf und clouds.yaml in denselben Ordner, oder legen Sie clouds.yaml in ~/.config/openstack/ ab. Die Datei main.tf, die die Konsole generiert, sieht so aus:

main.tf
terraform {
  required_providers {
    openstack = {
      source  = "terraform-provider-openstack/openstack"
      version = "~> 3.4"
    }
  }
}

provider "openstack" {
  cloud = "bulutistan"
}

# Read-only check that the credential works: the project it is bound to.
data "openstack_identity_auth_scope_v3" "current" {
  name = "current"
}

output "project_id" {
  value = data.openstack_identity_auth_scope_v3.current.project_id
}

cloud = "bulutistan" wählt den gleichnamigen Eintrag in clouds.yaml aus. Die Region und der Endpunkt stammen ebenfalls aus dieser Datei.

Überprüfen

Konfiguration prüfen
terraform init
terraform apply

terraform apply gibt project_id aus, die ID des Projekts, an das das Credential gebunden ist. Die Konfiguration liest nur Daten und erstellt daher nichts.

Ressourcen erstellen

Dieses Beispiel erstellt ein Netzwerk, ein Subnetz und eine Sicherheitsgruppe mit einer Regel, die HTTPS von überall erlaubt. Fügen Sie es zu main.tf hinzu, oder ersetzen Sie die Datenquelle und die Ausgabe damit:

main.tf
resource "openstack_networking_network_v2" "app" {
  name = "tf-quickstart"
}

resource "openstack_networking_subnet_v2" "app" {
  name       = "tf-quickstart"
  network_id = openstack_networking_network_v2.app.id
  cidr       = "192.168.50.0/24"
  ip_version = 4
}

resource "openstack_networking_secgroup_v2" "web" {
  name        = "tf-quickstart-web"
  description = "HTTPS in"
}

resource "openstack_networking_secgroup_rule_v2" "https" {
  security_group_id = openstack_networking_secgroup_v2.web.id
  direction         = "ingress"
  ethertype         = "IPv4"
  protocol          = "tcp"
  port_range_min    = 443
  port_range_max    = 443
  remote_ip_prefix  = "0.0.0.0/0"
}

output "network_id" {
  value = openstack_networking_network_v2.app.id
}
Anwenden und bereinigen
terraform plan
terraform apply
terraform destroy

terraform destroy löscht die Ressourcen wieder.

So hängen Terraform-Ressourcen und Konsole zusammen

  • Ressourcen, die Terraform erstellt, sind dieselben Ressourcen, die Sie in der Konsole sehen. Diese erscheinen im Projekt und werden wie Ressourcen abgerechnet, die Sie in der Konsole erstellen.
  • Diese Ressourcen werden auf das Kontingent des Abonnements und die Zuteilung des Projekts angerechnet. Eine Anfrage, die die Zuteilung überschreiten würde, wird abgelehnt. Siehe Kontingente.

Verwendbare Ressourcentypen prüfen

In der Konsole listet der OpenStack-API-Leitfaden die Ressourcentypen des Terraform-Providers und ihren Unterstützungsstatus in dieser Cloud auf. Um ihn zu öffnen, wechseln Sie zu Identität & ZugriffOpenStack-API-Zugriff, und wählen Sie Leitfaden aus. Prüfen Sie einen Ressourcentyp dort, bevor Sie ihn in einer Konfiguration verwenden.

Auf dieser Seite