Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción a Oracle Cloud Infrastructure Free Tier.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar el laboratorio, sustituya estos valores por otros específicos del entorno en la nube.
Copia de imágenes personalizadas en varias regiones de Oracle Cloud Infrastructure con Terraform
Introducción
Oracle Cloud Infrastructure (OCI) utiliza imágenes para iniciar instancias. Al iniciar una instancia, puede especificar la imagen que desea utilizar. Puede crear una imagen personalizada de un disco de inicio de instancia y utilizarla para iniciar otras instancias. Las instancias iniciadas desde la imagen personalizada incluyen las personalizaciones, las configuraciones y el software instalado desde la imagen original. Las imágenes personalizadas se pueden compartir entre inquilinos y regiones mediante la importación y exportación de imágenes.
Objetivos
- Automatice el proceso de copia de imágenes personalizadas en varias regiones mediante Terraform.
Requisitos
-
Instale y configure Terraform. Para obtener más información, consulte Instalación de Terraform.
-
Instalar y configurar la interfaz de línea de comandos de Oracle Cloud Infrastructure (CLI de OCI). Para obtener más información, consulte la CLI de OCI.
-
Identificador de Oracle Cloud (OCID) de imagen personalizada que queremos copiar.
-
Cree un cubo de OCI Object Storage en cada región con la misma convención de nomenclatura. Por ejemplo,
custom-image-bucket-<region name>
. -
Configure el proveedor de OCI Terraform. Para obtener más información, consulte Configuración del Proveedor.
Tarea 1: Crear un archivo de variable
Cree un archivo de variables denominado var.tf
y agregue las siguientes variables al archivo.
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>"}
Tarea 2: Exportación de imagen personalizada a Bucket Storage mediante Terraform
Las imágenes exportadas se almacenan en el servicio OCI Object Storage. Para realizar una exportación de imagen, necesita acceso de escritura al bloque de OCI Object Storage para la imagen. El proveedor de Terraform de OCI no tiene un recurso incorporado para exportar imágenes personalizadas. Utilizaremos el provisionador local-exec
para ejecutar el comando de la CLI de OCI para exportar imágenes personalizadas.
Cree un archivo denominado 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"
}
Tarea 3: Copia del objeto de imagen personalizada exportado en todas las regiones con Terraform
Realice la lista de regiones en las que desea copiar las imágenes personalizadas y almacenarlas en un valor local. Utilizaremos el provisionador local-exec
para copiar el objeto en cada región mencionada en la lista. El comando de la CLI de OCI se ejecutará para cada región por separado.
Cree un archivo denominado 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"
}
Tarea 4: Importación de imágenes personalizadas en cada región desde OCI Object Storage
El proveedor de Terraform de OCI no proporciona recursos para importar imágenes personalizadas desde OCI Object Storage. Volveremos a utilizar el provisionador local-exec
para importar imágenes personalizadas en cada región. La importación de imágenes en cada región se realizará simultáneamente.
Cree un archivo denominado 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
}
}
Pasos siguientes
La copia manual de imágenes personalizadas a través de la consola de OCI lleva mucho tiempo. Los scripts de Terraform descritos en este tutorial reducirán el tiempo y el esfuerzo para copiar las imágenes personalizadas, ya que la importación de imágenes personalizadas se realizará simultáneamente en cada región.
Enlaces relacionados
Agradecimientos
- Autor: Nikhil Khandelwal (arquitecto de nube empresarial)
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 Oracle Learning Explorer.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Copy Custom Images to Multiple Regions in Oracle Cloud Infrastructure using Terraform
F97113-01
May 2024