Anwenden von Konfigurationen
Verwenden Sie den OCI-Terraform-Provider, um Konfigurationen anzuwenden.
Nach der Oracle Cloud Infrastructure-(OCI-)Terraform-Providers installiert und konfiguriert und der Erstellung von Terraform-Konfigurationen mit dem Provider und einer Ressource oder Datenquelle können Sie Terraform in Ihrer OCI-Infrastruktur ausführen.
Terraform initialisieren
Führen Sie den folgenden Befehl aus einem Verzeichnis aus, das Ihre Terraform-Konfigurationsdateien enthält, um Terraform zu initialisieren:
terraform init
Beispielausgabe:
Initializing the backend...
Initializing provider plugins...
- Finding latest version of hashicorp/oci...
- Installing hashicorp/oci v3.96.0...
- Installed hashicorp/oci v3.96.0 (signed by HashiCorp)
The following providers do not have any version constraints in configuration,
so the latest version was installed.
...
* hashicorp/oci: version = "~> 3.96.0"
Terraform has been successfully initialized!
Wenn der Befehl zu einem Fehler führt, prüfen Sie, ob der OCI-Terraform-Provider ordnungsgemäß konfiguriert ist.
Änderungen prüfen
Ohne Änderungen an den vorhandenen OCI-Ressourcen vorzunehmen, kann Terraform eine Liste der Änderungen zurückgeben, die basierend auf Ihren Konfigurationen vorgenommen werden, wenn Sie diese anwenden. Diese Liste wird als Ausführungsplan bezeichnet. Führen Sie den folgenden Befehl aus, um den Ausführungsplan anzuzeigen:
terraform plan
Beispielausgabe:
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# oci_identity_compartment.tf-compartment will be created
+ resource "oci_identity_compartment" "tf-compartment" {
+ compartment_id = "exampleuniqueID"
+ defined_tags = (known after apply)
+ description = "Compartment for Terraform resources."
+ freeform_tags = (known after apply)
+ id = (known after apply)
+ inactive_state = (known after apply)
+ is_accessible = (known after apply)
+ name = <your-compartment-name>
+ state = (known after apply)
+ time_created = (known after apply)
}
Plan: 1 to add, 0 to change, 0 to destroy.
Prüfen Sie den Plan, und stellen Sie sicher, dass die im Plan angezeigten Änderungen Ihren Erwartungen entsprechen.
Zerstörende Änderungen
Einige OCI-Ressourcen verfügen über Eigenschaften, die nicht von Terraform aktualisiert werden können, ohne die vorhandene Ressource zu zerstören und mit dem neuen Eigenschaftswert neu zu erstellen. Wenn Sie terraform plan
ausführen und versuchen, eine nicht aktualisierbare Eigenschaft zu ändern, gibt Terraform an, welche Ressource ersetzt wird und welche Eigenschaften nicht aktualisiert werden können.
Beispiel: Im folgenden Ausführungsplan werden einer Ressource, die gelöscht und neu erstellt wird, die Zeichen -/+
vorangestellt. Außerdem wird der Kommentar # forces replacement
an die Eigenschaft anhängt, die nicht aktualisiert werden kann:
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
-/+ destroy and then create replacement
Terraform will perform the following actions:
# oci_core_vcn.vcn must be replaced
-/+ resource "oci_core_vcn" "vcn" {
~ cidr_block = "10.0.0.0/16" -> "11.0.0.0/16" # forces replacement
~ cidr_blocks = [
- "10.0.0.0/16",
] -> (known after apply)
compartment_id = "ocid1.compartment.oc1..exampleuniqueID"
~ default_dhcp_options_id = "ocid1.dhcpoptions.oc1.phx.exampleuniqueID" -> (known after apply)
~ default_route_table_id = "ocid1.routetable.oc1.phx.exampleuniqueID" -> (known after apply)
~ default_security_list_id = "ocid1.securitylist.oc1.phx.exampleuniqueID" -> (known after apply)
~ defined_tags = {} -> (known after apply)
display_name = "vcn"
dns_label = "vcn"
~ freeform_tags = {} -> (known after apply)
~ id = "ocid1.vcn.oc1.phx.exampleuniqueID" -> (known after apply)
+ ipv6cidr_block = (known after apply)
+ ipv6public_cidr_block = (known after apply)
+ is_ipv6enabled = (known after apply)
~ state = "AVAILABLE" -> (known after apply)
~ time_created = "2021-01-25 20:54:53.255 +0000 UTC" -> (known after apply)
~ vcn_domain_name = "vcn.oraclevcn.com" -> (known after apply)
}
Plan: 1 to add, 0 to change, 1 to destroy.
Ein erzwungenes Löschen und erneutes Erstellen einer Ressource kann auch zum Ersetzen einer übergeordneten Ressource führen. Führen Sie immer
terraform plan
aus, bevor Sie terraform apply
ausführen, um zu ermitteln, welche Ressourcen betroffen sind.Die vollständige Referenz der unterstützten Ressourcen und Datenquellen des OCI-Terraform-Providers enthält Details zu Verwendung, Argumenten und Attributen. Die vollständige Referenz ist unter docs.oracle.com und Terraform Registry verfügbar.
Die Referenz gibt an, welche Eigenschaften aktualisierbar sind.
Änderungen werden angewendet
Sobald Sie sicher sind, dass Ihre Konfigurationen zu den erwarteten Änderungen führen, können Sie die Terraform-Konfigurationen anwenden, indem Sie den folgenden Befehl ausführen:
terraform apply
Wenn Sie zur Bestätigung aufgefordert werden, geben Sie yes
ein, damit die Ressource erstellt werden kann. Nachdem Sie den apply
-Befehl ausgeführt haben, wird die Ausgabe im Terminal angezeigt. Beispielausgabe:
oci_identity_compartment.tf-compartment: Creating...
oci_identity_compartment.tf-compartment: Creation complete after 9s [id=exampleuniqueID]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Outputs:
compartment-OCID = ocid1.compartment.exampleuniqueID
compartment-name = <your-compartment-name>
Wenn Sie Ressourcen, die Sie mit Terraform verwalten, außerhalb von Terraform ändern, werden diese Änderungen beim nächsten Mal überschrieben, wenn Sie mit Terraform Konfigurationen anwenden. Fügen Sie den Parameter
ignore_changes
zu Ressourcen in der Konfigurationsdatei hinzu, die nicht überschrieben werden sollen.