Crie uma Instância do Serviço Compute

Use o Terraform para criar uma instância de computação na sua tenancy do Oracle Cloud Infrastructure.

As principais tarefas incluem:

  • Crie chaves SSH.
  • Crie uma rede virtual na nuvem em sua tenancy.
  • Use o provedor Terraform do Oracle Cloud Infrastructure para criar uma instância de computação na rede.
  • Estabeleça conexão com a sua instância.
Um diagrama dos componentes necessários para criar uma instância de computação do Oracle Cloud Infrastructure com o Terraform. A instância de computação é criada em uma sub-rede pública de uma rede virtual na nuvem. A sub-rede pública está conectada à internet por meio de um gateway de internet.

Para obter mais informações, consulte:

Antes de Começar

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

Requisitos

1. Preparar

Prepare seu ambiente para criar uma instância de computação. Além disso, colete todas as informações necessárias para concluir o tutorial.

Criar Chaves de Criptografia SSH

Crie chaves de criptografia ssh para estabelecer conexão com sua instância de computação.

  1. Abra uma janela de terminal:
    • MacOS ou Linux: Abra uma janela de terminal no diretório em que deseja armazenar suas chaves.
    • Windows: Clique com o botão direito do mouse no diretório em que deseja armazenar suas chaves e selecione Git Bash Here.
    Observação

    Se você estiver usando o subsistema Windows para Linux (WSL), certifique-se de que o diretório para as chaves esteja diretamente em sua máquina Linux e não em uma pasta /mnt (sistema de arquivos do Windows).
  2. Emita o seguinte comando OpenSSH:
    ssh-keygen -t rsa -N "" -b 2048 -C <your-ssh-key-name> -f <your-ssh-key-name>

    O comando gera algum tipo de arte de texto aleatório usado para gerar as chaves. Quando a operação for concluída, você terá dois arquivos:

    • O arquivo de chaves privadas: <your-ssh-key-name>
    • O arquivo de chaves públicas: <your-ssh-key-name>.pub

    Você usa esses arquivos para se conectar à sua instância de computação.

Você gerou as chaves de criptografia necessárias.

Para obter informações detalhadas sobre como gerar chaves de criptografia ssh, consulte Criando um Par de Chaves.

Criar uma VCN (Rede Virtual na Nuvem)
  1. Abra o menu de navegação , selecione Rede e selecione Redes virtuais na nuvem.
  2. Na página da lista Redes Virtuais na Nuvem, execute uma das seguintes ações, dependendo da opção exibida:

    • Em Ações, selecione Iniciar Assistente de VCN.
    • Selecione Iniciar Assistente de VCN.
  3. No painel Iniciar Assistente de VCN, selecione Criar VCN com Conectividade de Internet.
  4. Selecione Iniciar Assistente de VCN.

    A janela Criar uma VCN com conectividade de internet é aberta.

1. Configuração

Insira as seguintes informações básicas:

  • Nome da VCN: <your-vcn-name>

  • Compartimento: <your-compartment-name>
Configurar VCN
  • Bloco IPv4 CIDR da VCN: Mantenha o valor padrão: 10.0.0.0/16

  • Usar nomes de host de DNS nesta VCN: Desmarque esta caixa de seleção.

Configurar Sub-rede Pública
  • Bloco IPv4 CIDR: Mantenha o valor padrão: 10.0.0.0/24

Configurar Sub-rede Privada
  • Bloco IPv4 CIDR: Mantenha o valor padrão: 10.0.1.0/24

Observe que as sub-redes públicas e privadas têm endereços de rede diferentes.

Selecione Próximo. A página Verificar e criar é aberta.

2. Verificar e criar

Verifique a configuração completa da VCN e selecione Criar.

Os recursos são criados e, em seguida, uma mensagem é exibida informando que a criação da VCN está concluída.

Para exibir a VCN criada, selecione Exibir VCN.

