Configuración del proveedor

Configure el proveedor de Terraform de OCI con la autenticación necesaria y las variables de entorno opcionales.

Nota

Para obtener ejemplos de archivos de configuración de Terraform para crear recursos específicos, consulte Ejemplos de proveedor de Oracle Cloud Infrastructure de Terraform.

Identificación

Para interactuar con los servicios de Oracle Cloud Infrastructure (OCI) y los recursos soportados, configure el proveedor de Terraform de OCI con las credenciales de autenticación de una cuenta de OCI.

El proveedor de Terraform de OCI soporta cuatro métodos de autenticación:

Autenticación de clave de API

Por defecto, el proveedor de Terraform utiliza la autenticación de clave de API, pero usted puede especificarlo explícitamente definiendo el atributo auth en "APIKey" en la definición del proveedor. Las llamadas a OCI mediante la autenticación de clave de API requieren que proporcione las siguientes credenciales:

Por ejemplo, proporcione estos valores como variables de entorno o dentro de variables de configuración de Terraform.

Autorización de principal de instancia

Nota

La autorización de principales de instancia solo se aplica a instancias que se ejecutan en Oracle Cloud Infrastructure.

Utilice la autorización de principal de instancia para eliminar requisitos para los siguientes atributos en la definición del proveedor:

  • tenancy_ocid
  • user_ocid
  • private_key_path
  • fingerprint

Cuando la autorización de principal de instancia está activada, el proveedor puede realizar llamadas de API desde una instancia informática sin estos atributos.

Para permitir la autorización de principales de instancia para los proveedores de Terraform de OCI, defina el atributo auth en "InstancePrincipal" en la definición del proveedor, como se muestra en el siguiente ejemplo:

variable "region" {}

provider "oci" {
   auth = "InstancePrincipal"
   region = var.region
}

Para obtener más información, consulte Llamada a servicios desde una instancia.

Autorización de entidad de recurso

La autorización de la entidad de recurso, como la autorización del principal de instancia, permite al proveedor realizar llamadas de API sin necesidad de proporcionar credenciales en la definición del proveedor. La autorización de entidad de recurso se utiliza para permitir que recursos como una función en ejecución accedan a otros recursos de Oracle Cloud Infrastructure. Para obtener más información, consulte Acceso a otros recursos de Oracle Cloud Infrastructure desde funciones en ejecución.

Para activar la autorización del principal de recursos para proveedores de Terraform de OCI:

  1. Cree el grupo dinámico y las políticas necesarias para que la función en ejecución gestione otros recursos de OCI. Siga las instrucciones de Uso de la consola en Acceso a otros recursos de Oracle Cloud Infrastructure desde funciones en ejecución y asegúrese de que la política permite la gestión de otros recursos.
  2. Configure las siguientes variables de entorno:

    • OCI_RESOURCE_PRINCIPAL_VERSION, que contiene el valor 2.2.

      Cuando el valor es 1, la sustitución de región no está soportada.

    • OCI_RESOURCE_PRINCIPAL_RPST, que contiene el contenido sin procesar del archivo rpst o la ruta de acceso absoluta al archivo rpst, incluido el nombre de archivo.

    • OCI_RESOURCE_PRINCIPAL_PRIVATE_PEM, que contiene la ruta absoluta al archivo private.pem (incluido el nombre de archivo).

    • OCI_RESOURCE_PRINCIPAL_REGION, que contiene el identificador de región en el que se ha desplegado el proveedor (por ejemplo, us-phoenix-1).

  3. Defina el atributo auth en "ResourcePrincipal" en la definición del proveedor.

    Nota

    El valor para region en el bloque de proveedor sustituye el valor de región definido por la variable de entorno OCI_RESOURCE_PRINCIPAL_REGION. Este cambio, introducido en la versión 5.0.0 del proveedor de Terraform, no es compatible con versiones anteriores.

    Cuando el valor de la variable de entorno OCI_RESOURCE_PRINCIPAL_VERSION es 1, la sustitución de región no está soportada.

    Por ejemplo:

    provider "oci" {
       auth = "ResourcePrincipal"
       region = var.region
    }

Autenticación de token de seguridad

Ejecute Terraform mediante un token generado con la autenticación basada en token para CLI. Para habilitar la autenticación de token de seguridad, actualice la definición del proveedor de la siguiente manera:

  • Defina el atributo auth en SecurityToken.
  • Proporcione un valor para config_file_profile.
  • Defina el valor region.

Por ejemplo:

# Configure the Oracle Cloud Infrastructure provider to use Security Token authentication
provider "oci" {
  auth = "SecurityToken"
  config_file_profile = "PROFILE"
  region = var.region
}
Importante

