Configuración del proveedor
Configure el proveedor de Terraform de OCI con la autenticación necesaria y las variables de entorno opcionales.
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:
-
tenancy_ocid: OCID del arrendamiento. Para obtener el valor, consulte Dónde obtener el OCID del arrendamiento y el OCID del usuario. -
user_ocid: OCID del usuario que llama a la API. Para obtener el valor, consulte Dónde obtener el OCID del arrendamiento y el OCID del usuario. -
private_key: contenido del archivo de clave privada. Es necesario siprivate_key_pathno está definido y tiene prioridad sobreprivate_key_pathsi 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. -
private_key_path: ruta de acceso (incluido el nombre del archivo) de la clave privada almacenada en la computadora. Es necesario siprivate_keyno está definido. 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. -
private_key_password: (opcional) contraseña utilizada para la clave, si está cifrada. -
fingerprint: huella del par de claves que se está utilizando. Para obtener el valor, consulte Cómo obtener la huella de la clave. -
region: una región de OCI. Consulte Regiones y dominios de disponibilidad. -
config_file_profile: nombre de perfil si desea utilizar un perfil personalizado en el archivo de configuració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.
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 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:
- 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.
-
Configure las siguientes variables de entorno:
-
OCI_RESOURCE_PRINCIPAL_VERSION, que contiene el valor2.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 archivorpsto la ruta de acceso absoluta al archivorpst, incluido el nombre de archivo. -
OCI_RESOURCE_PRINCIPAL_PRIVATE_PEM, que contiene la ruta absoluta al archivoprivate.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).
-
-
Defina el atributo
authen "ResourcePrincipal" en la definición del proveedor.Nota
El valor para
regionen el bloque de proveedor sustituye el valor de región definido por la variable de entornoOCI_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_VERSIONes1, 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
authenSecurityToken. - 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
}
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.
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_profilede UNIX y Linux se aplica cuando la configuración de Terraform está limitada a un único compartimento o usuario.
- 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.
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, definarealm_specific_service_endpoint_template_enabledentrue.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.
-
Defina un bloque
providerpara cada punto final.provider "oci" { realm_specific_service_endpoint_template_enabled = true } provider "oci" { #By default realm_specific_service_endpoint_template_enabled = false } -
Utilice el metaargumento
aliasde Terraform en el bloqueproviderque 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 } -
En cada bloque
resourceque desee utilizar un punto final dedicado, haga referencia aproviderpor el valoralias.Por ejemplo, agregue
provider = "custom_endpoint".En el siguiente ejemplo se muestran dos bloques de proveedor y dos bloques de recursos. En este ejemplo,
bucket1utiliza el punto final por defecto, mientras quebucket2utiliza 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 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.
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:
- Variable de entorno
- Perfil no por defecto en el archivo de configuración de OCI, si se proporciona
- El perfil DEFAULT del archivo de configuración de OCI