Você criou com sucesso uma VCN para hospedar sua instância de computação.

Reunir Informações Necessárias

Colete e copie as informações que você precisa no seu bloco de notas.

  • Nome do compartimento
  • ID do Compartimento
  • ID de Sub-rede
  • ID da Origem (imagem da instância de computação)
  • Forma (instância de computação)
  • Chave Autorizada SSH (caminho de chave pública)
  • Caminho da Chave Privada SSH

Para ver as etapas para coletar essas informações, consulte a tabela a seguir.

Item Etapas para coletar o item
Nome do compartimento Consulte o tutorial concluído Criar um Compartimento.
ID do Compartimento
  1. Na barra de pesquisa da Console, digite <your-compartment-name>.
  2. Selecione <your-compartment-name> nos resultados da pesquisa.
  3. Selecione Copiar ao lado do OCID.
Nome para exibição da instância Nome de sua escolha.
ID de Sub-rede
  1. Na Console: Abra o menu de navegação , selecione Rede e selecione Redes virtuais na nuvem.
  2. Selecione <your-vcn-name> em Criar uma Rede Virtual na Nuvem (VCN).
  3. Selecione Sub-redes.
  4. Selecione <your-compartment-name> para mostrar sub-redes em seu compartimento.
  5. No menu Ações (três pontos) da sub-rede pública, selecione Copiar OCID.
ID da Origem (imagem da instância de computação)
  1. Na barra de navegação da Console, localize sua região.

    Consulte Como Trabalhar em Regiões.

  2. Vá para Notas da Release da Imagem.
  3. Selecione Ubuntu 24.04.

    A lista de imagens do Ubuntu 24.04 é aberta.

  4. Selecione a imagem mais recente: Canonical-Ubuntu-24.04-<date>.

    A página lista OCIDs de imagem.

  5. Localize a imagem da sua região e copie o OCID da imagem.

    Observação: Certifique-se de selecionar um OCID comercial sem gov em seu OCID.

Forma e configuração (instância de computação)
  • Forma: VM.Standard.E5.Flex
  • OCPUs: 1
  • Memória (GBs): 12

Observação: O VM.Standard.E5.Flex requer valores para OCPUs e memória. Para selecionar outra forma, vá para Formas de Máquina Virtual (VM).

Chave Autorizada SSH (caminho de chave pública) Consulte a seção concluída, Criar Chaves de Criptografia SSH. Use este caminho ao configurar a instância de computação.
Caminho da Chave Privada SSH Consulte a seção concluída, Criar Chaves de Criptografia SSH. Use essa chave privada ao estabelecer conexão com sua instância de computação.
Adicionar Política de Recursos

Se seu nome de usuário estiver no grupo Administrators, ignore esta seção. Caso contrário, peça ao administrador para adicionar a seguinte política à sua tenancy:

allow group <a-group-your-username-belongs-to> to manage all-resources in compartment <your-compartment-name>

Com esse privilégio, você pode gerenciar todos os recursos em seu compartimento, dando a você direitos administrativos nesse compartimento.

Etapas para Adicionar a Política
  1. Na Console: Abra o menu de navegação e selecione Identidade e Segurança. Em Identidade, selecione Políticas.
  2. Selecione seu compartimento.
  3. Selecione Criar Política.
  4. Na página Criar Política, informe os seguintes valores:
    • Nome: manage-<your-compartment-name>-resources
    • Descrição: Allow users to list, create, update, and delete resources in <your-compartment-name>.
    • Compartimento: <your-tenancy>(root)
  5. Para o Criador de Políticas, informe os seguintes valores:
    • Casos de uso da política: Compartment Management
    • Modelos de política comum: Let compartment admins manage the compartment
    • Domínio de identidades: <identity-domain>
    • Grupos <a-group-your-username-belongs-to>
    • Local: <your-compartment-name>
  6. Selecione Criar.

Referência: Políticas Comuns

2. Criar Scripts