Este token caduca después de una hora. Evite utilizar este método de autenticación cuando el aprovisionamiento de recursos tarde más de una hora. Para obtener más información, consulte Actualización de un token.

Autenticación de identidad de carga de trabajo de OKE

En Kubernetes, una carga de trabajo es una aplicación que se ejecuta en un cluster de Kubernetes. Una carga de trabajo puede ser un componente de aplicación que se ejecute dentro de un solo pod o varios componentes de aplicación que se ejecuten dentro de un juego de pods que funcionen juntos. Todos los pods de la carga de trabajo se ejecutan en el mismo espacio de nombres.

En Oracle Cloud Infrastructure, una carga de trabajo que se ejecuta en un cluster de Kubernetes gestionado por Kubernetes Engine (también conocido como OKE) se considera un recurso por derecho propio. Un recurso de carga de trabajo se identifica mediante la combinación única de cluster de Kubernetes, espacio de nombres y cuenta de servicio. Esta combinación única se denomina identidad de carga de trabajo.

La autenticación de identidad de carga de trabajo de OKE permite que las cargas de trabajo que se ejecutan en clusters de Kubernetes gestionados por Kubernetes Engine accedan a otros recursos de Oracle Cloud Infrastructure. Para obtener más información, consulte Granting Workloads Access to OCI Resources.

Para activar la autenticación de identidad de carga de trabajo de OKE para los proveedores de Terraform de OCI, defina el atributo auth en "OKEWorkloadIdentity" en la definición del proveedor, como se muestra en el siguiente ejemplo:

variable "region" {}
provider "oci" {
   auth = "OKEWorkloadIdentity"
   region = var.region
}

Variables de Entorno

Las siguientes variables de entorno están disponibles para configurar el proveedor.

Variable de entorno Descripción y comentarios
OCI_DEFAULT_CERTS_PATH

Ruta del certificado.

Nota: Utilice solo una variable de ruta de certificado a la vez.

OCI_SDK_APPEND_USER_AGENT Agente de usuario personalizado.
realm_specific_service_endpoint_template_enabled Punto final dedicado para acceder de forma segura a los cubos de almacenamiento.
TF_APPEND_USER_AGENT Agente de usuario personalizado.
TF_VAR_auth o OCI_AUTH Por defecto, el proveedor de Terraform de OCI utiliza la autenticación de clave de API, pero se puede cambiar mediante esta variable de entorno. Los valores posibles se mencionan en las distintas secciones de esta página.
TF_VAR_compartment_ocid Valor de autenticación de OCID de compartimento.
TF_VAR_config_file_profile o OCI_CONFIG_FILE_PROFILE Nombre de perfil si desea utilizar un perfil personalizado en el archivo de definición de OCI para proporcionar las credenciales de autenticación. Consulte Uso del archivo de configuración de SDK y CLI para obtener más información.
TF_VAR_fingerprint o OCI_FINGERPRINT Valor de autenticación de huella clave.
TF_VAR_private_key_password o OCI_PRIVATE_KEY_PASSWORD (Opcional) Contraseña utilizada para la clave, si esta cifrada.
TF_VAR_private_key_path o OCI_PRIVATE_KEY_PATH Valor de autenticación de ruta de clave privada.
TF_VAR_private_key o OCI_PRIVATE_KEY Contenido del archivo del clave privada. Es necesario si private_key_path no se ha definido y tiene prioridad sobre private_key_path si ambos están definidos. Para obtener más información sobre cómo crear y configurar claves, consulte Cómo generar una clave de firma de API y Cómo cargar la clave pública.
TF_VAR_region o OCI_REGION Valor de región. Ejemplo: us-ashburn-1
TF_VAR_tenancy_ocid o OCI_TENANCY_OCID Valor de autenticación de OCID de arrendamiento.
TF_VAR_user_ocid o OCI_USER_OCID Valor de autenticación de OCID de usuario.
USER_AGENT_PROVIDER_NAME Agente de usuario personalizado.

Exportación y abastecimiento de variables de entorno

Puede exportar los valores de autenticación necesarios como variables de entorno o extraerlos de diferentes perfiles bash al ejecutar comandos de Terraform.

Si trabaja principalmente en un solo compartimento, considere exportar el OCID del compartimento como una variable de entorno. El OCID del arrendamiento también es el OCID del compartimento raíz y se puede utilizar cuando se necesite cualquier OCID de compartimento.

Consejo

Puede eliminar los bloques del proveedor del archivo de configuración de Terraform si todos los valores necesarios de la autenticación de clave de API se proporcionan como variables de entorno o se definen en un archivo *.tfvars.
Ejemplo de exportación de UNIX y Linux
El siguiente ejemplo de bash_profile de UNIX y Linux se aplica cuando la configuración de Terraform está limitada a un único compartimento o usuario.
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>
                                
Después de definir estos valores, abra un nuevo terminal u origine los cambios de perfil:
$ source ~/.bash_profile
Para entornos más complejos, considere mantener varios juegos de variables de entorno.
Ejemplo de exportación de Windows
Nota

Asegúrese de que el formato PEM de las claves. Para obtener más información, consulte Cómo generar una clave de firma de API.
El siguiente ejemplo de Windows se aplica cuando la configuración de Terraform está limitada a un único compartimento o usuario.
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>
                                
Después de configurar estos valores, salga y vuelva a abrir el terminal. (Las variables no están definidas para la sesión actual).

Uso de agentes de usuario personalizados

Para utilizar un agente de usuario personalizado, exporte una de las siguientes variables de entorno. Solo se tiene en cuenta una variable de entorno a la vez, siguiendo este orden de prioridad:

  • USER_AGENT_PROVIDER_NAME
  • OCI_SDK_APPEND_USER_AGENT
  • TF_APPEND_USER_AGENT

Especificación de un punto final dedicado para el servicio Object Storage

Acceda de forma segura a cubos de almacenamiento en Object Storage con puntos finales dedicados mediante el proveedor de Terraform de OCI. Al configurar el proveedor, utilice una variable de entorno, un parámetro en el bloque de proveedor o ambos. Si utiliza ambos, el parámetro de bloque de proveedor tiene prioridad.

La variable de entorno es OCI_REALM_SPECIFIC_SERVICE_ENDPOINT_TEMPLATE_ENABLED. El valor por defecto es false. Defina el valor en true para utilizar un punto final dedicado.

El parámetro de bloque de proveedor es realm_specific_service_endpoint_template_enabled. El valor por defecto es false. Defina el valor en true para utilizar un punto final dedicado.

Uso de un Punto Final Dedicado Sólo

  • En el bloque provider, defina realm_specific_service_endpoint_template_enabled en true.

    provider "oci" {
      realm_specific_service_endpoint_template_enabled = true
    }

Uso de puntos finales por defecto y dedicados

Utilice el metaargumento de alias de Terraform para acceder a los puntos finales de servicio por defecto y a los puntos finales específicos del dominio. Sustituya los puntos finales por defecto por puntos finales específicos del dominio especificando el parámetro de proveedor en la creación de recursos.

  1. Defina un bloque provider para cada punto final.

    provider "oci" {
      realm_specific_service_endpoint_template_enabled = true
    }
    
    provider "oci" {
        #By default realm_specific_service_endpoint_template_enabled = false
    }
  2. Utilice el metaargumento alias de Terraform en el bloque provider que es para un punto final dedicado.

    Por ejemplo, agregue 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. En cada bloque resource que desee utilizar un punto final dedicado, haga referencia a provider por el valor alias.

    Por ejemplo, agregue provider = "custom_endpoint".

    En el siguiente ejemplo se muestran dos bloques de proveedor y dos bloques de recursos. En este ejemplo, bucket1 utiliza el punto final por defecto, mientras que bucket2 utiliza el punto final dedicado.

    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
    }

Uso del archivo de configuración de SDK y CLI

Importante

Los nombres de parámetros en el archivo de configuración de SDK y CLI son ligeramente diferentes.

Puede definir los valores de proveedor necesarios en el mismo archivo ~/.oci/config que utilizan los SDK y la CLI. Para obtener detalles sobre la configuración, consulte Archivo de configuración de SDK y CLI.

Consejo

Los bloques de proveedor del archivo de configuración de Terraform se pueden eliminar si todos los valores necesarios de autenticación de clave de API se proporcionan como variables de entorno o se definen en el archivo ~/.oci/config.

Para definir un perfil de configuración de OCI no por defecto como valor de entorno, utilice el siguiente comando:

export TF_VAR_config_file_profile=<config_file_profile_name>
                

También puede definir el perfil de configuración de OCI en un bloque de proveedor. Por ejemplo:

provider "oci" {
  tenancy_ocid = var.tenancy_ocid
  config_file_profile= var.config_file_profile
}

Orden de Prioridad

Si los parámetros se establecen en varias ubicaciones, el orden de prioridad es el siguiente:

  1. Variable de entorno
  2. Perfil no por defecto en el archivo de configuración de OCI, si se proporciona
  3. El perfil DEFAULT del archivo de configuración de OCI