Configurar uma Infraestrutura Simples com o OCI Terraform

Use o Terraform para configurar uma infraestrutura simples na sua conta do Oracle Cloud Infrastructure.

As principais tarefas incluem:

  • Copie scripts existentes de outros tutoriais do Terraform.
  • Edite os scripts para combinar todos os recursos em um diretório.
  • Execute um comando apply para criar os seguintes recursos:
    • um compartimento
    • uma rede virtual na nuvem
    • uma instância de computação
Um diagrama dos componentes necessários para criar uma Infraestrutura simples com o Terraform. Em um ambiente Linux local, o usuário cria uma rede virtual na nuvem com o Terraform. Essa rede tem uma sub-rede pública e uma instância de computação que pode ser acessada pela internet. A rede também tem uma sub-rede privada que se conecta à internet por meio de um gateway NAT e também se conecta de forma privada ao Oracle Services Network. O bloco CIDR da rede virtual na nuvem é 10.0.0.0/16, para a sub-rede pública é 10.0.0.0/24 e para a sub-rede privada é o diagrama 10.0.1.0/24.A de um usuário conectado de uma máquina local a uma tenancy do Oracle Cloud Infrastructure.

Para obter mais informações, consulte:

Antes de Começar

Para executar este tutorial com sucesso, você precisa ter o seguinte:

Requisitos

1. Preparar

Copie os scripts criados nos tutoriais anteriores do Terraform para um novo diretório.