Crie scripts para autenticação, extração de dados, criação de uma instância de computação e impressão de saídas.

Adicionar Autenticação

Primeiro, configure um diretório para seus scripts do Terraform. Em seguida, copie o provedor e os scripts de versões do tutorial Configurar OCI Terraform para que sua conta do Oracle Cloud Infrastructure possa autenticar os scripts em execução nesse diretório.

  1. No diretório $HOME, crie um diretório chamado tf-compute e, em seguida, passe para esse diretório.
    mkdir tf-compute
    cd tf-compute
  2. Copie o arquivo provider.tf para o diretório tf-compute.
    cp ../tf-provider/provider.tf .
  3. Copie o arquivo versions.tf para o diretório tf-compute.
    cp ../tf-provider/versions.tf .
Extrair Dados

Extraia o nome de um domínio de disponibilidade da sua conta. Um domínio de disponibilidade é uma das entradas obrigatórias para criar uma instância de computação.

  1. Copie o arquivo availability-domains.tf para o diretório tf-compute.

    O arquivo availability-domains.tf foi criado durante o tutorial Configurar o OCI Terraform.

    cp ../tf-provider/availability-domains.tf .

    Exemplo de código:

    # Source from https://registry.terraform.io/providers/oracle/oci/latest/docs/data-sources/identity_availability_domains
    
    data "oci_identity_availability_domains" "ads" {
      compartment_id = "<tenancy-ocid>"
    }
  2. No diretório tf-compute, crie um arquivo chamado outputs.tf.
    Observação

    Certifique-se de que outputs.tf, provider.tf e availability-domains.tf estejam no mesmo diretório.
  3. Para gerar o nome do primeiro domínio de disponibilidade na lista de oci_identity_availability_domains, adicione o código a seguir a outputs.tf.
    
    # The "name" of the availability domain to be used for the compute instance.
    output "name-of-first-availability-domain" {
      value = data.oci_identity_availability_domains.ads.availability_domains[0].name
    }
  4. Salve o arquivo outputs.tf.
  5. Execute seus scripts com o Terraform:
    terraform init
    terraform plan
    terraform apply

    Quando for solicitada a confirmação, informe yes para que seus dados sejam extraídos e exibidos na saída.

    Agora você tem uma saída com o nome do domínio de disponibilidade a ser usado para sua instância.

    Exemplo de saída:

    name-of-first-availability-domain = QnsC:US-ASHBURN-AD-1
Parabéns! Você extraiu dados com sucesso da sua conta do Oracle Cloud Infrastructure para usar em sua instância de computação.
Explicação

Quando você configura o Terraform no primeiro tutorial, Configurar o OCI Terraform, o bloco de saída inclui a seguinte linha:

value = data.oci_identity_availability_domains.ads.availability_domains

Em seguida, a saída foi semelhante à seguinte:

Outputs:

all-availability-domains-in-your-tenancy = tolist([
  {
    "compartment_id" = "ocid1.tenancy.xxx"
    "id" = "ocid1.availabilitydomain.xxx"
    "name" = "QnsC:US-ASHBURN-AD-1"
  },
  {
    "compartment_id" = "ocid1.tenancy.xxx"
    "id" = "ocid1.availabilitydomain.xxx"
    "name" = "QnsC:US-ASHBURN-AD-2"
  },
  {
    "compartment_id" = "ocid1.tenancy.xxx"
    "id" = "ocid1.availabilitydomain.xxx"
    "name" = "QnsC:US-ASHBURN-AD-3"
  },
])

Agora, você deseja extrair o nome do primeiro domínio de disponibilidade na lista, a ser usado para o local da sua instância de computação mais tarde:

