Configuration du fournisseur

Configurez le fournisseur OCI Terraform avec l'authentification requise et les variables d'environnement facultatives.

Remarque

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 :

Par exemple, indiquez ces valeurs en tant que variables d'environnement ou dans les variables de configuration Terraform.

Autorisation de principal d'instance

Remarque

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 :

  1. 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.
  2. Configurez les variables d'environnement suivantes :

    • OCI_RESOURCE_PRINCIPAL_VERSION, contenant la valeur 2.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 fichier rpst ou le chemin absolu du fichier rpst, y compris le nom du fichier.

    • OCI_RESOURCE_PRINCIPAL_PRIVATE_PEM, contenant le chemin absolu du fichier private.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).

  3. 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'environnement OCI_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 est 1, 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 sur SecurityToken.
  • 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
}
Important

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.

Conseil

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.
export OCI_DEFAULT_CERTS_PATH=<certificates_path>
export TF_VAR_tenancy_ocid=<tenancy_OCID>
export TF_VAR_compartment_ocid=<compartment_OCID>
export TF_VAR_user_ocid=<user_OCID>
export TF_VAR_fingerprint=<key_fingerprint>
export TF_VAR_private_key_path=<private_key_path>
export TF_VAR_region=<region>
export USER_AGENT_PROVIDER_NAME=<custom_user_agent>
export OCI_SDK_APPEND_USER_AGENT=<custom_user_agent>
export TF_APPEND_USER_AGENT=<custom_user_agent>
Après avoir défini ces valeurs, ouvrez un nouveau terminal ou une nouvelle source, le profil change :
$ source ~/.bash_profile
Pour les environnements plus complexes, envisagez de gérer plusieurs ensembles de variables d'environnement.
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.
L'exemple Windows suivant s'applique lorsque la configuration Terraform est limitée à un seul compartiment ou utilisateur.
setx OCI_DEFAULT_CERTS_PATH=<certificates_path>
setx TF_VAR_tenancy_ocid <tenancy_OCID>
setx TF_VAR_compartment_ocid <compartment_OCID>
setx TF_VAR_user_ocid <user_OCID>
setx TF_VAR_fingerprint <key_fingerprint>
setx TF_VAR_private_key_path <private_key_path>
setx TF_VAR_region=<region>
setx USER_AGENT_PROVIDER_NAME=<custom_user_agent>
setx OCI_SDK_APPEND_USER_AGENT=<custom_user_agent>
setx TF_APPEND_USER_AGENT=<custom_user_agent>
Après avoir défini ces valeurs, quittez et rouvrez le terminal. (Les variables ne sont pas définies pour la session en cours.)

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éfinissez realm_specific_service_endpoint_template_enabled sur true.

    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.

  1. 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
    }
  2. Utilisez le méta-argument alias Terraform dans le bloc provider 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
    }
  3. Dans chaque bloc resource dont vous voulez utiliser une adresse dédiée, référencez provider par la valeur alias.

    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 que bucket2 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

Important

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.

Conseil

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 :

  1. Variable d'environnement
  2. Profil autre que celui par défaut du fichier de configuration OCI, s'il est fourni
  3. Profil DEFAULT du fichier de configuration OCI