Configuration du fournisseur

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

Remarque

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 :

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.

Remarque

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 :

  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 le bas.

    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é

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 sur SecurityToken.
  • 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
}
Important

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.

Conseil

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.
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

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

    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.

  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 de Terraform dans le bloc provider 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
    }
  3. Dans chaque bloc resource que vous souhaitez utiliser une adresse dédiée, référencez provider par la valeur alias.

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

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.

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.
Conseil

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 :

  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