Criar Scripts e Arquivos de Estado com a Descoberta de Recursos
Gere arquivos do Terraform para recursos existentes em seu compartimento.
Use o recurso de descoberta de recursos do OCI para:
- Crie arquivos de estado para recursos existentes na Console e adicione esses recursos a uma configuração do Terraform.
- Duplique sua infraestrutura existente em uma nova tenancy ou região.
- Detecte desvio de estado para recursos atualizados.
Neste tutorial, você cria scripts e arquivos de estado para recursos em sua conta por meio da funcionalidade de descoberta de recursos. Em seguida, você usa o Terraform para gerenciar os recursos.
As principais tarefas incluem:
- Crie um recurso por meio da Console.
- Crie scripts e um arquivo de estado para o recurso por meio da funcionalidade de descoberta de recursos.
- Atualize o recurso com o Terraform.
- Confirme se o recurso foi atualizado na Console.

Para obter mais informações, consulte:
Antes de Começar
Para executar este tutorial com sucesso, você precisa ter o seguinte:
- Uma conta no Oracle Cloud Infrastructure. Consulte Solicitar e Gerenciar Promoções do Oracle Cloud Grátis
- Um computador com MacOS, Linux ou Windows.
- Recursos do tutorial Terraform:
- Execute todas as etapas em Configurar Descoberta de Recursos.
- Anote o comando do provedor Terraform do OCI:
- Cloud Shell:
terraform-provider-oci_<version>
de/usr/bin
- Instância de computação ou um ambiente local: Use o
<shorter-alias>
criado no tutorial anterior para usar em vez do comandoterraform-provider-oci_<version>
.- Exemplo:
tf-oci
- Exemplo:
- Cloud Shell:
- Terraform v1.1.3+:
- Se você estiver usando o Cloud Shell, não precisará instalar o Terraform. O Terraform já está instalado.
- Se você estiver usando uma instância de computação ou um ambiente local, siga as etapas em Instalar o Terraform.
1. Criar um Recurso
Crie um bucket em sua tenancy por meio da Console. Este bucket não tem um script Terraform. Posteriormente, use a descoberta de recursos para criar um script Terraform e um arquivo de estado para o bucket.
Se seu nome de usuário estiver no grupo Administrators
, ignore esta seção. Caso contrário, peça ao administrador para adicionar a seguinte política à sua tenancy:
allow group <a-group-your-username-belongs-to> to manage compartments in tenancy
Com esse privilégio, você pode criar um compartimento para todos os recursos do seu tutorial.
- Acesse a Console do Oracle Cloud.
- No menu de navegação , selecione o menu Perfil
e, em seguida, selecione Definições do usuário ou Meu perfil, dependendo da opção que você vir.
- Selecione Grupos ou Meus grupos, dependendo da opção exibida.
- Em um bloco de notas, copie o nome de um grupo ao qual seu nome de usuário pertence.
- Abra o menu de navegação e selecione Identidade e Segurança. Em Identidade, selecione Políticas.
- Selecione o compartimento:
<your-tenancy>(root)
- Selecione Criar Política.
- Na página Criar Política, informe os seguintes valores:
- Nome:
manage-compartments
- Descrição:
Allow the group <a-group-your-username-belongs-to> to list, create, update, delete and recover compartments in the tenancy.
- Compartimento:
<your-tenancy>(root)
- Nome:
- Para Criador de Política, selecione Mostrar editor manual.
- Cole na seguinte política:
allow group <a-group-your-username-belongs-to> to manage compartments in tenancy
- Selecione Criar.
Referência: Detalhes para Combinações de Verbos + Tipo de Recurso (consulte o tipo de recurso compartments
)
Crie um compartimento para os recursos criados neste tutorial.
- Na Console: abra o menu de navegação , selecione Identidade e Segurança. Em Identidade, selecione Compartimentos.
- Selecione Criar Compartimento.
- Informe os seguintes valores:
- Nome:
<your-compartment-name>
- Descrição
Compartment for <your-description>.
- Compartimento Principal:
<your-tenancy>(root)
- Nome:
- Selecione Criar Compartimento.
Referência: Criando um Compartimento
Se seu nome de usuário estiver no grupo Administrators
, ignore esta seção. Caso contrário, peça ao administrador para adicionar a seguinte política à sua tenancy:
allow group <a-group-your-username-belongs-to> to manage all-resources in compartment <your-compartment-name>
Com esse privilégio, você pode gerenciar todos os recursos em seu compartimento, dando a você direitos administrativos nesse compartimento.
- Na Console: Abra o menu de navegação e selecione Identidade e Segurança. Em Identidade, selecione Políticas.
- Selecione seu compartimento.
- Selecione Criar Política.
- Na página Criar Política, informe os seguintes valores:
- Nome:
manage-<your-compartment-name>-resources
- Descrição:
Allow users to list, create, update, and delete resources in <your-compartment-name>.
- Compartimento:
<your-tenancy>(root)
- Nome:
- Para o Criador de Políticas, informe os seguintes valores:
- Casos de uso da política:
Compartment Management
- Modelos de política comum:
Let compartment admins manage the compartment
- Domínio de identidades: <identity-domain>
- Grupos
<a-group-your-username-belongs-to>
- Local:
<your-compartment-name>
- Casos de uso da política:
- Selecione Criar.
Referência: Políticas Comuns
Crie um bucket no seu compartimento.
Certifique-se de criar seu bucket em
<your-compartment-name>
.2. Descobrir o Recurso
Descubra o bucket criado no seu compartimento.
- Vá para Uso (Descoberta de Recursos).
Duas opções de comando são listadas.
- Selecione a opção de comando que usa
compartment_name
como um comando base:terraform-provider-oci -command=export -compartment_name=<xxx> -output_path=<xxx>
- Atualize o comando base:
- Em vez de
terraform-provider-oci
, use seu comando de link simbólico:tf-oci
- Revise a seção Descrição do Parâmetro para adicionar valores apropriados aos parâmetros no comando base:
- Use o comando export para executar a descoberta de recursos:
-command=export
- Informe o nome do compartimento cujos recursos você está descobrindo:
-compartment_name=<your-compartment-name>
- Crie e depois especifique um diretório para os recursos descobertos:
Exemplo:
-output_path=$HOME/resource-discovery
- Use o comando export para executar a descoberta de recursos:
- Em vez de
- Adicione o seguinte parâmetro da seção Descrição do Parâmetro ao comando base:
services
- Nos nomes de serviço listados para
services
, use:object_storage
- Exemplo:
-services=object_storage
- Para descobrir mais de um serviço, separe os nomes de serviço com uma vírgula.
- Exemplo:
-services=object_storage,core
- Você não precisa de aspas nos nomes de serviço.
- Construa o comando:
Por exemplo:
tf-oci -command=export -compartment_name=<your-compartment-name> -services=object_storage -output_path=$HOME/resource-discovery
Observação
Diagnóstico e Solução de Problemas[ERROR] output_path does not exist: stat /$HOME/resource-discovery: no such file or directory
O comando de descoberta de recursos não cria um diretório para os recursos descobertos. Crie um diretório e especifique o caminho no seu comando.
[ERROR] no output directory specified
O parser é interrompido no parâmetro no qual falta um hífen. Certifique-se de adicionar um traço ao início de cada parâmetro. Por exemplo, se você usar
services
em vez de-services
, o parser não acessará o diretório de saída.
Parabéns! Você criou um arquivo de estado para seu recurso de bucket.
Referências:
3. Atualizar o Recurso
Atualize o nome do seu bucket no arquivo object_storage.tf
e execute os scripts Terraform. Sua conta autentica os scripts e, em seguida, o Terraform atualiza o nome do bucket. Confirme o novo nome do bucket pela Console.
Atualizar o Bucket
- Execute seus scripts do Terraform:
terraform apply
- Quando for solicitada a confirmação, informe
yes
para que o nome do bucket seja substituído.Exemplo de saída:
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Localizar Novo Nome do Bucket na Console
- Abra o menu de navegação e selecione Armazenamento. Em Object Storage & Archive Storage, selecione Buckets.
- Selecione o compartimento:
<your-compartment-name>
. - Na lista de buckets, assinale o nome do bucket.
O nome do bucket agora é
<your-bucket-name>-2
.
O Que Vem a Seguir
Explore outros tutoriais do Terraform:
Para explorar mais informações sobre desenvolvimento com produtos Oracle, confira estes sites: