Configuration du fournisseur
Configurez le fournisseur OCI Terraform avec l'authentification requise et les variables d'environnement facultatives.
Pour obtenir des exemples de fichiers de configuration Terraform permettant de créer des 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 le fournisseur en définissant l'attribut auth
sur "APIKey". Les appels vers OCI à l'aide de l'authentification par clé d'API exigent que vous fournissez les informations d'identification suivantes :
tenancy_ocid
: OCID de la 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. Obligatoire 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 l'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 s'applique uniquement aux instances exécutées dans Oracle Cloud Infrastructure.
Utilisez l'autorisation de principal d'instance pour enlever les exigences pour les attributs suivants dans la définition de fournisseur :
tenancy_ocid
user_ocid
private_key_path
fingerprint
Lorsque l'autorisation de principal d'instance est activée, le fournisseur peut effectuer des appels d'API à partir d'une instance de calcul sans ces attributs.
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 la baisse.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é
Exécutez 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
.
Exemples :
# 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 cours 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 globale est une application exécutée sur un cluster Kubernetes. Une charge globale peut être un composant d'application exécuté dans un seul pod, ou plusieurs composants d'application exécutés 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 Kubernetes Engine (é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 Kubernetes Engine d'accéder à d'autres ressources Oracle Cloud Infrastructure. Pour plus d'informations, reportez-vous à Autorisation d'accès des charges globales aux ressources OCI.
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 en toute sécurité 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 par empreinte de clé) -
TF_VAR_private_key_path
(valeur d'authentification par 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 obtenir à partir de différents profils bash lors de l'exécution des commandes Terraform.
Si vous travaillez principalement dans un compartiment unique, pensez à exporter l'OCID du 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 des blocs fournisseur de 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
Assurez-vous que les clés sont au format PEM. 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, selon 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 fournisseur ou les deux. Si vous utilisez les deux, le paramètre de bloc 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 du 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 des adresses par défaut et 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 indiquant le paramètre de fournisseur lors de la création de la ressource.
-
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
Terraform dans le blocprovider
correspondant à 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
dont vous voulez utiliser une adresse dédiée, référencezprovider
par la valeuralias
.Par exemple, ajoutez
provider = "custom_endpoint"
.L'exemple suivant montre deux blocs fournisseur et deux blocs ressource. 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
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.
Vous pouvez 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 blocs fournisseur de fichier de configuration Terraform peuvent être 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
.Pour définir un profil de configuration OCI autre que celui par défaut en tant que valeur d'environnement, utilisez 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. Exemples :
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