Introdução

Esta amostra fornece um passo a passo das tarefas necessárias para criar e implantar uma instância de computação do Oracle Cloud Infrastructure usando o serviço Resource Manager.

Esta página ajuda você a começar a usar o serviço Resource Manager. Use este passo a passo de tarefas para criar e implantar uma instância de computação do Oracle Cloud Infrastructure usando uma configuração pré-criada do Terraform ou sua própria configuração do Terraform. Para obter uma breve introdução ao Resource Manager, consulte Visão Geral do Serviço Resource Manager.

Destaques

Além de fornecer uma configuração pré-criada do Terraform para criar uma instância do serviço Compute, este passo a passo fornece amostras que demonstram como gravar uma configuração do Terraform. Seja qual for a configuração usada (pré-criada ou a sua), o serviço Resource Manager usa o Terraform para provisionar os recursos definidos. Os recursos são organizados em pilhas, que você cria e provisiona usando jobs.

O passo a passo aborda as seguintes tarefas:

  • Selecione ou crie uma configuração do Terraform.
  • Provisionar a infraestrutura:
    • Crie uma pilha para provisionar sua infraestrutura.
    • Execute um job de planejamento em relação à sua pilha, o qual faz parsing da sua configuração e cria um plano de execução.
    • Revise o plano de execução gerado.
    • Execute um job de aplicação na sua pilha, o qual provisione seus recursos. O job de aplicação segue o plano de execução, que se baseia na sua configuração do Terraform.
    • Revise a infraestrutura resultante.
  • Opcionalmente, provisione a infraestrutura em mais ambientes, usando a mesma configuração do Terraform.

Antes de começar

Certifique-se de ter instalado, obtido ou criado os pré-requisitos:

  • Uma tenancy do Oracle Cloud Infrastructure para cada ambiente em que você deseja provisionar recursos. Por exemplo, você pode provisionar os recursos definidos em uma configuração do Terraform para ambientes de desenvolvimento, preparação e produção.
    Observação

    É uma prática recomendada localizar cada ambiente em sua própria tenancy.
  • O OCID  do compartimento no qual você deseja criar a pilha.
  • Uma conta de usuário que inclua o seguinte:
  • Se você quiser usar a CLI do Oracle Cloud Infrastructure, instale e configure a CLI primeiro. Consulte Início Rápido e Configurando a CLI

Tarefa 1a: Selecione uma Configuração predefinida do Terraform

Você pode selecionar o modelo da instância de computação com sua configuração pré-criada do Terraform, em vez de gravar sua própria configuração. Estas etapas orientam você no processo de criação da pilha.

  1. Clique no link a seguir para iniciar a página Criar pilha com o modelo de instância de computação já selecionado.

    Iniciar pilha com modelo de Instância de Computação

  2. Na página Criar pilha, digite um Nome para a nova pilha (ou aceite o nome padrão fornecido). Evite fornecer informações confidenciais.
  3. Na lista drop-down Criar no compartimento, selecione o compartimento no qual você deseja criar a pilha.

    Um compartimento do escopo da lista é definido por padrão.

  4. Clique em Próximo.

    O painel Configurar variáveis exibe variáveis da configuração do Terraform.

  5. Revise as variáveis e faça as alterações necessárias.

    Importante

    Não adicione sua chave privada ou outras informações confidenciais às variáveis de configuração.
  6. Clique em Próximo.
  7. No painel Revisão, verifique a configuração da pilha.

    Para fins desta instrução, deixe Executar aplicação em branco. (Use esta opção para provisionar automaticamente a infraestrutura quando a pilha for criada.)

  8. Clique em Criar para criar sua pilha.

    A página de detalhes da nova pilha é exibida.

    Parabéns! Você criou uma pilha com a configuração pré-criada do Terraform no modelo de instância de computação. A próxima etapa é provisionar a infraestrutura.

Tarefa 1b: Criar Sua Própria Configuração do Terraform

Se você não selecionou uma configuração pré-criada do Terraform, siga estas etapas para criar a sua própria.

Uma configuração do Terraform é um arquivo que codifica sua infraestrutura. A configuração define o provedor Terraform, os recursos que você pretende provisionar, variáveis e instruções específicas para provisionar os recursos.

Esta página o orienta por meio da seleção do modelo da Instância de computação com sua configuração pré-construída do Terraform ou da gravação da sua própria configuração usando vários arquivos .tf em um arquivo .zip.

Para obter mais informações sobre como gravar configurações para uso com o Resource Manager, consulte Configurações do Terraform para o Resource Manager e Configuração do Terraform.

Cuidado

Não forneça credenciais do usuário ou outras informações confidenciais na configuração do Terraform.
Criar um Provedor do Oracle Cloud Infrastructure

A amostra de código a seguir cria um provedor Terraform básico do Oracle Cloud Infrastructure. Você pode fornecer valores como variáveis que são definidas em um arquivo de variáveis ou no arquivo de definição do provedor (. tf). Para obter mais informações, consulte Configuração do Provedor.

provider "oci" {
  region = "${var.region}"
}
Definir Variáveis

Defina as variáveis que você deseja usar ao provisionar seus recursos. Uma prática recomendada é criar um arquivo "variáveis" no pacote de configuração do qual você faz upload. Veja a seguir um exemplo de um arquivo de configuração que chamamos de variables.tf. Para obter mais informações sobre o uso de variáveis, consulte Variáveis de Entrada. Consulte também Configurando Variáveis de Entrada.


