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 Resource Manager. Use este guia completo 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 sua), 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: Selecionar uma Configuração pré-criada 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. Essas etapas orientam você pelo processo de criação de pilha.

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

    Iniciar pilha com o modelo Compute Instance

  2. Na página Criar pilha, digite um Nome para a nova pilha (ou aceite o nome padrão fornecido). Evite digitar informações confidenciais.
  3. No menu suspenso Criar no compartimento, selecione o compartimento no qual deseja criar a pilha.

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

  4. Selecione 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. Selecione Próximo.
  7. No painel Revisão , verifique a configuração da pilha.

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

  8. Selecione Criar para criar sua pilha.

    A página de detalhes referente à 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 orienta você na seleção do modelo da Instância de computação com sua configuração pré-criada do Terraform ou, como alternativa, gravando 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 a Documentação da Linguagem 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 Definir variáveis de entrada. Consulte também 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 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 estender páginas na Console do Oracle Cloud Infrastructure. Facilite a entrada de variáveis na página Criar pilha exibindo controles de chave SSH e nomeando, agrupando, preenchendo valores dinamicamente 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 de computação 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 Fornecedores de Origem de Configuração. Onde quer que seu arquivo seja armazenado, você poderá selecioná-lo ao criá-lo 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 Serviç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 de 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 de um arquivo remoto com versão em um sistema de controle de código-fonte (como Git), em um bucket do Object Storage ou em um arquivo .zip acessado localmente do seu upload. Veja a seguir as 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 selecione Serviços ao Desenvolvedor. Em Resource Manager, selecione Pilhas.
    2. Em Escopo da Lista, selecione um compartimento no qual você tenha permissão para trabalhar.

    3. Selecione Create stack.

      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, selecione arquivo .Zip e adicione a configuração do Terraform.

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

      Você também pode armazenar sua configuração remotamente. Por exemplo, armazene a configuração em 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 essa 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 digitar informações confidenciais.
      Descrição Descrição da pilha (opcional).
      Criar no compartimento Compartimento no qual deseja criar a pilha. Um compartimento do escopo da lista é definido por padrão.
      Versão do Terraform Versão desejada para a configuração do Terraform.
      Tags Opcionalmente, aplique tags à pilha.
    7. Selecione Próximo.

      O painel Configurar variáveis lista as 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. Selecione 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. Selecione Criar para criar a pilha.

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

      Se você tiver selecionado 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 para o 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 para o 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 selecione Serviços ao Desenvolvedor. Em Resource Manager, selecione Pilhas.
    2. Em Escopo da Lista, selecione um compartimento no qual você tenha permissão para trabalhar.

    3. Selecione o nome da pilha desejada.

      A página Detalhes da pilha é aberta.

    4. Selecione Plano.

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

    6. Selecione Plano.

      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 trabalho, a operação pode levar algum tempo. Enquanto o job é executado ou depois que ele é concluído, você pode 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 para o 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 trabalho, a operação pode levar algum tempo. Enquanto o job é executado ou depois que ele é concluído, você pode 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 selecione Serviços ao Desenvolvedor. Em Resource Manager, selecione Jobs.

      Você também pode acessar jobs em uma página de detalhes da pilha. Selecione Pilhas e, em seguida, selecione o nome da pilha desejada.

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

    3. Selecione o nome do job de planejamento que você executou.

      A página Detalhes do job é aberta. Os logs estão 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) Selecione Fazer download de logs (na seção Logs em Recursos).

    Se forem necessárias alterações, 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 para o Resource Manager.

    Exemplo de Resposta para um Job 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 VCN (rede virtual na nuvem) única; 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 forem necessárias alterações, 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 selecione Serviços ao Desenvolvedor. Em Resource Manager, selecione Pilhas.

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

    3. Selecione o nome da pilha que você criou.

      A página Detalhes da pilha é aberta.

    4. Selecione Aplicar.

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

    6. Selecione 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 trabalho, a operação pode levar algum tempo. Enquanto o job é executado ou depois que ele é concluído, você pode 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 para o Resource Manager.

    Exemplos

    Exemplo 1: Fazer referência a 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 trabalho, a operação pode levar algum tempo. Enquanto o job é executado ou depois que ele é concluído, você pode 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 selecione Serviços ao Desenvolvedor. Em Resource Manager, selecione Jobs.

        Você também pode acessar jobs em uma página de detalhes da pilha. Selecione Pilhas e, em seguida, selecione o nome da pilha desejada.

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

      3. Selecione o nome do job de aplicação que você executou.

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

      4. (Opcional) Selecione 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 para o Resource Manager.

      Exemplo de Resposta para um Job 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 VCN (rede virtual na nuvem) única; 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 no formato bruto

      Use o comando oci resource-manager job get-job-logs-content e os parâmetros necessários para obter o conteúdo de 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 para o 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 Estado.

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

        Você também pode acessar jobs em uma página de detalhes da pilha. Selecione Pilhas e, em seguida, selecione o nome da pilha desejada.

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

      3. Selecione o nome do job.

        A página Detalhes do job é aberta.

      4. Selecione 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 para o 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 a execução de um job de destruição antes da exclusão de uma pilha para liberar primeiro os recursos associados. 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.

    Os dados não podem ser recuperados de recursos destruídos.

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

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

    3. Selecione o nome da pilha desejada.

      A página Detalhes da pilha é aberta.

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

    6. Selecione Destruir.

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

      Depois de executar um job de destruição, faça com que o job verifique seu status. 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.

      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 trabalho, a operação pode levar algum tempo. Enquanto o job é executado ou depois que ele é concluído, você pode 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), selecione o nome do job para exibir a página Detalhes do job e, em seguida, selecione Exibir estado sob Recursos. Opcionalmente, selecione Mostrar alterações nesta versão.

      Para exibir os logs do job, selecione o job para abrir sua página de detalhes e, em seguida, selecione Logs em 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 para o Resource Manager.

    Depois de executar um job de destruição, faça com que o job verifique 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 trabalho, a operação pode levar algum tempo. Enquanto o job é executado ou depois que ele é concluído, você pode 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. Você também pode 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 infraestrutura em vários ambientes.

Nesse 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

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

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

  2. Abra a página Criar pilha:
    1. Abra o menu de navegação e selecione Serviços ao Desenvolvedor. Em Resource Manager, selecione 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. Selecione Create stack.
  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, selecione arquivo .Zip e adicione a configuração do Terraform.

      Você pode arrastar e soltar seu arquivo .zip de configuração do Terraform no controle ou selecionar 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 digitar informações confidenciais.
    4. Como alternativa, digite uma Descrição.
    5. No menu suspenso Criar no compartimento, selecione o compartimento no qual deseja criar a pilha.

    6. Selecione 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.

      Os valores padrão são fornecidos quando especificados no documento de esquema.

      Importante

      Não adicione sua chave privada ou outras informações confidenciais às variáveis de configuração.
    2. Selecione 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. Selecione Criar para criar sua pilha.

    A página de detalhes referente à nova pilha é exibida.

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

Parabéns, você reutilizou a 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.