Configurando o Provedor

Configure o provedor Terraform do OCI com a autenticação necessária e as variáveis de ambiente opcionais.

Observação

Para obter exemplos de arquivos de configuração do Terraform para criar recursos específicos, consulte Exemplos de Provedor do Oracle Cloud Infrastructure do Terraform.

Autenticação

Para interagir com os serviços e recursos suportados do Oracle Cloud Infrastructure (OCI), configure o provedor Terraform do OCI com credenciais de autenticação para uma conta do OCI.

O provedor Terraform do OCI suporta quatro métodos de autenticação:

Autenticação de Chave de API

Por padrão, o provedor Terraform usa autenticação de Chave de API, mas você pode especificar isso explicitamente definindo o atributo auth como "APIKey" na definição do seu provedor. As chamadas para o OCI usando a autenticação de Chave de API exigem que você forneça as seguintes credenciais:

Por exemplo, forneça esses valores como variáveis de ambiente ou dentro de variáveis de configuração do Terraform.

Autorização do Controlador de Instâncias

A autorização do controlador de instâncias permite que seu provedor faça chamadas de API em uma instância de computação do OCI sem precisar dos atributos tenancy_ocid, user_ocid, private_key_path e fingerprint na definição do provedor.

Observação

A autorização do controlador de instâncias só se aplica às instâncias que estão sendo executadas no Oracle Cloud Infrastructure.

Para ativar a autorização do controlador de instâncias nos provedores Terraform do OCI, defina o atributo auth como "InstancePrincipal" na definição do provedor, conforme mostrado no seguinte exemplo:

variable "region" {}

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

Para obter mais informações, consulte Chamando os Serviços em uma Instância.

Autorização do Controlador de Recursos

A autorização do controlador de recursos, como autorização do controlador de instâncias, permite que o provedor faça chamadas de API sem a necessidade de fornecer credenciais dentro da definição do provedor. A autorização do controlador de recursos é usada para permitir que recursos como uma função em execução acessem outros recursos do Oracle Cloud Infrastructure. Para obter mais informações, consulte Acessando Outros Recursos do Oracle Cloud Infrastructure pelas Funções em Execução.

Para ativar a autorização do controlador de recursos para provedores Terraform do OCI:

  1. Crie o grupo dinâmico e as políticas necessárias à função em execução para gerenciar outros recursos do OCI. Siga as instruções em Usando a Console em Acessando Outros Recursos do Oracle Cloud Infrastructure nas Funções em Execução e certifique-se de que a política permita o gerenciamento de outros recursos.
  2. Defina as seguintes variáveis de ambiente:

    • OCI_RESOURCE_PRINCIPAL_VERSION, contendo o valor 2.2.

      Quando o valor é 1, a substituição de região não é suportada.

    • OCI_RESOURCE_PRINCIPAL_RPST, contendo o conteúdo bruto do arquivo rpst ou o caminho absoluto para o arquivo rpst, incluindo o nome do arquivo.

    • OCI_RESOURCE_PRINCIPAL_PRIVATE_PEM, contendo o caminho absoluto para o arquivo private.pem (incluindo o nome do arquivo).

    • OCI_RESOURCE_PRINCIPAL_REGION, contendo o identificador de região no qual o provedor está implantado (por exemplo, us-phoenix-1).

  3. Defina o atributo auth como "ResourcePrincipal" na definição do provedor.

    Observação

    O valor de region no bloco do provedor substitui o valor da região definido pela variável de ambiente OCI_RESOURCE_PRINCIPAL_REGION. Essa alteração, introduzida no Provedor Terraform versão 5.0.0, não é compatível com versões inferiores.

    Quando o valor da variável de ambiente OCI_RESOURCE_PRINCIPAL_VERSION é 1, a substituição de região não é suportada.

    Por exemplo:

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

Autenticação de Token de Segurança