variable "compartment_ocid" {
	default = "ocid1.compartment.oc1..uniqueid"
}

variable "region" {
	default = "us-phoenix-1"
}

variable "InstanceImageOCID" {
  type = "map"
  
  default = {
    // See https://docs.cloud.oracle.com/images/
    // Platform image "Oracle-Linux-7.5-2018.10.16-0"
    "eu-frankfurt-1" = "ocid1.image.oc1.eu-frankfurt-1.aaaaaaaaitzn6tdyjer7jl34h2ujz74jwy5nkbukbh55ekp6oyzwrtfa4zma"
    "uk-london-1" = "ocid1.image.oc1.uk-london-1.aaaaaaaa32voyikkkzfxyo4xbdmadc2dmvorfxxgdhpnk6dw64fa3l4jh7wa"
    "us-ashburn-1" = "ocid1.image.oc1.iad.aaaaaaaageeenzyuxgia726xur4ztaoxbxyjlxogdhreu3ngfj2gji3bayda"
    "us-phoenix-1" = "ocid1.image.oc1.phx.aaaaaaaaoqj42sokaoh42l76wsyhn3k2beuntrh5maj3gmgmzeyr55zzrwwa"
  }
}


variable "ssh_public_key" {
	default = "ssh-rsa <public_key_value>"
}

# Defines the number of instances to deploy
variable "NumInstances" {
    default = "1"
}

variable "InstanceShape" {
    default = "VM.Standard2.1"
}

# Specifies the Availability Domain
variable "localAD" {
    default = "<AD_name>"
}

Para obter mais informações sobre variáveis declaradas nos exemplos anteriores, consulte o seguinte:

Definir um Documento de Esquema (Opcional)

Com um documento de esquema, você pode reutilizar uma configuração do Terraform não editada em ambientes de desenvolvimento, preparação e produção. O serviço Resource Manager solicita valores de variável quando você cria uma pilha com uma configuração do Terraform que inclui um documento de esquema.

Os documentos de esquema são recomendados para configurações do Terraform ao usar o Resource Manager. A inclusão de um documento de esquema permite que você estenda páginas na Console do Oracle Cloud Infrastructure. Facilite a entrada de variáveis na página Criar pilha exibindo os controles de chave SSH e nomeando, agrupando, preenchendo dinamicamente os valores e muito mais. Defina o texto na guia Informações do Aplicativo da página Detalhes da pilha que é aberta para uma pilha criada.

Veja a seguir o conteúdo de um exemplo de documento de esquema (schema.yaml) que abrange os detalhes básicos neste cenário.

Observação

Para reutilizar facilmente esse documento de esquema, especifique valores padrão para cada variável.
locale: "en"

variableGroups:
  - title: "Destination"
    variables:
      - compartment_ocid
      - ${region}
      - ${localAD}
  - title: "Instance Details"
    variables:
      - ${numInstances}
      - ${instanceImageOCID}
      - ${instanceShape}
  - title: "SSH Public Key"
    variables:
      - ${ssh_public_key}

variables:
  compartment_ocid:
    type: oci:identity:compartment:id
    required: true
    title: Compartment OCID

  region:
    type: oci:identity:region:name
    required: true
    title: Region

  localAD:
    type: oci:identity:availabilitydomain:name
    required: true
    title: Availability Domain
    dependsOn:
      compartmentId: compartment_ocid

  numInstances:
    type: integer
    required: true
    title: Number of Instances
    minimum: 1
    maximum: 10
    multipleOf: 1

  instanceImageOCID:
    type: oci:core:image:id
    required: true
    title: Instance Image OCID
    dependsOn:
      compartmentId: compartment_ocid

  instanceShape:
    type: oci:core:instanceshape:name
    required: true
    title: Instance Shape
    default: "VM.Standard.E2.1.Micro"
    dependsOn:
      compartmentId: compartment_ocid

  ssh_public_key:
    type: oci:core:ssh:publickey
    required: true
    title: SSH Public Key
Criar uma VCN (Rede Virtual na Nuvem)

O exemplo de código a seguir cria uma VCN (rede virtual na nuvem) do Oracle Cloud Infrastructure chamada "ExampleVCN".

resource "oci_core_virtual_network" "ExampleVCN" {
  cidr_block = "10.1.0.0/16"
  compartment_id = "${var.compartment_ocid}"
  display_name = "TFExampleVCN"
  dns_label = "tfexamplevcn"
}
Criar uma Sub-rede em sua VCN

O exemplo de código a seguir cria uma sub-rede com o nome "ExampleSubnet" na VCN definida na amostra de código anterior.

resource "oci_core_subnet" "ExampleSubnet" {
  availability_domain = "${var.localAD}"
  cidr_block = "10.1.20.0/24"
  display_name = "TFExampleSubnet"
  dns_label = "tfexamplesubnet"
  security_list_ids = ["${oci_core_virtual_network.ExampleVCN.default_security_list_id}"]
  compartment_id = "${var.compartment_ocid}"
  vcn_id = "${oci_core_virtual_network.ExampleVCN.id}"
  route_table_id = "${oci_core_route_table.ExampleRT.id}"
  dhcp_options_id = "${oci_core_virtual_network.ExampleVCN.default_dhcp_options_id}"
}
Criar um Gateway de Internet

A amostra de código a seguir cria um gateway de internet chamado "ExampleIG" na VCN que criamos.

