Aplicando Configurações

Depois que o provedor Terraform do Oracle Cloud Infrastructure (OCI) for instalado e configurado e você tiver criado as configurações do Terraform que incluam o provedor e um recurso ou uma origem de dados, poderá executar o Terraform na sua infraestrutura do OCI.

Dica

Consulte Tutoriais para obter instruções e exemplos passo a passo.

Inicializando o Terraform

Execute o comando a seguir em um diretório que contenha seus arquivos de configuração do Terraform para inicializar o Terraform:

terraform init

Saída do exemplo:

Initializing the backend...

Initializing provider plugins...
- Finding latest version of hashicorp/oci...
- Installing hashicorp/oci v3.96.0...
- Installed hashicorp/oci v3.96.0 (signed by HashiCorp)

The following providers do not have any version constraints in configuration,
so the latest version was installed.
...
* hashicorp/oci: version = "~> 3.96.0"

Terraform has been successfully initialized!

Se o comando resultar em um erro, verifique se o provedor Terraform do OCI está configurado corretamente.

Verificando Alterações

Sem fazer alterações nos recursos existentes do OCI, o Terraform poderá retornar uma lista de alterações que serão feitas com base em suas configurações, se você optar por aplicá-las. Esta lista é chamada de plano de execução. Para exibir o plano de execução, execute o seguinte comando:

terraform plan

Saída do exemplo:

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # oci_identity_compartment.tf-compartment will be created
  + resource "oci_identity_compartment" "tf-compartment" {
      + compartment_id = "exampleuniqueID"
      + defined_tags   = (known after apply)
      + description    = "Compartment for Terraform resources."
      + freeform_tags  = (known after apply)
      + id             = (known after apply)
      + inactive_state = (known after apply)
      + is_accessible  = (known after apply)
      + name           = <your-compartment-name>
      + state          = (known after apply)
      + time_created   = (known after apply)
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Revise o plano e verifique se as alterações mostradas nele correspondem às suas expectativas.

Alterações Destrutivas

Alguns recursos do OCI têm propriedades que não podem ser atualizadas pelo Terraform sem destruir o recurso existente e recriá-lo com o novo valor de propriedade. Quando você executa terraform plan e tenta modificar uma propriedade não atualizável, o Terraform indica que recurso será substituído e que propriedade(s) não pode(em) ser atualizada(s).

Por exemplo, o plano de execução a seguir prefixa um recurso que será excluído e recriado com -/+ e anexa o comentário # forces replacement à propriedade que não pode ser atualizada:

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
-/+ destroy and then create replacement
 
Terraform will perform the following actions:
 
  # oci_core_vcn.vcn must be replaced
-/+ resource "oci_core_vcn" "vcn" {
      ~ cidr_block               = "10.0.0.0/16" -> "11.0.0.0/16" # forces replacement
      ~ cidr_blocks              = [
          - "10.0.0.0/16",
        ] -> (known after apply)
        compartment_id           = "ocid1.compartment.oc1..exampleuniqueID"
      ~ default_dhcp_options_id  = "ocid1.dhcpoptions.oc1.phx.exampleuniqueID" -> (known after apply)
      ~ default_route_table_id   = "ocid1.routetable.oc1.phx.exampleuniqueID" -> (known after apply)
      ~ default_security_list_id = "ocid1.securitylist.oc1.phx.exampleuniqueID" -> (known after apply)
      ~ defined_tags             = {} -> (known after apply)
        display_name             = "vcn"
        dns_label                = "vcn"
      ~ freeform_tags            = {} -> (known after apply)
      ~ id                       = "ocid1.vcn.oc1.phx.exampleuniqueID" -> (known after apply)
      + ipv6cidr_block           = (known after apply)
      + ipv6public_cidr_block    = (known after apply)
      + is_ipv6enabled           = (known after apply)
      ~ state                    = "AVAILABLE" -> (known after apply)
      ~ time_created             = "2021-01-25 20:54:53.255 +0000 UTC" -> (known after apply)
      ~ vcn_domain_name          = "vcn.oraclevcn.com" -> (known after apply)
    }
 
Plan: 1 to add, 0 to change, 1 to destroy.
Cuidado

Uma exclusão forçada e recriação de um recurso também pode resultar na substituição de um recurso pai. Sempre execute terraform plan antes de executar terraform apply para ver quais recursos serão afetados.

A referência completa dos recursos e origens de dados suportados do provedor Terraform do OCI contém detalhes de uso, argumento e atributo. A referência completa está disponível em docs.oracle.com e Terraform Registry.

A referência indica quais propriedades são atualizáveis.

Aplicando Alterações

Quando tiver certeza de que suas configurações resultarão em suas alterações esperadas, você poderá aplicar suas configurações do Terraform executando o seguinte comando:

terraform apply

Quando for solicitada a confirmação, digite yes para que seu recurso seja criado. Depois de executar o comando apply, a saída é exibida no terminal. Saída do exemplo:

oci_identity_compartment.tf-compartment: Creating...
oci_identity_compartment.tf-compartment: Creation complete after 9s [id=exampleuniqueID]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Outputs:

compartment-OCID = ocid1.compartment.exampleuniqueID
compartment-name = <your-compartment-name>
Cuidado

Se você fizer alterações nos recursos gerenciados com o Terraform fora do Terraform, essas alterações serão substituídas na próxima vez que você usar o Terraform para aplicar as configurações. Adicione o parâmetro ignore_changes aos recursos do arquivo de configuração que você não deseja substituir.