Configuration du fournisseur
Configurez le fournisseur OCI Terraform avec l'authentification requise et les variables d'environnement facultatives.
Afin d'obtenir des exemples de fichier de configuration Terraform pour la création de ressources spécifiques, reportez-vous à Exemples de fournisseur Oracle Cloud Infrastructure Terraform.
Authentification
Pour interagir avec les services Oracle Cloud Infrastructure (OCI) et les ressources prises en charge, configurez le fournisseur OCI Terraform avec les informations d'identification d'authentification d'un compte OCI.
Le fournisseur OCI Terraform prend en charge quatre méthodes d'authentification :
Authentification par clé d'API
Par défaut, le fournisseur Terraform utilise l'authentification par clé d'API, mais vous pouvez l'indiquer explicitement en définissant l'attribut auth
sur "APIKey" dans la définition de fournisseur. Les appels vers OCI à l'aide de l'authentification par clé d'API exigent que vous fournissiez les informations d'identification suivantes :
tenancy_ocid
: OCID de votre location. Pour obtenir cette valeur, reportez-vous à Emplacement de l'OCID de la location et de l'OCID de l'utilisateur.user_ocid
: OCID de l'utilisateur appelant l'API. Pour obtenir cette valeur, reportez-vous à Emplacement de l'OCID de la location et de l'OCID de l'utilisateur.private_key
: contenu du fichier de clés privées. Valeur requise siprivate_key_path
n'est pas défini, et prioritaire surprivate_key_path
si les deux sont définis. Pour plus d'informations sur la création et la configuration de clés, reportez-vous à Procédure de génération d'une clé de signature d'API et à Procédure de téléchargement de la clé publique.private_key_path
: chemin (nom de fichier compris) de la clé privée stockée sur votre ordinateur. Valeur requise siprivate_key
n'est pas défini. Pour plus d'informations sur la création et la configuration de clés, reportez-vous à Procédure de génération d'une clé de signature d'API et à Procédure de téléchargement de la clé publique.private_key_password
(facultatif) : phrase de passe utilisée pour la clé, si elle est cryptée.fingerprint
: empreinte de la paire de clés utilisée. Pour obtenir la valeur, reportez-vous à Procédure d'obtention de l'empreinte de la clé.region
: région OCI. Reportez-vous à Régions et domaines de disponibilité.config_file_profile
: nom du profil si vous souhaitez utiliser un profil personnalisé dans le fichier de configuration OCI pour fournir les informations d'identification d'authentification. Pour plus d'informations, reportez-vous à Utilisation du fichier de configuration du kit SDK et de l'interface de ligne de commande.
Par exemple, indiquez ces valeurs en tant que variables d'environnement ou dans les variables de configuration Terraform.
Autorisation de principal d'instance
L'autorisation de principal d'instance permet à votre fournisseur d'effectuer des appels d'API à partir d'une instance de calcul OCI sans avoir besoin des attributs tenancy_ocid
, user_ocid
, private_key_path
et fingerprint
dans la définition de fournisseur.
L'autorisation de principal d'instance s'applique uniquement aux instances exécutées dans Oracle Cloud Infrastructure.
Afin d'activer l'autorisation de principal d'instance pour les fournisseurs OCI Terraform, définissez l'attribut auth
sur "InstancePrincipal" dans la définition de fournisseur, comme indiqué dans l'exemple suivant :
variable "region" {}
provider "oci" {
auth = "InstancePrincipal"
region = var.region
}
Pour plus d'informations, reportez-vous à Appel de services à partir d'une instance.
Autorisation de principal de ressource
L'autorisation de principal de ressource, telle que l'autorisation de principal d'instance, permet au fournisseur d'effectuer des appels d'API sans avoir à fournir d'informations d'identification dans la définition de fournisseur. L'autorisation de principal de ressource est utilisée pour autoriser les ressources telles qu'une fonction en cours d'exécution à accéder à d'autres ressources Oracle Cloud Infrastructure. Pour plus d'informations, reportez-vous à Accès à d'autres ressources Oracle Cloud Infrastructure à partir de fonctions en cours d'exécution.
Afin d'activer l'autorisation de principal de ressource pour les fournisseurs OCI Terraform: procédez comme suit :
- Créez les stratégies et le groupe dynamique requis par la fonction en cours d'exécution pour gérer d'autres ressources OCI. Suivez les instructions de la section Utilisation de la console sous Accès à d'autres ressources Oracle Cloud Infrastructure à partir de fonctions en cours d'exécution et assurez-vous que la stratégie autorise la gestion d'autres ressources.
-
Configurez les variables d'environnement suivantes :
-
OCI_RESOURCE_PRINCIPAL_VERSION
, contenant la valeur2.2
.Lorsque la valeur est
1
, le remplacement de région n'est pas pris en charge. -
OCI_RESOURCE_PRINCIPAL_RPST
, contenant le contenu brut du fichierrpst
ou le chemin absolu du fichierrpst
, y compris le nom du fichier. -
OCI_RESOURCE_PRINCIPAL_PRIVATE_PEM
, contenant le chemin absolu du fichierprivate.pem
(y compris le nom de fichier). -
OCI_RESOURCE_PRINCIPAL_REGION
, contenant l'identificateur de la région dans laquelle le fournisseur est déployé (par exemple,us-phoenix-1
).
-
-
Définissez l'attribut
auth
sur "ResourcePrincipal" dans la définition de fournisseur.Remarque
La valeur de
region
dans le bloc de fournisseur remplace la valeur de région définie par la variable d'environnementOCI_RESOURCE_PRINCIPAL_REGION
. Cette modification, introduite dans la version 5.0.0 du fournisseur Terraform, n'est pas compatible avec le bas.Lorsque la valeur de la variable d'environnement
OCI_RESOURCE_PRINCIPAL_VERSION
est1
, le remplacement de région n'est pas pris en charge.Exemple :
provider "oci" { auth = "ResourcePrincipal" region = var.region }
Authentification par jeton de sécurité
L'authentification par jeton de sécurité permet d'exécuter Terraform à l'aide d'un jeton généré avec l'authentification basée sur un jeton pour l'interface de ligne de commande. Pour activer l'authentification par jeton de sécurité, mettez à jour la définition de fournisseur comme suit :
- Définissez l'attribut
auth
surSecurityToken
. - Indiquez une valeur pour
config_file_profile
. - Définissez
region
.
Par exemple :
# Configure the Oracle Cloud Infrastructure provider to use Security Token authentication
provider "oci" {
auth = "SecurityToken"
config_file_profile = "PROFILE"
region = var.region
}
Ce jeton arrive à expiration au bout d'une heure. Évitez d'utiliser cette méthode d'authentification lorsque le provisionnement des ressources prend plus d'une heure. Pour plus d'informations, reportez-vous à Actualisation d'un jeton.
Authentification d'identité de charge globale OKE
Dans Kubernetes, une charge de travail est une application exécutée sur un cluster Kubernetes. Une charge globale peut être un composant d'application s'exécutant dans un seul pod ou plusieurs composants d'application s'exécutant dans un ensemble de pods qui fonctionnent ensemble. Tous les pods de la charge globale sont exécutés dans le même espace de noms.
Dans Oracle Cloud Infrastructure, une charge globale exécutée sur un cluster Kubernetes géré par Container Engine for Kubernetes (également appelé OKE) est considérée comme une ressource à part entière. Une ressource de charge globale est identifiée par la combinaison unique de cluster Kubernetes, d'espace de noms et de compte de service. Cette combinaison unique est appelée identité de charge globale.
L'authentification d'identité de charge globale OKE permet aux charges globales exécutées sur des clusters Kubernetes gérés par Container Engine for Kubernetes d'accéder à d'autres ressources Oracle Cloud Infrastructure. Pour plus d'informations, reportez-vous à Autorisation d'accès aux ressources OCI pour les charges globales.
Afin d'activer l'authentification d'identité de charge globale OKE pour les fournisseurs OCI Terraform, définissez l'attribut auth
sur "OKEWorkloadIdentity" dans la définition de fournisseur, comme indiqué dans l'exemple suivant :
variable "region" {}
provider "oci" {
auth = "OKEWorkloadIdentity"
region = var.region
}
Variables d'environnement
Les variables d'environnement suivantes sont disponibles pour la configuration du fournisseur.
-
OCI_DEFAULT_CERTS_PATH
(chemin de certificat)Remarque
Utilisez une seule variable de chemin de certificat à la fois. -
OCI_SDK_APPEND_USER_AGENT
(agent utilisateur personnalisé) -
realm_specific_service_endpoint_template_enabled
(adresse dédiée permettant d'accéder de manière sécurisée aux buckets de stockage) -
TF_APPEND_USER_AGENT
(agent utilisateur personnalisé) -
TF_VAR_compartment_ocid
(valeur d'authentification de l'OCID de compartiment) -
TF_VAR_fingerprint
(valeur d'authentification d'empreinte de clé) -
TF_VAR_private_key_path
(valeur d'authentification du chemin de clé privée) -
TF_VAR_region
(valeur de région)Exemple :
us-ashburn-1
-
TF_VAR_tenancy_ocid
(valeur d'authentification de l'OCID de location) -
TF_VAR_user_ocid
(valeur d'authentification de l'OCID utilisateur) -
USER_AGENT_PROVIDER_NAME
(agent utilisateur personnalisé)
Exporter et sélectionner des variables d'environnement
Vous pouvez exporter les valeurs d'authentification requises en tant que variables d'environnement ou les appliquer à différents profils bash lors de l'exécution des commandes Terraform.
Si vous travaillez principalement dans un seul compartiment, envisagez d'exporter l'OCID de compartiment en tant que variable d'environnement. L'OCID de location est également l'OCID du compartiment racine et peut être utilisé lorsqu'un OCID de compartiment est requis.
Vous pouvez enlever les blocs de fournisseur du fichier de configuration Terraform si toutes les valeurs requises d'authentification par clé d'API sont fournies en tant que variables d'environnement ou définies dans un fichier
*.tfvars
.- Exemple d'export UNIX et Linux
- L'exemple UNIX et Linux
bash_profile
suivant s'applique lorsque la configuration Terraform est limitée à un seul compartiment ou utilisateur.
- Exemple d'export Windows
-
Remarque
Vérifiez le format PEM pour les clés. Pour plus d'informations, reportez-vous à Procédure de génération d'une clé de signature d'API.
Utiliser des agents utilisateur personnalisés
Pour utiliser un agent utilisateur personnalisé, exportez l'une des variables d'environnement suivantes. Une seule variable d'environnement est prise en compte à la fois, suivant cet ordre de priorité :
USER_AGENT_PROVIDER_NAME
OCI_SDK_APPEND_USER_AGENT
TF_APPEND_USER_AGENT
Spécification d'une adresse dédiée pour le service Object Storage
Accédez en toute sécurité aux buckets de stockage dans Object Storage avec des adresses dédiées à l'aide du fournisseur OCI Terraform. Lors de la configuration du fournisseur, utilisez une variable d'environnement, un paramètre dans le bloc de fournisseur, ou les deux. Si vous utilisez les deux, le paramètre de bloc du fournisseur est prioritaire.
La variable d'environnement est OCI_REALM_SPECIFIC_SERVICE_ENDPOINT_TEMPLATE_ENABLED
. La valeur par défaut est false
. Définissez la valeur sur true
pour utiliser une adresse dédiée.
Le paramètre de bloc de fournisseur est realm_specific_service_endpoint_template_enabled
. La valeur par défaut est false
. Définissez la valeur sur true
pour utiliser une adresse dédiée.
Utilisation d'une adresse dédiée uniquement
-
Dans le bloc
provider
, définissezrealm_specific_service_endpoint_template_enabled
surtrue
.provider "oci" { realm_specific_service_endpoint_template_enabled = true }
Utilisation à la fois des adresses par défaut et des adresses dédiées
Utilisez le méta-argument d'alias Terraform pour accéder aux adresses de service par défaut et aux adresses propres au domaine. Remplacez les adresses par défaut par des adresses propres au domaine en spécifiant le paramètre de fournisseur lors de la création des ressources.
-
Définissez un bloc
provider
pour chaque adresse.provider "oci" { realm_specific_service_endpoint_template_enabled = true } provider "oci" { #By default realm_specific_service_endpoint_template_enabled = false }
-
Utilisez le méta-argument
alias
de Terraform dans le blocprovider
pour une adresse dédiée.Par exemple, ajoutez
alias = "custom_endpoint"
.provider "oci" { alias = "custom_endpoint" realm_specific_service_endpoint_template_enabled = true } provider "oci" { #By default realm_specific_service_endpoint_template_enabled = false }
-
Dans chaque bloc
resource
que vous souhaitez utiliser une adresse dédiée, référencezprovider
par la valeuralias
.Par exemple, ajoutez
provider = "custom_endpoint"
.L'exemple suivant présente deux blocs de fournisseur et deux blocs de ressources. Dans cet exemple,
bucket1
utilise l'adresse par défaut tandis quebucket2
utilise l'adresse dédiée.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 }
Utilisation du fichier de configuration du kit SDK et de l'interface de ligne de commande
Il est possible de définir les valeurs de fournisseur requises dans le fichier ~/.oci/config
utilisé par les kits SDK et l'interface de ligne de commande. Pour plus de détails sur la définition de cette configuration, reportez-vous à Fichier de configuration du kit SDK et de l'interface de ligne de commande.
Les noms de paramètre dans le fichier de configuration du kit SDK et de l'interface de ligne de commande sont légèrement différents.
Les blocs fournisseur de fichier de configuration Terraform peuvent être complètement enlevés si toutes les valeurs requises d'authentification par clé d'API sont fournies en tant que variables d'environnement ou définies dans le fichier
~/.oci/config
.Vous pouvez définir un profil de configuration OCI autre que celui par défaut en tant que valeur d'environnement à l'aide de la commande suivante :
export TF_VAR_config_file_profile=<config_file_profile_name>
Vous pouvez également définir le profil de configuration OCI dans un bloc fournisseur. Par exemple :
provider "oci" {
tenancy_ocid = var.tenancy_ocid
config_file_profile= var.config_file_profile
}
Ordre de priorité
Si les paramètres sont définis à plusieurs emplacements, l'ordre de priorité est le suivant :
- Variable d'environnement
- Profil autre que celui par défaut du fichier de configuration OCI, s'il est fourni
- Profil DEFAULT du fichier de configuration OCI