Provider konfigurieren
Konfigurieren Sie den OCI-Terraform-Provider mit der erforderlichen Authentifizierung und optionalen Umgebungsvariablen.
Beispiele für Terraform-Konfigurationsdateien zum Erstellen bestimmter Ressourcen finden Sie unter Beispiele für den Terraform-Oracle Cloud Infrastructure-Provider.
Authentifizierung
Um mit den Oracle Cloud Infrastructure-(OCI-)Services und unterstützten Ressourcen zu interagieren, konfigurieren Sie den OCI-Terraform-Provider mit Authentifizierungszugangsdaten für einen OCI-Account.
Der OCI-Terraform-Provider unterstützt vier Authentifizierungsmethoden:
API-Schlüsselauthentifizierung
Standardmäßig verwendet der Terraform-Provider die API-Schlüsselauthentifizierung. Sie können diese jedoch auch explizit festlegen, indem Sie das Attribut auth
in der Providerdefinition mit "APIKey" belegen. Aufrufe an OCI mit API-Schlüsselauthentifizierung erfordern, dass Sie die folgenden Zugangsdaten angeben:
tenancy_ocid
: OCID Ihres Mandanten. Informationen zum Abrufen des Wertes finden Sie unter Hier erhalten Sie die OCID des Mandanten und des Benutzers.user_ocid
: OCID des Benutzers, der die API aufruft. Informationen zum Abrufen des Wertes finden Sie unter Hier erhalten Sie die OCID des Mandanten und des Benutzers.private_key
: Der Inhalt der Private-Key-Datei. Erforderlich, wennprivate_key_path
nicht definiert ist. Hat Vorrang vorprivate_key_path
, wenn beide definiert sind. Weitere Informationen zum Erstellen und Konfigurieren von Schlüsseln finden Sie unter So generieren Sie einen API-Signaturschlüssel und So laden Sie den Public Key hoch.private_key_path
: Der Pfad (einschließlich Dateiname) des Private Keys, der auf Ihrem Rechner gespeichert ist. Erforderlich, wennprivate_key
nicht definiert ist. Weitere Informationen zum Erstellen und Konfigurieren von Schlüsseln finden Sie unter So generieren Sie einen API-Signaturschlüssel und So laden Sie den Public Key hoch.private_key_password
(optional): Passphrase, die für den Schlüssel verwendet wird, wenn er verschlüsselt ist.fingerprint
: Fingerprint für das verwendete Schlüsselpaar. Informationen zum Abrufen des Wertes finden Sie unter So rufen Sie den Fingerprint des Schlüssels ab.region
: Eine OCI-Region. Siehe Regionen und Availability-Domains.config_file_profile
: Der Profilname, wenn Sie ein benutzerdefiniertes Profil in der OCI-Konfigurationsdatei verwenden möchten, um die Authentifizierungszugangsdaten anzugeben. Weitere Informationen finden Sie unter SDK- und CLI-Konfigurationsdatei verwenden.
Geben Sie beispielsweise diese Werte in Umgebungsvariablen oder in Terraform-Konfigurationsvariablen an.
Instanz-Principal-Autorisierung
Bei der Instanz-Principal-Autorisierung kann der Provider API-Aufrufe aus einer OCI Compute-Instanz ohne die Attribute tenancy_ocid
, user_ocid
, private_key_path
und fingerprint
in der Providerdefinition ausführen.
Die Instanz-Principal-Autorisierung kann nur für Instanzen angewendet werden, die in Oracle Cloud Infrastructure ausgeführt werden.
Um die Instanz-Principal-Autorisierung für OCI-Terraform-Provider zu aktivieren, setzen Sie das Attribut auth
in der Providerdefinition auf "InstancePrincipal", wie im folgenden Beispiel dargestellt:
variable "region" {}
provider "oci" {
auth = "InstancePrincipal"
region = var.region
}
Weitere Informationen finden Sie unter Services aus einer Instanz aufrufen.
Resource-Principal-Autorisierung
Mit der Resource-Hauptautorisierung, wie z.B. der Instanz-Hauptautorisierung, kann der Provider API-Aufrufe ausführen, ohne Zugangsdaten in der Providerdefinition angeben zu müssen. Mit der Autorisierung des Resource Principals können Ressourcen wie eine aktive Funktion auf andere Oracle Cloud Infrastructure-Ressourcen zugreifen. Weitere Informationen finden Sie unter Auf andere Oracle Cloud Infrastructure-Ressourcen aus aktiven Funktionen zugreifen zugreifen.
So aktivieren Sie die Resource-Principal-Autorisierung für OCI-Terraform-Provider:
- Erstellen Sie die dynamische Gruppe und die Policys, die für die aktive Funktion zur Verwaltung anderer OCI-Ressourcen erforderlich sind. Befolgen Sie die Anweisungen unter "Konsole verwenden" unter Auf andere Oracle Cloud Infrastructure-Ressourcen aus aktiven Funktionen zugreifen, und stellen Sie sicher, dass die Policy die Verwaltung anderer Ressourcen zulässt.
-
Legen Sie die folgenden Umgebungsvariablen fest:
-
OCI_RESOURCE_PRINCIPAL_VERSION
mit dem Wert2.2
Wenn der Wert
1
lautet, wird das Überschreiben der Region nicht unterstützt. -
OCI_RESOURCE_PRINCIPAL_RPST
mit dem Rohinhalt der Dateirpst
oder dem absoluten Pfad zur Dateirpst
, einschließlich Dateiname. -
OCI_RESOURCE_PRINCIPAL_PRIVATE_PEM
mit dem absoluten Pfad zur Dateiprivate.pem
(einschließlich Dateiname). -
OCI_RESOURCE_PRINCIPAL_REGION
mit der Regions-ID, in der der Provider bereitgestellt wird (Beispiel:us-phoenix-1
)
-
-
Setzen Sie das Attribut
auth
in der Providerdefinition auf "ResourcePrincipal".Hinweis
Der Wert für
region
im Providerblock setzt den von der UmgebungsvariablenOCI_RESOURCE_PRINCIPAL_REGION
festgelegten Regionswert außer Kraft. Diese in Terraform-Providerversion 5.0.0 eingeführte Änderung ist nicht abwärtskompatibel.Wenn der Wert der Umgebungsvariablen
OCI_RESOURCE_PRINCIPAL_VERSION
1
lautet, wird das Überschreiben der Region nicht unterstützt.Beispiel:
provider "oci" { auth = "ResourcePrincipal" region = var.region }
Sicherheitstokenauthentifizierung
Mit der Sicherheitstokenauthentifizierung können Sie Terraform mit einem Token ausführen, das mit der tokenbasierten Authentifizierung für die CLI generiert wurde. Um die Sicherheitstokenauthentifizierung zu aktivieren, aktualisieren Sie die Providerdefinition wie folgt:
- Belegen Sie das Attribut
auth
mitSecurityToken
. - Geben Sie einen Wert für
config_file_profile
an. - Belegen Sie
region
.
Beispiel:
# Configure the Oracle Cloud Infrastructure provider to use Security Token authentication
provider "oci" {
auth = "SecurityToken"
config_file_profile = "PROFILE"
region = var.region
}
Dieses Token läuft nach einer Stunde ab. Verwenden Sie diese Authentifizierungsmethode nicht, wenn das Provisioning von Ressourcen länger als eine Stunde dauert. Weitere Informationen finden Sie unter Token aktualisieren.
OKE Workload-Identitätsauthentifizierung
In Kubernetes ist eine Workload eine Anwendung, die auf einem Kubernetes-Cluster ausgeführt wird. Eine Workload kann eine Anwendungskomponente sein, die in einem einzelnen Pod ausgeführt wird, oder mehrere Anwendungskomponenten, die in einer Gruppe von Pods ausgeführt werden, die zusammenarbeiten. Alle Pods in der Workload werden im selben Namespace ausgeführt.
In Oracle Cloud Infrastructure wird eine Workload, die auf einem von der Kubernetes Engine verwalteten Kubernetes-Cluster (auch als OKE bezeichnet) ausgeführt wird, als eigene Ressource betrachtet. Eine Workload-Ressource wird durch die eindeutige Kombination aus Kubernetes-Cluster, Namespace und Serviceaccount identifiziert. Diese eindeutige Kombination wird als Workload-Identität bezeichnet.
Mit der OKE Workload-Identitätsauthentifizierung können Workloads, die auf Kubernetes-Clustern ausgeführt werden, die von der Kubernetes-Engine verwaltet werden, auf andere Oracle Cloud Infrastructure-Ressourcen zugreifen. Weitere Informationen finden Sie unter Workloads Zugriff auf OCI-Ressourcen erteilen.
Um die OKE-Workload-Identitätsauthentifizierung für OCI-Terraform-Provider zu aktivieren, setzen Sie das Attribut auth
in der Providerdefinition auf "OKEWorkloadIdentity", wie im folgenden Beispiel dargestellt:
variable "region" {}
provider "oci" {
auth = "OKEWorkloadIdentity"
region = var.region
}
Umgebungsvariablen
Die folgenden Umgebungsvariablen sind für die Konfiguration des Providers verfügbar.
-
OCI_DEFAULT_CERTS_PATH
(Zertifikatspfad)Hinweis
Verwenden Sie jeweils nur eine Zertifikatspfadvariable. -
OCI_SDK_APPEND_USER_AGENT
(Benutzerdefinierter User Agent) -
realm_specific_service_endpoint_template_enabled
(dedizierter Endpunkt für sicheren Zugriff auf Speicher-Buckets) -
TF_APPEND_USER_AGENT
(Benutzerdefinierter User Agent) -
TF_VAR_compartment_ocid
(Wert für Compartment-OCID-Authentifizierung) -
TF_VAR_fingerprint
(Authentifizierungswert für Fingerabdruck des Schlüssels) -
TF_VAR_private_key_path
(Authentifizierungswert für Private-Key-Pfad) -
TF_VAR_region
(Regionswert)Beispiel:
us-ashburn-1
-
TF_VAR_tenancy_ocid
(Authentifizierungswert für Mandanten-OCID) -
TF_VAR_user_ocid
(Benutzer-OCID-Authentifizierungswert) -
USER_AGENT_PROVIDER_NAME
(Benutzerdefinierter User Agent)
Umgebungsvariablen exportieren und Sourcing
Sie können die erforderlichen Authentifizierungswerte entweder als Umgebungsvariablen exportieren oder bei der Ausführung von Terraform-Befehlen in verschiedenen bash-Profilen abrufen.
Wenn Sie in erster Linie in einem einzelnen Compartment arbeiten, sollten Sie die Compartment-OCID als Umgebungsvariable exportieren. Die Mandanten-OCID ist auch die OCID des Root Compartments und kann verwendet werden, wenn eine Compartment-OCID erforderlich ist.
Sie können Providerblöcke in Terraform-Konfigurationsdateien entfernen, wenn alle erforderlichen Werte für die API-Schlüsselauthentifizierung als Umgebungsvariablen angegeben oder in einer
*.tfvars
-Datei festgelegt sind.- UNIX- und Linux-Exportbeispiel
- Das folgende UNIX- und Linux-Beispiel
bash_profile
gilt, wenn die Terraform-Konfiguration auf ein einzelnes Compartment oder einen einzelnen Benutzer beschränkt ist.
- Windows-Exportbeispiel
-
Hinweis
Stellen Sie das PEM-Format für Schlüssel sicher. Weitere Informationen finden Sie unter So generieren Sie einen API-Signaturschlüssel.
Benutzerdefinierte Benutzer-Agents verwenden
Um einen benutzerdefinierten Benutzer-Agent zu verwenden, exportieren Sie eine der folgenden Umgebungsvariablen. Es wird jeweils nur eine Umgebungsvariable in der folgenden Prioritätsreihenfolge berücksichtigt:
USER_AGENT_PROVIDER_NAME
OCI_SDK_APPEND_USER_AGENT
TF_APPEND_USER_AGENT
Dedizierten Endpunkt für Object Storage Service angeben
Greifen Sie mit dem OCI-Terraform-Provider sicher auf Speicher-Buckets in Object Storage mit dedizierten Endpunkten zu. Verwenden Sie bei der Konfiguration des Providers eine Umgebungsvariable, einen Parameter im Providerblock oder beides. Wenn Sie beide verwenden, hat der Providerblockparameter Vorrang.
Die Umgebungsvariable ist OCI_REALM_SPECIFIC_SERVICE_ENDPOINT_TEMPLATE_ENABLED
. Der Standardwert lautet false
. Setzen Sie den Wert auf true
, um einen dedizierten Endpunkt zu verwenden.
Der Providerblockparameter lautet realm_specific_service_endpoint_template_enabled
. Der Standardwert lautet false
. Setzen Sie den Wert auf true
, um einen dedizierten Endpunkt zu verwenden.
Nur dedizierten Endpunkt verwenden
-
Setzen Sie im Block
provider
den Wertrealm_specific_service_endpoint_template_enabled
auftrue
.provider "oci" { realm_specific_service_endpoint_template_enabled = true }
Standard- und dedizierte Endpunkte verwenden
Verwenden Sie das Terraform-Alias-Metaargument, um sowohl auf Standardserviceendpunkte als auch auf Realm-spezifische Endpunkte zuzugreifen. Setzen Sie Standardendpunkte mit realm-spezifischen Endpunkten außer Kraft, indem Sie den Providerparameter bei der Ressourcenerstellung angeben.
-
Definieren Sie einen
provider
-Block für jeden Endpunkt.provider "oci" { realm_specific_service_endpoint_template_enabled = true } provider "oci" { #By default realm_specific_service_endpoint_template_enabled = false }
-
Verwenden Sie das Terraform-Metadatenargument
alias
im Blockprovider
, der für einen dedizierten Endpunkt bestimmt ist.Beispiel: Fügen Sie
alias = "custom_endpoint"
hinzu.provider "oci" { alias = "custom_endpoint" realm_specific_service_endpoint_template_enabled = true } provider "oci" { #By default realm_specific_service_endpoint_template_enabled = false }
-
Referenzieren Sie in jedem
resource
-Block, den Sie einen dedizierten Endpunkt verwenden möchten, dieprovider
mit dem Wertalias
.Beispiel: Fügen Sie
provider = "custom_endpoint"
hinzu.Das folgende Beispiel zeigt zwei Providerblöcke und zwei Ressourcenblöcke. In diesem Beispiel verwendet
bucket1
den Standardendpunkt, währendbucket2
den dedizierten Endpunkt verwendet.provider "oci" { alias = "custom_endpoint" realm_specific_service_endpoint_template_enabled = true } provider "oci" { #By default realm_specific_service_endpoint_template_enabled = false } resource "oci_objectstorage_bucket" "bucket1" { compartment_id = var.compartment_ocid1 namespace = var.namspace1 name = var.name1 access_type = var.access_type1 } resource "oci_objectstorage_bucket" "bucket2" { provider = "oci.custom_endpoint" compartment_id = var.compartment_ocid2 namespace = var.namspace2 name = var.name2 access_type = var.access_type2 }
SDK- und CLI-Konfigurationsdatei verwenden
Sie können die erforderlichen Providerwerte in derselben ~/.oci/config
-Datei definieren, die von den SDKs und der CLI verwendet wird. Details zum Einrichten dieser Konfiguration finden Sie unter SDK- und CLI-Konfigurationsdatei.
Parameternamen in der SDK- und CLI-Konfigurationsdatei unterscheiden sich leicht.
Providerblöcke in Terraform-Konfigurationsdateien können vollständig entfernt werden, wenn alle erforderlichen Werte für die API-Schlüsselauthentifizierung als Umgebungsvariablen angegeben oder in der
~/.oci/config
-Datei festgelegt sind.Mit dem folgenden Befehl können Sie ein nicht standardmäßiges OCI-Konfigurationsprofil als Umgebungswert festlegen:
export TF_VAR_config_file_profile=<config_file_profile_name>
Sie können das OCI-Konfigurationsprofil auch in einem Providerblock festlegen. Beispiel:
provider "oci" {
tenancy_ocid = var.tenancy_ocid
config_file_profile= var.config_file_profile
}
Prioritätsfolge
Wenn die Parameter an mehreren Orten festgelegt werden, lautet die Prioritätsreihenfolge wie folgt:
- Die Umgebungsvariable
- Das nicht standardmäßige Profil in der OCI-Konfigurationsdatei, sofern angegeben
- Das DEFAULT-Profil in der OCI-Konfigurationsdatei