A autenticação de Token de Segurança permite executar o Terraform usando um token gerado com Autenticação baseada em Token para a CLI. Para ativar a autenticação do Token de Segurança, atualize a definição do provedor da seguinte forma:

  • Defina o atributo auth como SecurityToken.
  • Forneça um valor para config_file_profile.
  • Defina o valor region.

Por exemplo:

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

Esse token expira após uma hora. Evite usar esse método de autenticação quando o provisionamento de recursos demorar mais de uma hora. Consulte Atualizando um Token para obter mais informações.

Autenticação de Identidade da Carga de Trabalho do OKE

No Kubernetes, uma carga de trabalho é um aplicativo em execução em um cluster do Kubernetes. Uma carga de trabalho pode ser um componente de aplicativo em execução dentro de um único pod ou vários componentes de aplicativo em execução dentro de um conjunto de pods que funcionam juntos. Todos os pods na carga de trabalho são executados no mesmo namespace.

No Oracle Cloud Infrastructure, uma carga de trabalho em execução em um cluster do Kubernetes gerenciado pelo Container Engine for Kubernetes (também conhecido como OKE) é considerada um recurso por si só. Um recurso de carga de trabalho é identificado pela combinação exclusiva de cluster, namespace e conta de serviço do Kubernetes. Essa combinação exclusiva é chamada de identidade da carga de trabalho.

A Autenticação de Identidade da Carga de Trabalho do OKE permite que cargas de trabalho em execução em clusters do Kubernetes gerenciados pelo Serviço Container Engine for Kubernetes acessem outros recursos do Oracle Cloud Infrastructure. Para obter mais informações, consulte Concedendo às Cargas de Trabalho Acesso aos Recursos do OCI.

Para ativar a Autenticação de Identidade da Carga de Trabalho do OKE para provedores Terraform do OCI, defina o atributo auth como "OKEWorkloadIdentity" na definição do provedor, conforme mostrado no seguinte exemplo:

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

Variáveis de Ambiente

As variáveis de ambiente a seguir estão disponíveis para configurar o provedor.

  • OCI_DEFAULT_CERTS_PATH (caminho do certificado)

    Observação

    Use apenas uma variável de caminho de certificado de cada vez.
  • OCI_SDK_APPEND_USER_AGENT (agente de usuário personalizado)

  • realm_specific_service_endpoint_template_enabled (ponto final dedicado para acessar buckets de armazenamento com segurança)

  • TF_APPEND_USER_AGENT (agente de usuário personalizado)

  • TF_VAR_compartment_ocid (valor de autenticação do OCID do compartimento)

  • TF_VAR_fingerprint (valor de autenticação de impressão digital de chave)

  • TF_VAR_private_key_path (valor de autenticação do caminho de chave privada)

  • TF_VAR_region (valor da região)

    Exemplo: us-ashburn-1

  • TF_VAR_tenancy_ocid (valor de autenticação do OCID da tenancy)

  • TF_VAR_user_ocid (valor de autenticação do OCID do usuário)

  • USER_AGENT_PROVIDER_NAME (agente de usuário personalizado)

Exportando e Obtendo Variáveis de Ambiente

Você pode exportar os valores de autenticação necessários como variáveis de ambiente ou originá-los em diferentes perfis bash ao executar comandos do Terraform.

Se você trabalha principalmente em um único compartimento, considere exportar o OCID do compartimento como variável de ambiente. O OCID da tenancy também é o OCID do compartimento raiz e pode ser usado onde qualquer OCID de compartimento é necessário.

Dica

Você poderá remover os blocos de provedor do arquivo de configuração do Terraform se todos os valores obrigatórios de Autenticação de Chave de API forem fornecidos como variáveis de ambiente ou definidos em um arquivo *.tfvars.
Exemplo de Exportação do UNIX e do Linux
O exemplo UNIX e Linux bash_profile a seguir se aplica quando a configuração do Terraform é limitada a um único compartimento ou usuário.
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>
Depois de definir esses valores, abra um novo terminal ou origine as alterações de perfil:
$ source ~/.bash_profile
Para ambientes mais complexos, considere a manutenção de vários conjuntos de variáveis de ambiente.
Exemplo de Exportação do Windows
Observação

