Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Copia immagini personalizzate in più aree in Oracle Cloud Infrastructure utilizzando Terraform
Introduzione
Oracle Cloud Infrastructure (OCI) utilizza le immagini per avviare le istanze. Quando si avvia un'istanza, è possibile specificare l'immagine da utilizzare. È possibile creare un'immagine personalizzata di un disco di avvio dell'istanza e utilizzarla per avviare altre istanze. Le istanze avviate dall'immagine personalizzata includono le personalizzazioni, le configurazioni e il software installato dall'immagine originale. Le immagini personalizzate possono essere condivise tra tenancy e aree utilizzando l'importazione e l'esportazione delle immagini.
Obiettivi
- Automatizza il processo di copia di immagini personalizzate in più aree utilizzando Terraform.
Prerequisiti
-
Installare e impostare Terraform. Per ulteriori informazioni, vedere Installa Terraform.
-
Installare e configurare l'interfaccia della riga di comando di Oracle Cloud Infrastructure (OCI CLI). Per ulteriori informazioni, vedere CLI OCI.
-
Identificativo Oracle Cloud (OCID) dell'immagine personalizzata che si desidera copiare.
-
Crea un bucket di storage degli oggetti OCI in ogni area con la stessa convenzione di denominazione. Ad esempio,
custom-image-bucket-<region name>
. -
Configurare il provider Terraform OCI. Per ulteriori informazioni, vedere Configurazione del provider.
Task 1: Creare un file variabile
Creare un file di variabili denominato var.tf
e aggiungere le seguenti variabili nel file.
variable compartment_id { default = "<compartment ocid>" }
variable region { default = "<Region name where base custom image will be exported>" }
variable custom_image_ocid {default = "<custom image ocid>"}
variable bucket_name { default = "prefix of bucket names of each region"}
variable os_namespace { default = "<namespace of object storage where base custom image will be exported>"}
variable imported_image_name { default = "<custom image name which will be imported in all regions>"}
variable base_image_name { default = "<custom image name which needs to be copied>"}
Task 2: Esporta immagine personalizzata in storage bucket utilizzando Terraform
Le immagini esportate vengono memorizzate nel servizio OCI Object Storage. Per eseguire un'esportazione di immagini, hai bisogno dell'accesso in scrittura al bucket di storage degli oggetti OCI per l'immagine. Il provider Terraform OCI non dispone di risorse incorporate per l'esportazione di immagini personalizzate. Verrà utilizzato il provisioninger local-exec
per eseguire il comando CLI OCI per l'esportazione delle immagini personalizzate.
Creare un file denominato export_image.tf
.
# Export the custom image to Object Storage
resource "null_resource" "export_image" {
provisioner "local-exec" {
command = "oci compute image export to-object --image-id ${var.custom_image_ocid} --bucket-name ${var.bucket_name}_${var.region} --namespace ${var.os_namespace} --name ${var.base_image_name}"
}
}
resource "time_sleep" "wait_15_min" {
depends_on = [null_resource.export_image]
create_duration = "900s"
}
Task 3: copiare l'oggetto Immagine personalizzata esportata in tutte le aree utilizzando Terraform
Creare la lista delle aree in cui si desidera copiare le immagini personalizzate e memorizzarle in un valore locale. Verrà utilizzato il provisioninger local-exec
per copiare l'oggetto in ogni area menzionata nell'elenco. Il comando CLI OCI verrà eseguito separatamente per ogni area.
Creare un file denominato copy_image_object.tf
.
locals {
regions = [
"us-ashburn-1",
"us-phoenix-1",
// Add more regions as needed
]
}
resource "null_resource" "copy_objects" {
# depends_on = [time_sleep.wait_15_min]
count = length(local.regions)
triggers = {
region_index = count.index
}
provisioner "local-exec" {
command = <<EOF
oci os object copy -bn ${var.bucket_name}_${var.region} --source-object-name ${var.base_image_name} --destination-bucket ${var.bucket_name}_${local.regions[count.index]} --destination-region ${local.regions[count.index]} -ns ${var.os_namespace}
EOF
}
}
resource "time_sleep" "wait_60_seconds" {
depends_on = [null_resource.copy_objects]
create_duration = "60s"
}
Task 4: Importa immagini personalizzate in ogni area da OCI Object Storage
Il provider Terraform OCI non fornisce risorse per l'importazione di immagini personalizzate dallo storage degli oggetti OCI. Verrà nuovamente utilizzato il provisioninger local-exec
per importare immagini personalizzate in ogni area. L'importazione di immagini in ogni regione avverrà simultaneamente.
Creare un file denominato import_image.tf
.
resource "null_resource" "import-image" {
depends_on = [time_sleep.wait_60_seconds]
count = length(local.regions)
triggers = {
region_index = count.index
}
provisioner "local-exec" {
command = <<EOF
oci compute image import from-object --compartment-id ${var.compartment_id} -ns ${var.os_namespace} --bucket-name ${var.bucket_name}_${local.regions[count.index]} --name ${var.base_image_name} --region ${local.regions[count.index]} --display-name ${var.imported_image_name}
EOF
}
}
Passi successivi
La copia manuale delle immagini personalizzate tramite OCI Console richiede molto tempo. Gli script Terraform descritti in questa esercitazione ridurranno i tempi e gli sforzi necessari per copiare le immagini personalizzate poiché l'importazione di immagini personalizzate verrà eseguita contemporaneamente in ogni area.
Collegamenti correlati
Riconoscimenti
- Autore - Nikhil Khandelwal (Enterprise Cloud Architect)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.
Per la documentazione del prodotto, visitare Oracle Help Center.
Copy Custom Images to Multiple Regions in Oracle Cloud Infrastructure using Terraform
F97116-01
May 2024