resource "oci_core_internet_gateway" "ExampleIG" {
  compartment_id = "${var.compartment_ocid}"
  display_name = "TFExampleIG"
  vcn_id = "${oci_core_virtual_network.ExampleVCN.id}"
}
Criar uma Tabela de Roteamento Básica

A amostra de código a seguir cria uma tabela de roteamento básica do Oracle Cloud Infrastructure na VCN e, em seguida, aplica duas regras de roteamento.

resource "oci_core_route_table" "ExampleRT" {
  compartment_id = "${var.compartment_ocid}"
  vcn_id = "${oci_core_virtual_network.ExampleVCN.id}"
  display_name = "TFExampleRouteTable"
  route_rules {
    cidr_block = "0.0.0.0/0"
    network_entity_id = "${oci_core_internet_gateway.ExampleIG.id}"
  }
}
Criar uma Instância do Serviço Compute

O exemplo de código estendido a seguir cria uma instância do Oracle Cloud Infrastructure. O código também faz referência à imagem na qual a instância de computação é criada, define o tamanho do volume de inicialização, adiciona metadados essenciais e aplica tags de formato livre e definidas.

resource "oci_core_instance" "TFInstance" {
  count = "${var.NumInstances}"
  availability_domain = "${var.localAD}"
  compartment_id = "${var.compartment_ocid}"
  display_name = "TFInstance${count.index}"
  shape = "${var.InstanceShape}"
 
  create_vnic_details {
    subnet_id = "${oci_core_subnet.ExampleSubnet.id}"
    display_name = "primaryvnic"
    assign_public_ip = true
    hostname_label = "tfexampleinstance${count.index}"
  }
 
  source_details {
    source_type = "image"
    source_id = "${var.InstanceImageOCID[var.region]}"
 
    # Apply this to set the size of the boot volume that's created for this instance.
    # Otherwise, the default boot volume size of the image is used.
    # This should only be specified when source_type is set to "image".
    #boot_volume_size_in_gbs = "60"
  }


    # Apply the following flag only if you wish to preserve the attached boot volume upon destroying this instance
  # Setting this and destroying the instance will result in a boot volume that should be managed outside of this config.
  # When changing this value, make sure to run 'terraform apply' so that it takes effect before the resource is destroyed.
  #preserve_boot_volume = true
 
  metadata = {
    ssh_authorized_keys = "${var.ssh_public_key}"
  
  }
  timeouts {
    create = "60m"
  }
}
Finalizar a Configuração

Certifique-se de que todos os arquivos de configuração estejam em um único diretório. Você pode armazenar seu arquivo de configuração do Terraform localmente ou em um sistema de controle de código-fonte. Para obter mais informações sobre como armazenar seu arquivo em um sistema de controle de código-fonte, consulte Gerenciando Provedores de Origem de Configuração. Onde quer que seu arquivo seja armazenado, você poderá selecioná-lo ao criar uma pilha usando a CLI ou a Console.

Importante

Certifique-se de que o arquivo de configuração do Terraform seja válido. Consulte Criando Configurações e Configurações do Terraform para o Resource Manager.

Tarefa 2: Provisionar a Infraestrutura