"name" = "xxxx:US-ASHBURN-AD-1"
Observação

  • Use intervalos para adicionar um índice a um atributo de lista.
  • Use o índice 0 para o primeiro item de uma lista.
  • Use um ponto depois dos intervalos seguidos por um atributo da lista para especificar esse atributo.
  • Exemplo: Primeiro item da lista:

    value = data.oci_identity_availability_domains.ads.availability_domains[0]

  • Exemplo: Nome do primeiro item na lista:

    value = data.oci_identity_availability_domains.ads.availability_domains[0].name

Declarar um Recurso de Computação

Declarar um recurso de computação do Oracle Cloud Infrastructure e definir as especificações da instância.

Dica

Você pode salvar uma pilha no workflow da Console para criar uma instância de computação. A pilha contém uma configuração do Terraform que você pode usar como referência para a configuração de forma e forma. Consulte Criando uma Pilha com Base em uma Página de Criação de Recursos e Obtendo a Configuração do Terraform de uma Pilha.
  1. Crie um arquivo denominado compute.tf.
  2. Adicione o código a seguir a compute.tf.
    resource "oci_core_instance" "ubuntu_instance" {
        # Required
        availability_domain = data.oci_identity_availability_domains.ads.availability_domains[0].name
        compartment_id = "<compartment-ocid>"
        shape = "VM.Standard.E5.Flex"
        shape_config {
            ocpus = "1"
            memory_in_gbs = "12"
        }
        source_details {
            source_id = "<source-ocid>"
            source_type = "image"
        }
    
        # Optional
        display_name = "<your-ubuntu-instance-name>"
        create_vnic_details {
            assign_public_ip = true
            subnet_id = "<subnet-ocid>"
        }
        metadata = {
            ssh_authorized_keys = file("<ssh-public-key-path>")
        } 
        preserve_boot_volume = false
    }
    Importante

    • Substitua <compartment-ocid>, <source-ocid>, <your-ubuntu-instance-name> e <subnet-ocid> pelas informações coletadas em Reunir as Informações Necessárias.
    • Para o domínio de disponibilidade, use o nome extraído com a origem de dados:
      data.oci_identity_availability_domains.ads.availability_domains[0].name
    • Para ssh_authorized_keys, use o seguinte formato:
      file("<ssh-public-key-path>")

      Você não pode alterar seu valor após criar a VM.

  3. Salve o arquivo compute.tf file.
Explicação

No Terraform, os recursos são objetos como redes virtuais na nuvem (VCNs) ou instâncias de computação. Você pode criá-los, atualizá-los e excluí-los com o Terraform.

Para declarar um recurso de computação:

  • Vá para Provedor do Oracle Cloud Infrastructure.
  • Na caixa Filtro no canto superior esquerdo, digite core instance.

    Os resultados incluem fontes de dados e recursos para vários serviços.

  • Em Básico, vá para Recursos e selecione oci_core_instance.

    O título da página é o tipo de recurso: oci_core_instance

  • Na seção Referência de Argumento, use os seguintes argumentos obrigatórios (entradas):
    • availability_domain
    • compartment_id
    • forma
    • source_details
      • source_id
      • source_type
  • Construa um bloco de recursos:
    • Declarar um bloco de recursos com a palavra-chave: resource
    • Adicione um label para o tipo do recurso: "oci_core_instance"
    • Adicione um label para um nome local (sua escolha):
      • O label pode conter letras, dígitos, sublinhados (_) e hifens (-). O primeiro caractere não deve ser um dígito.
      • Exemplo: "ubuntu_instance"
    • Dentro do bloco de código, forneça um valor para os argumentos obrigatórios. Eles não têm um valor padrão.
    • Para argumentos opcionais, forneça valores para os quais você deseja substituir. Caso contrário, seus valores padrão serão usados.
Adicionar Saídas

Adicione blocos de saída ao seu código para obter informações sobre sua instância de computação após sua criação pelo Terraform.

  1. Abra o arquivo outputs.tf.
  2. Crie um bloco de saída para o IP público da instância:
    • O IP público estará disponível após a criação da instância.
    • Use o IP público para se conectar à instância.
    • Adicione o seguinte código a outputs.tf:
    # Outputs for compute instance
    
    output "public-ip-for-compute-instance" {
      value = oci_core_instance.ubuntu_instance.public_ip
    }
  3. Adicione mais algumas saídas para descrever a instância de computação:
    • display_name
    • id
    • região
    • forma
    • estado
    • ocpus
    • memory_in_gbs
    • time_created
    
    output "instance-name" {
      value = oci_core_instance.ubuntu_instance.display_name
    }
    
    output "instance-OCID" {
      value = oci_core_instance.ubuntu_instance.id
    }
    
    output "instance-region" {
      value = oci_core_instance.ubuntu_instance.region
    }
    
    output "instance-shape" {
      value = oci_core_instance.ubuntu_instance.shape
    }
    
    output "instance-state" {
      value = oci_core_instance.ubuntu_instance.state
    }
    
    output "instance-OCPUs" {
      value = oci_core_instance.ubuntu_instance.shape_config[0].ocpus
    }
    
    output "instance-memory-in-GBs" {
      value = oci_core_instance.ubuntu_instance.shape_config[0].memory_in_gbs
    }
    
    output "time-created" {
      value = oci_core_instance.ubuntu_instance.time_created
    }
  4. Salve o arquivo outputs.tf.
Explicação
  • Vá para Referência de Atributos (oci_core_instance).
    Observação

    Os atributos são as saídas que você pode retornar para o recurso oci_core_instance.
  • Procure o atributo para IP público: public_ip.
  • Construa um bloco de saída de recurso para public_ip:
    • Para a expressão value, use o seguinte formato:
      • value = <type>.<local-name-for-resource>.<attribute>
      • Exemplo: value = oci_core_instance.ubuntu_instance.public_ip
  • Crie um bloco de saída para cada uma das seguintes saídas:
    • display_name
    • id
    • região
    • forma
    • estado
    • ocpus
    • memory_in_gbs
    • time_created

3. Executar Scripts

Execute os scripts do Terraform para criar a instância de computação em um compartimento em sua tenancy. Use suas chaves SSH para estabelecer conexão com a instância. Quando você não precisar mais da sua instância, destrua-a com o Terraform.

Criar uma Instância
  1. Crie sua instância de computação com o Terraform:
    terraform init
    terraform plan
    terraform apply

    Quando for solicitada a confirmação, digite yes para que seu recurso seja criado.

    Depois que a instância for criada, as saídas definidas, incluindo <your-public-ip-address>, serão exibidas no terminal de saída.
  2. (Opcional) Assista à criação da instância pela Console.
    • Abra o menu de navegação e selecione Computação. Em Compute, selecione Instâncias.
    • Selecione seu compartimento.
    • Observe que sua instância aparece na lista de instâncias.

Parabéns! Você criou com sucesso uma instância de computação usando o Terraform, na sua conta do Oracle Cloud Infrastructure.

Referências:

Estabelecer Conexão com a Instância
  1. No seu terminal, informe as saídas para sua instância de computação:
    terraform output
  2. Copie o endereço IP público das saídas.
  3. Na sua máquina Linux, conecte-se à sua VM com este comando ssh:
    ssh -i <ssh-private-key-path> ubuntu@<your-public-ip-address>
    Observação

    Certifique-se de que a chave privada esteja localizada diretamente na máquina do Linux (WSL).
  4. Desconecte-se da instância:
    exit
Destruir a Instância
  1. (Opcional) Quando não precisar mais da sua instância de computação, você poderá encerrá-la com o seguinte comando:
    terraform destroy

    Quando for solicitada a confirmação, digite yes.

  2. (Opcional) Observe o encerramento na Console:
    • Abra o menu de navegação e selecione Computação. Em Compute, selecione Instâncias.
    • Selecione seu compartimento.
    • Assista à alteração de estado da sua instância para Encerrando e, em seguida, Encerrado.