Nota:

Conecte una IP reservada a una instancia de Oracle Cloud Infrastructure Compute mediante Terraform y un script cloud-init

Introducción

En el mundo de la infraestructura como código (IaC), la automatización del aprovisionamiento y la configuración de instancias informáticas es esencial para despliegues en la nube eficientes y ampliables. Cuando se trata de asociar direcciones IP reservadas a instancias informáticas de Oracle Cloud Infrastructure (OCI), Terraform y cloud-init proporcionan una potente combinación.

En el módulo Terraform de recursos informáticos de OCI, no hay ninguna opción para asociar una IP reservada a una instancia informática mientras se crea la instancia. Solo se puede asociar una IP reservada después de crear la instancia. En esta entrada del blog, descubriremos cómo aprovechar Terraform y el script cloud-init para asociar una IP reservada a una instancia de OCI Compute sin problemas.

Objetivo

Asocie una IP reservada a una instancia de OCI Compute sin problemas mediante el script cloud-init y Terraform.

¿Qué es una IP reservada?

Una dirección IP reservada es una IP estática asignada a una instancia informática dentro de una red virtual. Garantiza una conectividad consistente para las aplicaciones que requieren una IP fija y simplifica la administración de la red. Las IP reservadas se suelen utilizar en escenarios como el equilibrio de carga, las reglas de firewall y la comunicación de red segura.

Requisitos

En primer lugar, necesita acceder a un entorno de OCI. Si no tiene una, puede crear fácilmente su instancia Siempre gratis, que incluye mucha capacidad gratuita y 300 dólares en créditos de prueba.

Cuando tenga un entorno, asegúrese de que el usuario se haya asignado a un grupo con permisos para gestionar la familia de almacenamiento y los recursos instance-family. Una práctica recomendada de seguridad le permite crear un usuario, en lugar de utilizar un usuario de consola que ya tiene permisos asignados. Si necesita ayuda, consulte los documentos para crear un grupo y otorgar los permisos adecuados a los usuarios.

  1. Cuenta de OCI
  2. Acceso a Terraform. Consulte este enlace para obtener más información.
  3. Subred pública, donde se iniciará la instancia. Debe estar asociado a un gateway de Internet.
  4. Subred privada, donde se crea la VNIC secundaria y se asigna la IP reservada. Debe estar asociado a un gateway de servicio.
  5. Grupo dinámico en el que los recursos del grupo necesitan los permisos para gestionar la familia de redes.
  6. Las políticas se deben configurar para la autenticación de principal de instancia.

Tarea 1: Configuración de un script de Terraform

Aquí, agregaremos un script cloud-init como metadatos a un módulo de instancia informática de creación de Terraform de OCI. Además, transferiremos el OCID de IP reservada y el OCID de subred privada a la máquina virtual de Compute como etiquetas de formato libre.

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"))}"
  }
}

El script anterior creará una IP reservada (teniendo en cuenta el valor de la variable de recuento) y activará una instancia informática con IP efímera, que se conecta a la VNIC principal.

En los metadatos de recursos informáticos, transferiremos el script cloud-init, que asignará la IP reservada mediante la sustitución de la IP efímera existente.

Tarea 2: Descripción del script cloud-init

Tarea 2.1: Instalación de la CLI de OCI y otras herramientas necesarias

Utilice el siguiente comando para instalar OCI CLI y jq (análisis de JSON).

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

Tarea 2.2: Recuperación de metadatos de instancia

Tarea 2.3: Asociación de VNIC secundario

Conecte la VNIC secundaria a la máquina virtual de Compute que utilizará la subred privada ejecutando el siguiente comando.

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

Tarea 2.4: Configuración de rutas

Tarea 2.5: Hacer la ruta de VNIC secundaria como ruta por defecto

Tarea 2.6: Suprimir IP pública efímera

Tarea 2.7: Asociación de IP reservada

Tenemos el OCID de IP pública de las etiquetas de formato libre y hemos suprimido la IP esférica, por lo que podemos conectar la IP reservada al VNIC primario. El siguiente comando asocia la IP reservada al VNIC primario de la instancia.

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

Tarea 2.8: Desasociar VNIC secundario

Pasos Siguientes

Esta es una implementación de ejemplo y realice los cambios correspondientes antes de usarla como un script cloud-init. Esto se ha probado con Oracle Linux 8.

Si selecciona cualquier otro tipo de Linux, el procedimiento de instalación oci-cli cambiará. Para obtener más información, consulte Instalación de la CLI.

Agradecimientos

Autor: Rithesh Subramanian (arquitecto de OCI Cloud)

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.

Para obtener documentación sobre los productos, visite Oracle Help Center.