Use sua configuração do Terraform para criar e implantar sua infraestrutura executando as seguintes ações:

  1. Se você criou sua própria configuração do Terraform, siga estas etapas para criar uma pilha em um compartimento de tenancy à sua escolha. (Se você tiver selecionado uma configuração predefinida, ignore esta etapa.)

    Para origens de configuração do Terraform suportadas com o Resource Manager, consulte Onde Armazenar Suas Configurações do Terraform.

    Uma pilha é um conjunto de recursos que você pode executar como um grupo. Todos os recursos especificados na sua configuração são provisionados na pilha criada.

    Você pode criar uma pilha com base em um arquivo remoto com controle de versão em um sistema de controle de código-fonte (como Git), um Object Storage bucket ou um arquivo .zip acessado localmente que você faz upload. Veja a seguir instruções para um arquivo local.

    Para criar uma pilha com base no seu arquivo .zip (Console)
    1. Abra o menu de navegação e clique em Serviços ao Desenvolvedor. Em Resource Manager, clique em Pilhas.
    2. Em Escopo da Lista, selecione um compartimento no qual você tenha permissão para trabalhar.

    3. Clique em Criar pilha.

      A página Criar pilha é aberta, com a guia Informações da pilha selecionada.

    4. Na página Criar pilha, em Escolher a origem da configuração do Terraform, selecione Minha configuração.

    5. Em Configuração da pilha, clique em . Arquivo zip e adicione a configuração do Terraform.

      Você pode arrastar e soltar o arquivo .zip de configuração do Terraform no controle ou clicar em Procurar e navegar até o local do arquivo .zip.

      Você também pode armazenar sua configuração remotamente. Por exemplo, armazene a configuração no Git ou em um bucket do Object Storage.

      A página é preenchida com informações contidas na configuração do Terraform.

    6. Informe valores para os campos restantes.
      Nome Descrição
      Usar provedores personalizados Selecione esta opção para usar provedores personalizados e, em seguida, selecione o bucket que contém os provedores personalizados.
      Nome Nome da pilha. Você pode aceitar o nome padrão fornecido. Evite fornecer informações confidenciais.
      Descrição Descrição da pilha (opcional).
      Criar no compartimento Compartimento no qual você deseja criar a pilha. Um compartimento do escopo da lista é definido por padrão.
      Versão do Terraform Versão que você deseja para a configuração do Terraform.
      Tags Opcionalmente, aplique tags à pilha.
    7. Clique em Próximo.

      O painel Configurar variáveis lista variáveis da configuração do Terraform.

    8. Revise as variáveis e altere conforme necessário.

      Não adicione sua chave privada ou outras informações confidenciais às variáveis de configuração.
    9. Clique em Próximo.

    10. No painel Revisão , verifique a configuração da pilha.

    11. Para provisionar recursos automaticamente na criação da pilha, selecione Executar aplicação.

    12. Clique em Criar para criar a pilha.

      A pilha é criada e sua página de Detalhes da pilha é aberta.

      Se você selecionou Executar aplicação, o Resource Manager executará a ação de aplicação na nova pilha.

    Para criar uma pilha com base no seu arquivo .zip (CLI)

    Use o comando relacionado à localização do arquivo.

    Para criar uma pilha com base em um arquivo remoto com controle de versão

    Use o comando oci resource-manager stack create-from-git-provider e os parâmetros necessários para criar uma pilha com base no Git.

    oci resource-manager stack create-from-git-provider [OPTIONS]

    Para obter uma lista completa de parâmetros e valores para comandos da CLI, consulte a Referência de Linha de Comando do Resource Manager.

    Exemplo de Solicitação
    oci resource-manager stack create-from-git-provider --compartment-id ocid1.tenancy.oc1..uniqueid --config-source-configuration-source-provider-id ocid.ormconfigsourceprovider.oc1..uniqueid --config-source-repository-url https://github.com/user/repo.git --config-source-branch-name mybranch --display-name "My Stack from Git" --description "My Test" --variables file://variables.json --working-directory ""
    Para criar uma pilha com base no seu arquivo .zip
    Observação

    No Windows, certifique-se de que o arquivo zip e os arquivos variables.json estejam no mesmo diretório no qual você está executando a CLI. No momento, a CLI tem uma limitação no Windows que impede o tratamento correto dos arquivos se um deles estiver em um subdiretório.

    Use o comando oci resource-manager stack create e os parâmetros necessários para criar uma pilha com base em um arquivo zip local.

    oci resource-manager stack create [OPTIONS]

    Para obter uma lista completa de parâmetros e valores para comandos da CLI, consulte a Referência de Linha de Comando do Resource Manager.

    Exemplo de Solicitação
    oci resource-manager stack create --compartment-id ocid1.tenancy.oc1..uniqueid --config-source vcn.zip --variables file://variables.json --display-name "My Example Stack" --description "My Tutorial to Create a VCN" --working-directory ""
    Exemplo de Resposta
    {
      "data": {
        config-source": 
        {
          "working-directory": null,
          "config-source-type": "ZIP_UPLOAD"
        },
        "defined-tags": {},
        "description": "My Tutorial to Create a VCN",
        "display-name": "My Example Stack",
        "freeform-tags": {},
        "id": "ocid1.ormstack.oc1..uniqueid",
        "lifecycle-state": "ACTIVE",
        "time-created": "2019-04-03T18:26:56.299000+00:00",
        "variables": 
        {
          "compartment_ocid": "ocid1.compartment.oc1..uniqueid", 
          "region": "us-phoenix-1"
        }
      }
    }
  2. Gere um plano de execução.

    O job de planejamento faz parsing da sua configuração para criar um "plano de execução", que é uma representação passo a passo da implantação planejada em entradas de log do job. Depois que o job de planejamento for concluído, você poderá avaliar o plano de execução exibindo as entradas do log do job para confirmar que ele executa as operações esperadas e na sequência desejada.

    Observação

    Você poderá ignorar esta etapa se tiver selecionado Executar aplicação ao criar a pilha. Nesse caso, os recursos já foram provisionados.
    Para executar um job de planejamento (Console)
    1. Abra o menu de navegação e clique em Serviços ao Desenvolvedor. Em Resource Manager, clique em Pilhas.
    2. Em Escopo da Lista, selecione um compartimento no qual você tenha permissão para trabalhar.

    3. Clique no nome da pilha desejada.

      A página Detalhes da pilha é aberta.

    4. Clique em Planejar.

    5. No painel Plano, revise o Nome e, opcionalmente, altere-o.

    6. Clique em Planejar.

      O job do plano é criado. O novo job é listado em Jobs.

      Monitore o status do job (estado do ciclo de vida) obtendo os detalhes do job. Bem-sucedido (SUCCEEDED) indica que o job foi concluído. Dependendo da complexidade do job, a operação pode demorar um pouco. Enquanto o job for executado ou depois que ele for concluído, você poderá obter o conteúdo dos logs do job.

    Para executar um job de planejamento (CLI)

    Use o comando oci resource-manager job create-plan-job e os parâmetros necessários para executar um job de planejamento.

    oci resource-manager job create-plan-job [OPTIONS]

    Para obter uma lista completa de parâmetros e valores para comandos da CLI, consulte a Referência de Linha de Comando do Resource Manager.

    Monitore o status do job (estado do ciclo de vida) obtendo os detalhes do job. Bem-sucedido (SUCCEEDED) indica que o job foi concluído. Dependendo da complexidade do job, a operação pode demorar um pouco. Enquanto o job for executado ou depois que ele for concluído, você poderá obter o conteúdo dos logs do job.

  3. Revise o plano de execução para confirmar se ele representa suas intenções.

    O plano de execução é representado no log do job de planejamento executado anteriormente.

    Observação

    Você poderá ignorar esta etapa se tiver selecionado Executar aplicação ao criar a pilha. Nesse caso, os recursos já foram provisionados.
    Para revisar um plano de execução (o log do job de planejamento) (Console)
    1. Abra o menu de navegação e clique em Serviços ao Desenvolvedor. Em Resource Manager, clique em Jobs.

      Você também pode acessar jobs em uma página de detalhes da pilha. Clique em Pilhas e, em seguida, clique no nome da pilha que deseja.

    2. Em Escopo da Lista, selecione um compartimento no qual você tenha permissão para trabalhar.

    3. Clique no nome do job de planejamento que você executou.

      A página Detalhes do job é aberta. Os logs ficam visíveis (na seção Logs em Recursos).

      Para jobs de planejamento, o arquivo de log é o plano de execução. Exiba o arquivo de log relativo ao job de planejamento e observe os campos de "mensagem" na sequência de entradas de log do arquivo de log. Esses valores representam a sequência de operações especificadas na sua configuração.

    4. (Opcional) Clique em Fazer Download de logs (na seção Logs em Recursos).

    Se necessário, atualize sua pilha para usar uma configuração revisada e execute outro job de planejamento para obter um plano de execução atualizado.

    Para revisar um plano de execução (o log do job de planejamento) (CLI)

    Use o comando oci resource-manager job get-job-logs e os parâmetros necessários para obter logs de um job como uma lista paginada de entradas.

    oci resource-manager job get-job-logs [OPTIONS]

    Para obter uma lista completa de parâmetros e valores para comandos da CLI, consulte a Referência de Linha de Comando do Resource Manager.

    Exemplo de Resposta para uma Tarefa do Plano

    O comando retorna objetos JSON que descrevem as entradas do log. Cada objeto tem um membro de mensagem com uma propriedade que exibe uma linha do plano de execução. Neste exemplo, o job de planejamento cria uma única rede virtual na nuvem (VCN); os membros restantes mostram detalhes sobre a VCN.

    ...
                    {
                    "level": "INFO",
                    "message": "Terraform will perform the following actions:",
                    "timestamp": "2018-05-24T00:57:14.170000+00:00",
                    "type": "TERRAFORM_CONSOLE"
                    },
                    {
                    "level": "INFO",
                    "message": "",
                    "timestamp": "2018-05-24T00:57:14.170000+00:00",
                    "type": "TERRAFORM_CONSOLE"
                    },
                    {
                    "level": "INFO",
                    "message": "+ oci_core_virtual_network.vcn1",
                    "timestamp": "2018-05-24T00:57:14.170000+00:00",
                    "type": "TERRAFORM_CONSOLE"
                    },
                    {
                    "level": "INFO",
                    "message": "id: <computed>",
                    "timestamp": "2018-05-24T00:57:14.172000+00:00",
                    "type": "TERRAFORM_CONSOLE"
                    },
                    {
                    "level": "INFO",
                    "message": "cidr_block:  \"10.0.0.0/16\",
                    "timestamp": "2018-05-24T00:57:14.172000+00:00",
                    "type": "TERRAFORM_CONSOLE"
                    },
                    {
                    "level": "INFO",
                    "message": "compartment_id:  \"ocid1.tenancy.oc1..exampleaqnpcpfqfmrf6dw5gcew7yqpirvarueirj2mv4jzn5goejsxma\",
                    "timestamp": "2018-05-24T00:57:14.172000+00:00",
                    "type": "TERRAFORM_CONSOLE"
                    },
                    {
                    "level": "INFO",
                    "message": "default_dhcp_options_id:  <computed_value>",
                    "timestamp": "2018-05-24T00:57:14.172000+00:00",
                    "type": "TERRAFORM_CONSOLE"
                    },
                    {
                    "level": "INFO",
                    "message": "      default_route_table_id: <computed_value>",
                    "timestamp": "2018-05-24T00:57:14.172000+00:00",
                    "type": "TERRAFORM_CONSOLE"
                    },
                    {
                    "level": "INFO",
                    "message": "      default_security_list_id: <computed_value>",
                    "timestamp": "2018-05-24T00:57:14.172000+00:00",
                    "type": "TERRAFORM_CONSOLE"
                    },
                    ...
                  

    Se necessário, atualize sua pilha para usar uma configuração revisada e execute outro job de planejamento para obter um plano de execução atualizado.

  4. Provisione seus recursos executando um job de aplicação no plano de execução.

    Quando estiver satisfeito com o plano de execução, você estará pronto para executar o trabalho de provisionamento da pilha com os recursos que você definiu. O job de aplicação leva o plano de execução e o "aplica" à pilha. O resultado é uma pilha totalmente provisionada.

    Observação

    Você poderá ignorar esta etapa se tiver selecionado Executar aplicação ao criar a pilha. Nesse caso, os recursos já foram provisionados.
    Para executar um job de aplicação (Console)
    1. Abra o menu de navegação e clique em Serviços ao Desenvolvedor. Em Resource Manager, clique em Pilhas.

    2. Em Escopo da Lista, selecione um compartimento no qual você tenha permissão para trabalhar.

    3. Clique no nome da pilha que você criou.

      A página Detalhes da pilha é aberta.

    4. Clique em Aplicar.

    5. (Opcional) No painel Aplicar, revise o Nome e outras configurações do job de aplicação e atualize se necessário.

    6. Clique em Aplicar.

      O job de aplicação foi criado. O novo job é listado em Jobs.

      Monitore o status do job (estado do ciclo de vida) obtendo os detalhes do job. Bem-sucedido (SUCCEEDED) indica que o job foi concluído. Dependendo da complexidade do job, a operação pode demorar um pouco. Enquanto o job for executado ou depois que ele for concluído, você poderá obter o conteúdo dos logs do job.

      Para confirmar a existência de recursos recém-provisionados, inspecione os recursos no compartimento.

    Para executar um job de aplicação (CLI)

    Use o comando oci resource-manager job create-apply-job e os parâmetros necessários para executar um job de aplicação.

    oci resource-manager job create-apply-job [OPTIONS]

    Para obter uma lista completa de parâmetros e valores para comandos da CLI, consulte a Referência de Linha de Comando do Resource Manager.

    Exemplos

    Exemplo 1: Referenciar um job de plano.

    oci resource-manager job create-apply-job --execution-plan-strategy <plan_job_ocid> --stack-id <stack_ocid>

    Exemplo 2: Aprovar automaticamente (não fazer referência a um job de plano).

    oci resource-manager job create-apply-job --execution-plan-strategy AUTO_APPROVED --stack-id <stack_ocid>

    Monitore o status do job (estado do ciclo de vida) obtendo os detalhes do job. Bem-sucedido (SUCCEEDED) indica que o job foi concluído. Dependendo da complexidade do job, a operação pode demorar um pouco. Enquanto o job for executado ou depois que ele for concluído, você poderá obter o conteúdo dos logs do job.

    Para confirmar a existência de recursos recém-provisionados, inspecione os recursos no compartimento.

  5. Revise as entradas de log e o arquivo de estado do job de aplicação que você acabou de executar.
    • Consulte as entradas no log do job para obter mais detalhes sobre o job.

      Para exibir o log do job (Console)
      1. Abra o menu de navegação e clique em Serviços ao Desenvolvedor. Em Resource Manager, clique em Jobs.

        Você também pode acessar jobs em uma página de detalhes da pilha. Clique em Pilhas e, em seguida, clique no nome da pilha que deseja.

      2. Em Escopo da Lista, selecione um compartimento no qual você tenha permissão para trabalhar.

      3. Clique no nome do job de aplicação executado.

        A página Detalhes do job é aberta. Os logs ficam visíveis (na seção Logs em Recursos).

      4. (Opcional) Clique em Fazer Download de logs (na seção Logs em Recursos).

      Para exibir o log do job (CLI)

      Exiba o arquivo de log e observe os campos de "mensagem" na sequência de entradas de log do arquivo de log. Você pode exibir o arquivo de log do job especificado como uma lista paginada de entradas ou em sua forma básica.

      Para exibir uma lista paginada de entradas

      Use o comando oci resource-manager job get-job-logs e os parâmetros necessários para obter logs de um job como uma lista paginada de entradas.

      oci resource-manager job get-job-logs [OPTIONS]

      Para obter uma lista completa de parâmetros e valores para comandos da CLI, consulte a Referência de Linha de Comando do Resource Manager.

      Exemplo de Resposta para uma Tarefa do Plano

      O comando retorna objetos JSON que descrevem as entradas do log. Cada objeto tem um membro de mensagem com uma propriedade que exibe uma linha do plano de execução. Neste exemplo, o job de planejamento cria uma única rede virtual na nuvem (VCN); os membros restantes mostram detalhes sobre a VCN.

      ...
                      {
                      "level": "INFO",
                      "message": "Terraform will perform the following actions:",
                      "timestamp": "2018-05-24T00:57:14.170000+00:00",
                      "type": "TERRAFORM_CONSOLE"
                      },
                      {
                      "level": "INFO",
                      "message": "",
                      "timestamp": "2018-05-24T00:57:14.170000+00:00",
                      "type": "TERRAFORM_CONSOLE"
                      },
                      {
                      "level": "INFO",
                      "message": "+ oci_core_virtual_network.vcn1",
                      "timestamp": "2018-05-24T00:57:14.170000+00:00",
                      "type": "TERRAFORM_CONSOLE"
                      },
                      {
                      "level": "INFO",
                      "message": "id: <computed>",
                      "timestamp": "2018-05-24T00:57:14.172000+00:00",
                      "type": "TERRAFORM_CONSOLE"
                      },
                      {
                      "level": "INFO",
                      "message": "cidr_block:  \"10.0.0.0/16\",
                      "timestamp": "2018-05-24T00:57:14.172000+00:00",
                      "type": "TERRAFORM_CONSOLE"
                      },
                      {
                      "level": "INFO",
                      "message": "compartment_id:  \"ocid1.tenancy.oc1..exampleaqnpcpfqfmrf6dw5gcew7yqpirvarueirj2mv4jzn5goejsxma\",
                      "timestamp": "2018-05-24T00:57:14.172000+00:00",
                      "type": "TERRAFORM_CONSOLE"
                      },
                      {
                      "level": "INFO",
                      "message": "default_dhcp_options_id:  <computed_value>",
                      "timestamp": "2018-05-24T00:57:14.172000+00:00",
                      "type": "TERRAFORM_CONSOLE"
                      },
                      {
                      "level": "INFO",
                      "message": "      default_route_table_id: <computed_value>",
                      "timestamp": "2018-05-24T00:57:14.172000+00:00",
                      "type": "TERRAFORM_CONSOLE"
                      },
                      {
                      "level": "INFO",
                      "message": "      default_security_list_id: <computed_value>",
                      "timestamp": "2018-05-24T00:57:14.172000+00:00",
                      "type": "TERRAFORM_CONSOLE"
                      },
                      ...
                    
      Para exibir logs em formato bruto

      Use o comando oci resource-manager job get-job-logs-content e os parâmetros necessários para obter o conteúdo dos logs de um job.

      oci resource-manager job get-job-logs-content [OPTIONS]

      Para obter uma lista completa de parâmetros e valores para comandos da CLI, consulte a Referência de Linha de Comando do Resource Manager.

    • O arquivo de estado do job representa a saída do job no formato JSON.

      O arquivo de estado mapeia os recursos da sua pilha para sua configuração e também mantém metadados de configuração essenciais, como dependências de recursos. O serviço Resource Manager gera e atualiza arquivos de estado automaticamente quando você executa jobs.

      O serviço Resource Manager suporta bloqueio de estado, permitindo que apenas um job de cada vez seja executado em uma determinada pilha. Para obter mais informações sobre arquivos de estado, consulte Hashicorp: State.

      Para exibir o estado do job (Console)
      1. Abra o menu de navegação e clique em Serviços ao Desenvolvedor. Em Resource Manager, clique em Jobs.

        Você também pode acessar jobs em uma página de detalhes da pilha. Clique em Pilhas e, em seguida, clique no nome da pilha que deseja.

      2. Em Escopo da Lista, selecione um compartimento no qual você tenha permissão para trabalhar.

      3. Clique no nome do job.

        A página Detalhes do job é aberta.

      4. Clique em Fazer Download da configuração do Terraform.

      Para exibir o estado do job (CLI)

      Use o comando oci resource-manager job get-job-tf-state e os parâmetros necessários para obter o estado de um job.

      oci resource-manager job get-job-tf-state [OPTIONS]

      Para obter uma lista completa de parâmetros e valores para comandos da CLI, consulte a Referência de Linha de Comando do Resource Manager.

      Exemplo de resposta:

      {
        "data": 
        {
          "lineage": "57ef4f0c-c8cd-8a32-d45f-d2c40be7b915",
          "modules": 
          [
            {
              "depends_on": [],
              "outputs": {},
              "path": 
              [
                "root"
              ],
              "resources": 
              {
                "oci_core_virtual_network.vcn1": {
                "depends_on": [],
                "deposed": [],
                "primary": 
                {
                  "attributes": {
                  "cidr_block": "10.0.0.0/16",
                  "compartment_id": "ocid1.tenancy.oc1..uniqueid",
                  "default_dhcp_options_id": "ocid1.dhcpoptions.oc1.phx.uniqueid",
                  "default_route_table_id": "ocid1.routetable.oc1.phx.uniqueid",
                  "default_security_list_id": "ocid1.securitylist.oc1.phx.uniqueid",
                  "display_name": "My VCN display name",
                  "dns_label": "myvcntest",
                  "id": "ocid1.vcn.oc1.phx.uniqueid",
                  "state": "AVAILABLE",
                  "time_created": "2018-05-24 01:13:05.855 +0000 UTC",
                  "vcn_domain_name": "myvcntest.oraclevcn.com"
                },
                "id": "ocid1.vcn.oc1.phx.uniqueid",
                "meta": 
                {
                  "e2bfb730-ecaa-11e6-8f88-34363bc7c4c0": {
                  "create": 300000000000,
                  "delete": 300000000000,
                  "update": 300000000000
                }
              },
              "tainted": false
            },
            "provider": "provider.oci",
            "type": "oci_core_virtual_network"
                }
              }
            }
          ],
        "serial": 4,
        "terraform_version": "0.11.7",
        "version": 3
      }
      }
      Observação

      Também é possível importar arquivos de estado para recursos já gerenciados pelo Terraform.
  6. Quando for necessário liberar os recursos provisionados, execute um job de destruição na pilha.

    Um job de destruição desmonta a pilha que você criou e depois remove os recursos associados sem excluí-los. Por exemplo, o job de destruição encerra instâncias do serviço Compute associadas à pilha.

    Observação

    Recomendamos executar um job de destruição antes de excluir uma pilha para liberar os recursos associados primeiro. Quando você exclui uma pilha, o arquivo de estado associado também é excluído; portanto, você perderá o controle do estado de seus recursos associados. A limpeza de recursos associados a uma pilha excluída pode ser difícil sem o arquivo de estado, especialmente quando esses recursos estão distribuídos em vários compartimentos. Para evitar uma remoção difícil posteriormente, recomendamos que você libere os recursos associados primeiro, executando um job de destruição.

    Não é possível recuperar dados de recursos destruídos.

    Para executar um job de destruição (Console)
    1. Abra o menu de navegação e clique em Serviços ao Desenvolvedor. Em Resource Manager, clique em Pilhas.

    2. Em Escopo da Lista, selecione um compartimento no qual você tenha permissão para trabalhar.

    3. Clique no nome da pilha desejada.

      A página Detalhes da pilha é aberta.

    4. Clique em Destruir.
    5. (Opcional) No painel Destruir, revise o Nome e outras configurações do job de aplicação e atualize se necessário.

    6. Clique em Destruir.

      O job de destruição é criado. O novo job é listado em Jobs.

      Depois de executar um job de destruição, obtenha o job para verificar seu status. Opcionalmente, você pode exibir o arquivo de estado do Terraform, exibir os logs e confirmar a exclusão dos recursos. Você também pode recriar recursos destruídos.

      Monitore o status do job (estado do ciclo de vida) obtendo os detalhes do job. Bem-sucedido (SUCCEEDED) indica que o job foi concluído. Dependendo da complexidade do job, a operação pode demorar um pouco. Enquanto o job for executado ou depois que ele for concluído, você poderá obter o conteúdo dos logs do job.

      Para exibir o arquivo de estado do Terraform (mostra o estado dos seus recursos após a execução do job), clique no nome do job para exibir a página Detalhes do job e, em seguida, clique em Exibir estado sob Recursos. Opcionalmente, selecione Mostrar alterações nesta versão.

      Para exibir os logs do job, clique no nome do job para abrir a página Detalhes do job e, em seguida, clique em Logs sob Recursos.

      Para confirmar a exclusão dos recursos, inspecione os recursos no compartimento.

      Para recriar os recursos de uma pilha depois que os recursos forem destruídos, execute um job de aplicação. Os novos recursos diferem dos recursos destruídos anteriormente por seus OCIDs exclusivos e outros metadados.

    Para executar um job de destruição (CLI)

    Use o comando oci resource-manager job create-destroy-job e os parâmetros necessários para executar um job de destruição.

    oci resource-manager job create-destroy-job [OPTIONS]

    Para obter uma lista completa de parâmetros e valores para comandos da CLI, consulte a Referência de Linha de Comando do Resource Manager.

    Depois de executar um job de destruição, obtenha o job para verificar seu status.

    Monitore o status do job (estado do ciclo de vida) obtendo os detalhes do job. Bem-sucedido (SUCCEEDED) indica que o job foi concluído. Dependendo da complexidade do job, a operação pode demorar um pouco. Enquanto o job for executado ou depois que ele for concluído, você poderá obter o conteúdo dos logs do job.

    Opcionalmente, você pode exibir o arquivo de estado do Terraform, exibir os logs e confirmar a exclusão dos recursos. Também é possível recriar recursos destruídos.

    Para confirmar a exclusão dos recursos, inspecione os recursos no compartimento.

    Para recriar os recursos de uma pilha depois que os recursos forem destruídos, execute um job de aplicação. Os novos recursos diferem dos recursos destruídos anteriormente por seus OCIDs exclusivos e outros metadados.

