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.

Autenticación

Para interactuar con los servicios y recursos soportados de Oracle Cloud Infrastructure (OCI), 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

La autorización de principal de instancia permite al proveedor realizar llamadas de API desde una instancia informática de OCI sin necesitar los atributos tenancy_ocid, user_ocid, private_key_path y fingerprint en la definición del proveedor.

Nota

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

Para activar la autorización de principal 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 principal 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, no se admite la sustitución de región.

    • OCI_RESOURCE_PRINCIPAL_RPST, que contiene el contenido sin procesar del archivo rpst o la ruta de acceso absoluta del 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 la región en la que se despliega el proveedor (por ejemplo, us-phoenix-1).

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

    Nota

    El valor de 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 las versiones descendentes.

    Cuando el valor de la variable de entorno OCI_RESOURCE_PRINCIPAL_VERSION es 1, no se soporta la sustitución de región.

    Ejemplo:

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

Autenticación de token de seguridad

La autenticación de token de seguridad le permite ejecutar 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. Consulte Refrescamiento de un token para obtener más información.

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 ejecuta dentro de un único pod o varios componentes de aplicación que se ejecutan dentro de un juego de pods que funcionan conjuntamente. 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 Container Engine for Kubernetes (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, espacio de nombres y cuenta de servicio de Kubernetes. 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 Container Engine for Kubernetes accedan a otros recursos de Oracle Cloud Infrastructure. Para obtener más información, consulte Cómo otorgar acceso a las cargas de trabajo a los recursos de OCI.

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

  • OCI_DEFAULT_CERTS_PATH (ruta de 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_compartment_ocid (valor de autenticación de OCID de compartimento)

  • TF_VAR_fingerprint (valor de autenticación de huella de clave)

  • TF_VAR_private_key_path (valor de autenticación de ruta de acceso de clave privada)

  • TF_VAR_region (valor de región)

    Ejemplo: us-ashburn-1

  • TF_VAR_tenancy_ocid (valor de autenticación de OCID de arrendamiento)

  • TF_VAR_user_ocid (valor de autenticación de OCID de usuario)

  • USER_AGENT_PROVIDER_NAME (agente de usuario personalizado)

Exportación y Asignación 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 la exportación 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 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 obtenga 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 para las claves. Consulte Cómo generar una clave de firma de API para obtener más información.
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 considera 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 los 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 sólo un punto final dedicado

  • 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

Los valores del proveedor necesarios se pueden definir en el mismo archivo ~/.oci/config que utilizan los SDK y la CLI. Para obtener más información sobre el ajuste de esta configuración, consulte Archivo de configuración de SDK y CLI.

Importante

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

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

Puede definir un perfil de configuración de OCI que no sea por defecto como un valor de entorno mediante 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 del 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 definen en varias ubicaciones, el orden de prioridad es el siguiente:

  1. La variable de entorno
  2. El perfil que no sea por defecto del archivo de configuración de OCI, si se proporciona
  3. El perfil DEFAULT del archivo de configuración de OCI