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.
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:
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_path
no está definido y tiene prioridad sobreprivate_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.private_key_path
: ruta de acceso (incluido el nombre del archivo) de la clave privada almacenada en su computadora. Es necesario siprivate_key
no 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) frase de 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 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.
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:
- 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
, no se admite la sustitución de región. -
OCI_RESOURCE_PRINCIPAL_RPST
, que contiene el contenido sin procesar del archivorpst
o la ruta de acceso absoluta del 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 la región en la que se despliega el proveedor (por ejemplo,us-phoenix-1
).
-
-
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 entornoOCI_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
es1
, 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
enSecurityToken
. - 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. 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.
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.
- 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.
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
, definarealm_specific_service_endpoint_template_enabled
entrue
.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
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 }
-
Utilice el metaargumento
alias
de Terraform en el bloqueprovider
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 }
-
En cada bloque
resource
que desee utilizar un punto final dedicado, haga referencia aprovider
por 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,
bucket1
utiliza el punto final por defecto mientras quebucket2
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.
Los nombres de los parámetros en el archivo de configuración de SDK y CLI son ligeramente diferentes.
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:
- La variable de entorno
- El perfil que no sea por defecto del archivo de configuración de OCI, si se proporciona
- El perfil DEFAULT del archivo de configuración de OCI