Nota:

Collega un IP riservato a un'istanza di computazione Oracle Cloud Infrastructure utilizzando Terraform e uno script di inizializzazione cloud

Introduzione

Nel mondo dell'infrastruttura sotto forma di codice (IaC), l'automazione del provisioning e della configurazione delle istanze di computazione è essenziale per distribuzioni cloud efficienti e scalabili. Quando si tratta di collegare gli indirizzi IP riservati alle istanze di computazione Oracle Cloud Infrastructure (OCI), Terraform e cloud-init forniscono una potente combinazione.

Nel modulo Terraform di OCI Compute non è disponibile alcuna opzione per collegare un IP riservato a un'istanza di computazione durante la creazione dell'istanza. È possibile collegare l'IP riservato solo dopo la creazione dell'istanza. In questo post del blog esploreremo come utilizzare lo script Terraform e cloud-init per collegare senza problemi un IP riservato a un'istanza di computazione OCI.

Obiettivo

Collega un IP riservato a un'istanza di computazione OCI in modo trasparente utilizzando Terraform e uno script cloud-init.

Descrizione di un IP riservato

Un indirizzo IP riservato è un IP statico assegnato a un'istanza di computazione all'interno di una rete virtuale. Garantisce la connettività coerente per le applicazioni che richiedono un IP fisso e semplifica l'amministrazione della rete. Gli IP riservati vengono comunemente utilizzati in scenari come il bilanciamento del carico, le regole firewall e la comunicazione di rete sicura.

Prerequisiti

In primo luogo, è necessario accedere a un ambiente OCI. Se non disponi di un'istanza, puoi creare facilmente l'istanza Sempre gratis, dotata di tanta capacità gratuita e 300 dollari di crediti di prova.

Quando si dispone di un ambiente, assicurarsi che l'utente sia stato assegnato a un gruppo con le autorizzazioni per gestire le risorse della famiglia di istanze e la famiglia di storage. Una procedura ottimale di sicurezza prevede la creazione di un utente anziché l'utilizzo di un utente della console a cui sono già assegnate autorizzazioni. Se hai bisogno di aiuto, consulta la documentazione per creare un gruppo e concedere le autorizzazioni appropriate agli utenti.

  1. Account OCI
  2. Accesso a Terraform. Vedere questo collegamento per ulteriori dettagli.
  3. Subnet pubblica, in cui verrà avviata l'istanza. Deve essere collegato a un gateway Internet.
  4. Subnet privata, in cui la VNIC secondaria viene creata e assegna l'IP riservato. Deve essere collegato a un gateway di servizi.
  5. Gruppo dinamico in cui le risorse del gruppo richiedono le autorizzazioni per gestire la famiglia di rete.
  6. È necessario configurare i criteri per l'autenticazione del principal istanza.

Task 1: Impostazione di uno script Terraform

In quest'area verrà aggiunto uno script di inizializzazione cloud come metadati a un modulo di istanza di computazione Terraform OCI. Inoltre, passeremo l'OCID IP riservato e l'OCID subnet privata alla VM di computazione come tag in formato libero.

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

Lo script precedente creerà un IP riservato (considerando il valore della variabile di conteggio) e attiverà un'istanza di computazione con un IP effimero, collegato alla VNIC primaria.

Nei metadati di computazione passeremo lo script cloud-init, che assegnerà l'IP riservato sostituendo l'IP effimero esistente.

Task 2: Comprendere lo script cloud-init

Task 2.1: installare l'interfaccia CLI OCI e altri strumenti necessari

Utilizzare il comando riportato di seguito per installare CLI e jq OCI (analisi JSON).

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

Task 2.2: Recupera metadati istanza

Task 2.3: Collega VNIC secondaria

Collega la VNIC secondaria alla VM di computazione che utilizzerà la subnet privata eseguendo il comando seguente.

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

Task 2.4: Configura instradamenti

Task 2.5: Imposta instradamento VNIC secondario come instradamento predefinito

Task 2.6: Elimina IP pubblico effimero

Task 2.7: Allega IP riservato

Abbiamo l'OCID IP pubblico dalle tag in formato libero e abbiamo eliminato l'IP effimero in modo da poter collegare l'IP riservato alla VNIC primaria. Il comando riportato di seguito consente di collegare l'IP riservato alla VNIC primaria dell'istanza.

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

Task 2.8: Scollegare la VNIC secondaria

Passi successivi

Questo è un'implementazione di esempio e apporta le modifiche corrispondenti prima di utilizzare questo script come script cloud-init. Questo è stato testato con Oracle Linux 8.

Se si sceglie un valore qualsiasi per Linux Flavor, la procedura di installazione oci-cli verrà modificata. Per ulteriori dettagli, vedere Installazione dell'interfaccia CLI.

Approvazioni

Autore - Rithesh Subramanian (Architetto cloud OCI)

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a contenuti di formazione gratuiti sul canale YouTube di Oracle Learning. Inoltre, visitare education.oracle.com/learning-explorer per diventare Explorer di Oracle Learning.

Per la documentazione sul prodotto, visitare il sito Oracle Help Center.