Tarefa 3: Repetir em Mais Ambientes

Esta seção descreve como criar e implantar a infraestrutura em vários ambientes.

Neste cenário, você usa o mesmo arquivo .zip de configuração do Terraform para provisionar uma instância do serviço Compute em seus ambientes de desenvolvimento, preparação e produção.

Observação

Este cenário pressupõe que a configuração do Terraform inclua um documento de esquema, que permite alterar valores de variáveis ao criar uma pilha na Console.
  1. Acesse a tenancy para o novo ambiente no qual você deseja provisionar a infraestrutura definida na configuração do Terraform.

    Por exemplo, acesse a tenancy do seu ambiente de teste ou de produção.

  2. Abra a página Criar pilha:
    1. Abra o menu de navegação e clique em Serviços ao Desenvolvedor. Em Resource Manager, clique em Pilhas.
    2. Em Escopo da Lista, selecione um compartimento no qual você tenha permissão para trabalhar. A página é atualizada para exibir somente os recursos desse compartimento. Se você não tiver certeza de qual compartimento usar, entre em contato com um administrador.

    3. Clique em Criar pilha.
  3. Usando a mesma configuração do Terraform do primeiro ambiente, preencha a guia Informações da pilha:

    1. Na página Criar pilha, selecione Minha configuração.

    2. Em Configuração da pilha, clique em . Arquivo zip e adicione a configuração do Terraform.

      Você pode arrastar e soltar o arquivo .zip de configuração do Terraform no controle ou clicar em Procurar e navegar até o local do arquivo .zip.

    3. Digite um Nome para a nova pilha (ou aceite o nome padrão fornecido). Evite fornecer informações confidenciais.
    4. Como alternativa, digite uma Descrição.
    5. Na lista drop-down Criar no compartimento, selecione o compartimento no qual você deseja criar a pilha.

    6. Clique em Próximo.

      O painel Configurar variáveis exibe variáveis do arquivo de configuração do Terraform selecionado.

  4. Especifique os valores de variável para este ambiente:

    1. No painel Configurar variáveis, revise as variáveis e faça as alterações necessárias.

      Valores padrão são fornecidos quando especificados no documento do esquema.

      Importante

      Não adicione sua chave privada ou outras informações confidenciais às variáveis de configuração.
    2. Clique em Próximo.
  5. No painel Revisão, verifique a configuração da pilha.
  6. Para provisionar recursos automaticamente na criação da pilha, selecione Executar aplicação.

  7. Clique em Criar para criar sua pilha.

    A página de detalhes da nova pilha é exibida.

    Se você selecionou Executar aplicação, o Resource Manager executará a ação de aplicação na nova pilha.

Parabéns, você reutilizou sua configuração do Terraform para criar uma pilha em um novo ambiente. Se você selecionou Executar aplicação, também provisionou recursos no novo ambiente.

Agora você pode gerar e revisar um plano de execução (e provisionar recursos, se a opção Executar aplicação não tiver sido selecionada). Para concluir esses itens, repita as etapas da Tarefa 2: Provisionar a Infraestrutura no novo ambiente.