Provisionar os Recursos

Você pode provisionar os recursos usando o Terraform ou o Terragrunt. Se você usar o Terraform, você deve aplicar as configurações em cada diretório, em uma sequência prescrita. Com a Terragrunt, você pode provisionar todos os recursos com um único comando.

Sobre Arquivos de Estado do Terraform

O Terraform armazena informações de estado para rastrear seus recursos de infraestrutura gerenciados, mapear os recursos implantados para sua configuração, rastrear metadados e melhorar o desempenho de implantações de infraestrutura grandes.

Por default, o arquivo terraform.tfstate é armazenado no host local. Esse comportamento padrão não é ideal nos ambientes de TI nos quais vários usuários precisam criar e destruir os recursos definidos em uma determinada configuração. Para controlar a implantação e o gerenciamento de recursos em um ambiente com vários usuários, armazene os arquivos do estado do Terraform no Oracle Cloud Infrastructure Object Storage e compartilhe os arquivos de estado e bloqueie os arquivos entre todos os usuários. Consulte Usando o Armazenamento de Objetos para Arquivos de Estado do Terraform.

Provisionar os Recursos Usando o Terragrunt

Você pode usar o Terragrunt para provisionar todos os recursos na topologia usando um único comando. Internamente, o Terragrunt chama os comandos do Terraform e trata todas as dependências entre recursos definidas na configuração.

  1. Vá para o diretório examples/full-deployment.
  2. Inicialize os módulos Terraform executando o seguinte comando:
    make init
    O comando inicializa todos os módulos Terraform na configuração, executando terraform init em cada diretório.
  3. Provisione os recursos executando o seguinte comando:
    terragrunt apply-all
    O Terragrunt chama o comando terraform apply para todos os módulos do Terraform na configuração, em uma sequência definida. Todos os recursos foram implantados.

Provisionar os Recursos Usando o Terraform

Se você optar por provisionar os recursos usando o Terraform, deverá aplicar a configuração do Terraform em cada diretório individualmente, em uma sequência prescrita.

  1. Copie examples/full-deployment/terraform.tfvars para cada um dos seguintes subdiretórios em examples/full-deployment:
    common/compartments
    common/configuration
    management/access
    management/network
    management/server_attachment
    management/servers
    peering/network
    peering/routing
    tenant/network
    tenant/servers

    Vá para o diretório examples/full-deployment e informe o seguinte comando para copiar terraform.tfvars em todos os subdiretórios necessários. Para o sake de legibilidade, o comando é mostrado em várias linhas com uma barra invertida (\) no final de cada linha. Copie todas as linhas, incluindo o caractere de barra invertida e cole como um único comando.

    xargs -n 1 cp -v terraform.tfvars<<<"common/compartments/ \
    common/configuration/ management/access/ management/network/ \
    management/server_attachment/ management/servers/ peering/network/ \
    peering/routing/ tenant/network/ tenant/servers/"
  2. Vá para o diretório examples/full-deployment/common/configuration.
  3. Execute os seguintes comandos:
    1. Inicializar a configuração:
      terraform init
    2. Revise os recursos definidos na configuração:
      terraform plan
    3. Aplicar a configuração:
      terraform apply
    A configuração no diretório common/configuration calcula o número de VCNs de tenant e VCNs de pareamento necessárias, o tamanho do CIDR de cada VCN e o mapeamento entre as VCNs de tenant e as VCNs de pareamento. Nenhum recurso é criado quando você aplica essa configuração; os resultados do cálculo são usados quando as VCNs e outros recursos de rede são criados.
  4. Execute os comandos terraform init, terraform plan e terraform apply nos seguintes diretórios em examples/full-deployment na ordem de execução prescrita:
    common/compartments
    peering/network
    management/network
    tenant/network
    management/access
    peering/routing
    management/servers
    management/server_attachment
    tenant/servers

    Depois que você executar terraform apply em todos os diretórios de configuração na ordem prescrita, a topologia será totalmente implantada.

Modificar a Topologia

Para modificar a topologia, você deve atualizar as definições de recursos nas configurações apropriadas do Terraform e aplicar a configuração revisada. A identificação das definições de recursos que precisam ser modificadas requer uma compreensão detalhada do código de exemplo, especificamente os módulos Terraform referenciados em cada diretório e as dependências entre módulos.

As instruções para modificar a topologia estão fora do escopo desta solução.

Remover Todos os Recursos

Você pode remover facilmente todos os recursos implantados usando o Terraform ou o Terragrunt.

  1. Vá para o diretório examples/full-deployment.
  2. Execute um dos seguintes procedimentos:
    • Se você tiver o Terragrunt instalado, execute o seguinte comando:

      terragrunt destroy-all

      O Terragrunt chama o comando terraform destroy para recursos na configuração, em uma sequência definida.

      Se você tentar usar terragrunt destroy-all para limpar uma implantação parcial ou com falha, o seguinte erro poderá ocorrer:

      Error: Unsupported attribute
        on management_rte_attachment.tf line 8, in module "management_rte_attachement":
         8:     data.terraform_remote_state.peering_servers.outputs.routing_instance_1_ip_id,
          |----------------
          | data.terraform_remote_state.peering_servers.outputs is object with 3 attributes
      This object does not have an attribute named "routing_instance_1_ip_id".

      Se esse erro ocorrer, então remova os recursos executando terraform destroy em cada diretório de configuração, conforme descrito a seguir.

    • Para remover os recursos usando a CLI do Terraform, execute terraform destroy em cada diretório de configuração em examples/full-deployment, na ordem a seguir.

      Observação:

      Aguarde a execução do comando em cada diretório antes de prosseguir para o próximo diretório.
      tenant/servers
      management/server_attachment
      management/servers
      peering/routing
      management/access
      tenant/network
      management/network
      peering/network
      common/compartments
      common/configuration