Copiar Recursos Declarados
  1. No diretório $HOME, crie um diretório chamado tf-simple-infrastructure e passe para esse diretório.
    mkdir tf-simple-infrastructure
    cd tf-simple-infrastructure
  2. Copie os scripts do Terraform do diretório tf-provider.
    cp ../tf-provider/*.tf .
    Observação

    Não copie os arquivos de estado (terraform.tfstate ou terraform.tfstate.backup). Esses arquivos contêm o estado dos recursos do diretório atual. Depois de executar os scripts nesse novo diretório, você obtém um novo arquivo de estado.
  3. Renomeie o arquivo outputs.tf como outputs1.tf.
    mv outputs.tf outputs1.tf
  4. Copie os scripts do Terraform do diretório tf-compartment.
    cp ../tf-compartment/*.tf .
    Observação

    Como só é necessário um arquivo de provedor por diretório, não há danos quando o comando de cópia substitui um arquivo provider.tf por outro.
  5. Renomeie o arquivo outputs.tf como outputs2.tf.
    mv outputs.tf outputs2.tf
  6. Copie os scripts do Terraform do diretório tf-compute.
    cp ../tf-compute/*.tf .
  7. Renomeie o arquivo outputs.tf como outputs3.tf.
    mv outputs.tf outputs3.tf
  8. Copie os scripts do Terraform do diretório tf-vcn.
    cp ../tf-vcn/*.tf .
  9. Renomeie o arquivo outputs.tf como outputs4.tf.
    mv outputs.tf outputs4.tf
  10. Concatene os quatro arquivos de saída.
    cat outputs1.tf outputs2.tf outputs3.tf outputs4.tf > outputs.tf
  11. Remova os arquivos outputs1.tf, outputs2.tf, outputs3.tf e outputs4.tf do diretório tf-simple-infrastructure.
    rm outputs1.tf outputs2.tf outputs3.tf outputs4.tf
  12. Confirme se você tem os arquivos a seguir no diretório.
    ls
    availability-domains.tf
    compartment.tf
    compute.tf
    outputs.tf
    private-security-list.tf
    private-subnet.tf
    provider.tf
    public-security-list.tf
    public-subnet.tf
    vcn-module.tf
    versions.tf

2. Editar os Scripts

Edite os scripts para designar um novo nome ao seu compartimento e para substituir todos os OCIDs com código fixo por referências.

Atualizar o Nome do Compartimento
  1. Abra o arquivo compartment.tf.
  2. Atualize <your-compartment-name> com <your-new-compartment-name>, caso você já tenha criado <your-compartment-name> nos tutoriais anteriores.
    # Source from https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/identity_compartment
    
    resource "oci_identity_compartment" "tf-compartment" {
        # Required
        compartment_id = "<tenancy-ocid>"
        description = "Compartment for Terraform resources."
        name = "<your-new-compartment-name>"
    }
Atualizar Referências de Compartimento
Localizar a Referência ao OCID do Compartimento

Nos tutoriais anteriores, você usou um código fixo no OCID do compartimento. Agora, atualize <compartment-ocid> para fazer referência ao compartimento em compartment.tf.

  1. Descubra como o OCID do compartimento é referenciado no arquivo outputs.tf.
    grep -R compartment outputs.tf

    Exemplo de saída:

    # Outputs for compartment
    output "compartment-name" {
      value = oci_identity_compartment.tf-compartment.name
    output "compartment-OCID" {
      value = oci_identity_compartment.tf-compartment.id
  2. Copie o valor do OCID do compartimento para o bloco de notas:
    oci_identity_compartment.tf-compartment.id
    
Atualizar OCIDs de Compartimento com Código Fixo
  1. Localize quais arquivos fazem referência a compartment_id.
    grep -Rn compartment_id

    Exemplo de saída:

    availability-domains.tf:7:  compartment_id = "<tenancy-ocid>"
    compartment.tf:3:   compartment_id = "<tenancy-ocid>"
    compute.tf:4:  compartment_id = "<compartment-ocid>"
    private-security-list.tf:6:  compartment_id = "<compartment-ocid>"
    private-subnet.tf:6:  compartment_id = "<compartment-ocid>"
    public-security-list.tf:6:  compartment_id = "<compartment-ocid>"
    public-subnet.tf:6:  compartment_id = "<compartment-ocid>"
    vcn-module.tf:9:  compartment_id = "<compartment-ocid>"
    Observação

    Ambos os arquivos availability-domains.tf e compartment.tf apontam para <tenancy-ocid>. Por exemplo, o arquivo compartment.tf aponta para a tenancy como seu compartimento principal e, em seguida, cria um compartimento abaixo dele. Não edite o compartment_id nesses dois arquivos.
  2. Exceto pelos arquivos availability-domains.tf e compartment.tf, nos arquivos restantes que resultam do comando grep, substitua compartment_id = "<compartment-ocid>" por:
    compartment_id = oci_identity_compartment.tf-compartment.id
Atualizar Referências de Sub-rede
Localizar a Referência ao OCID da Sub-rede

No tutorial Criar uma Instância de Computação, você usou código fixo na sub-rede pública que hospeda a instância de computação. Agora, atualize o arquivo compute.tf para fazer referência ao public-subnet-OCID do arquivo public-subnet.tf.

  1. Descubra como subnet OCID é referenciado no arquivo outputs.tf.
    grep -R subnet outputs.tf

    Exemplo de saída:

    ...
    # Outputs for private subnet
    output "private-subnet-name" {
      value = oci_core_subnet.vcn-private-subnet.display_name
    output "private-subnet-OCID" {
      value = oci_core_subnet.vcn-private-subnet.id
    # Outputs for public subnet
    output "public-subnet-name" {
      value = oci_core_subnet.vcn-public-subnet.display_name
    output "public-subnet-OCID" {
      value = oci_core_subnet.vcn-public-subnet.id
  2. Copie o valor do OCID da sub-rede pública para o bloco de notas:
    oci_core_subnet.vcn-public-subnet.id
    
Atualizar OCIDs de Sub-rede com Código Fixo
  1. Localize quais arquivos fazem referência a subnet_id.
    grep -Rn subnet_id

    Exemplo de saída:

    compute.tf:19:        subnet_id = "<your-public-subnet-ocid>"
  2. No arquivo compute.tf que resulta do comando grep, substitua compartment_id = "<your-public-subnet-ocid>" por:
    subnet_id = oci_core_subnet.vcn-public-subnet.id
    

Parabéns! Todos os scripts agora estão prontos para serem executados.

3. Criar uma Infraestrutura Simples

Execute os scripts do Terraform para criar um compartimento, uma rede virtual na nuvem e uma instância de computação na sub-rede pública.

Executar os Scripts
  1. Inicialize um diretório de trabalho no diretório tf-simple-infrastructure.
    terraform init
  2. Crie um plano de execução e verifique as alterações que o Terraform planeja fazer na sua conta:
    terraform plan

    Exemplo de saída:

    ....
    Terraform will perform the following actions:
    
      # oci_core_instance.ubuntu_instance will be created
    ....
    Plan: 14 to add, 0 to change, 0 to destroy.
    
    Changes to Outputs:
      + all-availability-domains-in-your-tenancy              = [
    ....
  3. Crie sua infraestrutura simples com o Terraform:
    terraform apply

    Quando for solicitada a confirmação, digite yes para que seus recursos sejam criados.

Observar a Criação na Console (Opcional)
  1. abra o menu de navegação , selecione Identity & Security. Em Identidade, selecione Compartimentos.
  2. Atualize a página até ver o nome do compartimento.
  3. Abra o menu de navegação , selecione Rede e selecione Redes virtuais na nuvem.
  4. Selecione seu compartimento.

    Se você não encontrar seu compartimento, atualize a página.

  5. Selecione sua VCN e, em seguida, revise os recursos criados.
  6. Abra o menu de navegação e selecione Computação. Em Compute, selecione Instâncias.
  7. Observe que sua instância aparece na lista de instâncias.
Revisar as Saídas

Revise as saídas no terminal de saída.

Exemplo de saída exibida no terminal:
oci_identity_compartment.tf-compartment: Creating...
oci_identity_compartment.tf-compartment: Creation complete after 7s [id=xxx]
module.vcn.oci_core_vcn.vcn: Creating...
module.vcn.oci_core_vcn.vcn: Creation complete after 2s [id=xxx]
module.vcn.oci_core_internet_gateway.ig[0]: Creating...
module.vcn.oci_core_nat_gateway.nat_gateway[0]: Creating...
module.vcn.oci_core_default_security_list.lockdown[0]: Creating...
module.vcn.oci_core_service_gateway.service_gateway[0]: Creating...
oci_core_security_list.private-security-list: Creating...
oci_core_security_list.public-security-list: Creating...
module.vcn.oci_core_internet_gateway.ig[0]: Creation complete after 1s [id=xxx]
module.vcn.oci_core_route_table.ig[0]: Creating...
oci_core_security_list.public-security-list: Creation complete after 1s [id=xxx]
module.vcn.oci_core_default_security_list.lockdown[0]: Creation complete after 1s [id=xxx]
oci_core_security_list.private-security-list: Creation complete after 1s [id=xxx]
module.vcn.oci_core_route_table.ig[0]: Creation complete after 1s [id=xxx]
oci_core_subnet.vcn-public-subnet: Creating...
module.vcn.oci_core_nat_gateway.nat_gateway[0]: Creation complete after 2s [id=xxx]
module.vcn.oci_core_service_gateway.service_gateway[0]: Creation complete after 3s [id=xxx]
module.vcn.oci_core_route_table.service_gw[0]: Creating...
module.vcn.oci_core_route_table.nat[0]: Creating...
module.vcn.oci_core_route_table.service_gw[0]: Creation complete after 0s [id=xxx]
module.vcn.oci_core_route_table.nat[0]: Creation complete after 1s [id=xxx]
oci_core_subnet.vcn-private-subnet: Creating...
oci_core_subnet.vcn-public-subnet: Creation complete after 2s [id=xxx]
oci_core_instance.ubuntu_instance: Creating...
oci_core_subnet.vcn-private-subnet: Creation complete after 2s [id=xxx]
oci_core_instance.ubuntu_instance: Still creating... [10s elapsed]
oci_core_instance.ubuntu_instance: Still creating... [20s elapsed]
oci_core_instance.ubuntu_instance: Still creating... [30s elapsed]
oci_core_instance.ubuntu_instance: Creation complete after 38s [id=xxx]

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

Referências:

O Que Vem a Seguir

Parabéns! Você criou com sucesso uma infraestrutura simples usando o Terraform, na sua conta do Oracle Cloud Infrastructure.

Agora que você sabe como usar origens de dados, recursos e módulos, vá em frente e adicione novos objetos do Provedor do Oracle Cloud Infrastructure à sua infraestrutura simples.

Para explorar mais informações sobre desenvolvimento com produtos Oracle, confira estes sites: