Observação:

Anexe um IP Reservado a uma Instância do Oracle Cloud Infrastructure Compute usando o Terraform e o Script cloud-init

Introdução

No mundo da infraestrutura como código (IaC), automatizar o provisionamento e a configuração de instâncias de computação é essencial para implementações de nuvem eficientes e escaláveis. Quando se trata de anexar endereços IP Reservados às Instâncias de Computação do OCI (Oracle Cloud Infrastructure), o Terraform e o cloud-init fornecem uma combinação avançada.

No módulo Terraform do OCI Compute, não há opção para Anexar um IP Reservado a uma Instância do serviço Compute enquanto a instância é criada. Só podemos anexar IP Reservado após a criação da Instância. Neste post no blog, exploraremos como aproveitar o Terraform e o script cloud-init para anexar perfeitamente um IP reservado a uma instância do OCI Compute.

Objetivo

Anexe um IP reservado a uma instância do OCI Compute sem problemas usando o Terraform e o script cloud-init.

O que é um IP Reservado?

Um endereço IP Reservado é um IP estático designado a uma instância de computação dentro de uma rede virtual. Ele garante conectividade consistente para aplicativos que exigem um IP fixo e simplifica a administração de rede. IPs reservados geralmente são usados em cenários como balanceamento de carga, regras de firewall e comunicação segura com a rede.

Pré-requisitos

Primeiro, você precisa acessar um ambiente do OCI. Se você não tiver um, poderá criar facilmente sua instância Always Free, que vem com muita capacidade gratuita e US$ 300 em créditos de avaliação.

Quando você tiver um ambiente, certifique-se de que seu usuário tenha sido designado a um grupo com permissões para gerenciar os recursos da família de instâncias e da família de armazenamento. Uma melhor prática de segurança criou um usuário, em vez de usar um usuário da Console que já tenha permissões designadas a ele. Se precisar de ajuda, confira os documentos para criar um grupo e conceder permissões adequadas aos usuários.

  1. Conta do OCI
  2. Acesso ao Terraform. Consulte este link para obter mais detalhes.
  3. Sub-rede Pública, em que a instância será iniciada. Isso deve ser anexado a um Gateway de Internet.
  4. Sub-rede Privada, na qual a VNIC secundária é criada e designa o IP Reservado. Isso deve ser anexado a um Gateway de Serviço.
  5. Grupo Dinâmico no qual os Recursos do grupo requerem as permissões para gerenciar a Família de Rede.
  6. As políticas devem ser configuradas para Autenticação do Controlador de Instâncias.

Tarefa 1: Configurar um Script Terraform

Aqui, vamos adicionar um script cloud-init como metadados a um módulo Criar Instância de Computação do OCI Terraform. Além disso, informaremos o OCID do IP Reservado e o OCID da Sub-rede Privada para a VM de Computação como tags de formato livre.

resource "oci_core_public_ip" "pubip" {
  # In case of Multiple Instances has to be created, Provide the count in the vars file.
  # This block creates a Reserved Public IP from Oracle IP Pool
  count = var.instance_count
  compartment_id = var.compartment_id
  display_name   = var.res_ip_display_name
  lifetime       = "RESERVED"
  private_ip_id  = ""
}

resource "oci_core_instance" "pubiptest" {
  count = var.instance_count
  compartment_id      = var.compartment_id
  availability_domain = data.oci_identity_availability_domains.ads.availability_domains[0].name
  display_name        = var.display_name
  shape               = var.shape

  # We will pass Reserved Public IP OCID and Private Subnet OCID as a freeform tags to the instance
  freeform_tags = {
    "publicIP" = resource.oci_core_public_ip.pubip[count.index].id
    "SubnetId" = var.private_subnet_id
    }

  create_vnic_details {
    display_name     = var.vnic_display_name
    assign_public_ip = true
    subnet_id        = var.public_subnet_id
  }

  source_details {
    source_type = var.source_type
    source_id   = var.source_id
  }

  metadata = {
    ssh_authorized_keys = var.pub_key
    user_data = "${base64encode(file("./cloud-init.sh"))}"
  }
}

O script acima criará um IP Reservado (considerando o valor da variável de contagem) e girará uma Instância do Serviço Compute com IP Efêmero, que é anexada à VNIC Principal.

Nos Metadados de Computação, passaremos no script cloud-init, que designará o IP Reservado substituindo o IP Efêmero existente.

Tarefa 2: Compreender o Script cloud-init

Tarefa 2.1: Instalar a CLI do OCI e outras ferramentas necessárias

Use o comando a seguir para instalar a CLI e o jq do OCI (Parsing JSON).

`sudo yum install -y python36-oci-cli jq`

Tarefa 2.2: Recuperar Metadados da Instância

Tarefa 2.3: Anexar VNIC Secundária

Anexe a VNIC Secundária à VM de Computação que usará a Sub-rede Privada executando o comando a seguir.

oci compute instance attach-vnic --instance-id $instanceid --subnet-id $subnetid --auth instance_principal --wait

Tarefa 2.4: Configurar Rotas

Tarefa 2.5: Fazer a rota VNIC Secundária como rota Padrão

Tarefa 2.6: Excluir IP Público Efêmero

Tarefa 2.7: Anexar IP Reservado

Temos o OCID do IP Público de tags de formato livre e excluímos o IP Ephermeral, para que possamos anexar o IP Reservado à VNIC Principal. O comando a seguir anexa o IP Reservado à VNIC Principal da instância.

assign=$(oci network public-ip update --force --auth instance_principal --public-ip-id $publicIp --private-ip-id $privateIpId --wait-for-state ASSIGNED)

Tarefa 2.8: Desanexar VNIC Secundária

Próximas Etapas

Esta é uma implementação de amostra e faz as alterações correspondentes antes de usar isso como um script cloud-init. Isso foi testado com o Oracle Linux 8.

Se você escolher qualquer outro Linux Flavor, o procedimento de instalação oci-cli será alterado. Para obter mais detalhes, consulte Instalando a CLI.

Aquisições

Autor - Rithesh Subramanian (OCI Cloud Architect)

Mais Recursos de Aprendizagem

Explore outros laboratórios no site docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.

Para obter a documentação do produto, visite o Oracle Help Center.