Certifique-se do formato PEM para chaves. Consulte Como Gerar uma Chave de Assinatura de API para obter mais informações.
O exemplo do Windows a seguir se aplica quando a configuração do Terraform é limitada a um único compartimento ou usuário.
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>
Depois de definir esses valores, saia e reabra o terminal. (As variáveis não estão definidas para a sessão atual.)

Usando Agentes de Usuário Personalizados

Para usar um agente de usuário personalizado, exporte uma das variáveis de ambiente a seguir. Somente uma variável de ambiente é considerada de cada vez, seguindo esta ordem de prioridade:

  • USER_AGENT_PROVIDER_NAME
  • OCI_SDK_APPEND_USER_AGENT
  • TF_APPEND_USER_AGENT

Especificando um Ponto Final Dedicado para o Serviço Object Storage

Acesse com segurança buckets de armazenamento no serviço Object Storage com pontos finais dedicados usando o provedor Terraform do OCI. Ao configurar o provedor, use uma variável de ambiente, um parâmetro no bloco do provedor ou ambos. Se você usar ambos, o parâmetro de bloco do provedor terá precedência.

A variável de ambiente é OCI_REALM_SPECIFIC_SERVICE_ENDPOINT_TEMPLATE_ENABLED. O valor padrão é false. Defina o valor como true para usar um ponto final dedicado.

O parâmetro de bloco do provedor é realm_specific_service_endpoint_template_enabled. O valor padrão é false. Defina o valor como true para usar um ponto final dedicado.

Usando Somente um Ponto Final Dedicado

  • No bloco provider, defina realm_specific_service_endpoint_template_enabled como true.

    provider "oci" {
      realm_specific_service_endpoint_template_enabled = true
    }

Usando Pontos Finais Padrão e Dedicados

Use o metaargumento de alias do Terraform para acessar pontos finais de serviço padrão e pontos finais específicos do realm. Substitua pontos finais padrão por pontos finais específicos do realm especificando o parâmetro do provedor na criação do recurso.

  1. Defina um bloco provider para cada ponto final.

    provider "oci" {
      realm_specific_service_endpoint_template_enabled = true
    }
    
    provider "oci" {
        #By default realm_specific_service_endpoint_template_enabled = false
    }
  2. Use o metaargumento alias do Terraform no bloco provider que é para um ponto final dedicado.

    Por exemplo, adicione 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. Em cada bloco resource que você deseja usar um ponto final dedicado, faça referência a provider pelo valor alias.

    Por exemplo, adicione provider = "custom_endpoint".

    O exemplo a seguir mostra dois blocos de provedores e dois blocos de recursos. Neste exemplo, bucket1 usa o ponto final padrão enquanto bucket2 usa o ponto 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
    }

Usando o Arquivo de Configuração do SDK e da CLI

É possível definir os valores de provedor necessários no mesmo arquivo ~/.oci/config que os SDKs e a CLI usam. Para obter detalhes sobre como definir essa configuração, consulte Arquivo de Configuração do SDK e da CLI.

Importante

Os nomes dos parâmetros no arquivo de configuração do SDK e da CLI são um pouco diferentes.
Dica

Os blocos de provedor do arquivo de configuração do Terraform poderão ser totalmente removidos se todos os valores obrigatórios de Autenticação de Chave de API forem fornecidos como variáveis de ambiente ou definidos no arquivo ~/.oci/config.

Você pode definir um perfil de configuração do OCI não padrão como valor de ambiente usando o seguinte comando:

export TF_VAR_config_file_profile=<config_file_profile_name>

Você também pode definir o perfil de configuração do OCI em um bloco de provedor. Por exemplo:

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

Ordem de Precedência

Se os parâmetros forem definidos em vários locais, a ordem de precedência será a seguinte:

  1. A variável de ambiente
  2. O perfil não default no arquivo de configuração do OCI, se fornecido
  3. O perfil DEFAULT no arquivo de configuração do OCI