Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. A la fin de l'exercice, remplacez ces valeurs par des valeurs propres à votre environnement cloud.
Copie d'images personnalisées vers plusieurs régions dans Oracle Cloud Infrastructure à l'aide de Terraform
Introduction
Oracle Cloud Infrastructure (OCI) utilise des images pour lancer des instances. Lors du lancement d'une instance, vous pouvez indiquer l'image à utiliser. Vous pouvez créer une image personnalisée d'un disque d'initialisation d'instance et l'utiliser pour le lancement d'autres instances. Les instances lancées à partir de votre image personnalisée incluent les personnalisations, les configurations et les logiciels installés à partir de l'image d'origine. Les images personnalisées peuvent être partagées entre des locations et des régions à l'aide de l'import et de l'export d'image.
Objectifs
- Automatiser le processus de copie d'images personnalisées dans plusieurs régions à l'aide de Terraform.
Prérequis
-
Installez et configurez Terraform. Pour plus d'informations, reportez-vous à Installation de Terraform.
-
Installation et configuration de l'interface de ligne de commande Oracle Cloud Infrastructure. Pour plus d'informations, reportez-vous à Interface de ligne de commande OCI.
-
Identificateur Oracle Cloud (OCID) de l'image personnalisée à copier.
-
Créez un bucket OCI Object Storage dans chaque région avec la même convention de dénomination. Par exemple,
custom-image-bucket-<region name>
. -
Configurer le fournisseur OCI Terraform Pour plus d'informations sur la configuration du fournisseur.
Tâche 1 : Créer un fichier de variables
Créez un fichier de variables nommé var.tf
et ajoutez les variables suivantes dans le fichier.
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>"}
Tâche 2 : export d'une image personnalisée vers le stockage de bucket à l'aide de Terraform
Les images exportées sont stockées dans le service OCI Object Storage. Afin d'effectuer un export d'image, vous devez disposer d'un accès en écriture au bucket OCI Object Storage pour l'image. Le fournisseur OCI Terraform ne dispose pas de ressource intégrée pour l'export d'images personnalisées. Nous allons utiliser le provisionnementeur local-exec
pour exécuter la commande d'interface de ligne de commande OCI afin d'exporter des images personnalisées.
Créez un fichier nommé 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"
}
Tâche 3 : copier l'objet d'image personnalisée exportée vers toutes les régions à l'aide de Terraform
Dressez la liste des régions dans lesquelles vous souhaitez copier les images personnalisées et stockez-les dans une valeur locale. Nous utiliserons le provisionneur local-exec
pour copier l'objet dans toutes les régions mentionnées dans la liste. La commande d'interface de ligne de commande OCI sera exécutée séparément pour chaque région.
Créez un fichier nommé 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"
}
Tâche 4 : import d'images personnalisées dans chaque région à partir d'OCI Object Storage
Le fournisseur OCI Terraform ne fournit pas de ressources pour l'import d'images personnalisées à partir d'OCI Object Storage. Nous utiliserons à nouveau le provisionnement local-exec
pour l'import d'images personnalisées dans chaque région. L'importation d'images dans chaque région se fera simultanément.
Créez un fichier nommé 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
}
}
Etapes suivantes
La copie manuelle d'images personnalisées via la console OCI prend beaucoup de temps. Les scripts Terraform décrits dans ce tutoriel réduiront le temps et les efforts de copie des images personnalisées car l'import d'images personnalisées sera effectué simultanément dans chaque région.
Liens connexes
Remerciements
- Auteur - Nikhil Khandelwal (architecte cloud d'entreprise)
Ressources de formation supplémentaires
Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, rendez-vous sur education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.
Copy Custom Images to Multiple Regions in Oracle Cloud Infrastructure using Terraform
F97115-01
May 2024