Note :
- Ce tutoriel nécessite l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, voir Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les données d'identification, la location et les compartiments Oracle Cloud Infrastructure. À la fin de votre laboratoire, remplacez ces valeurs par celles propres à votre environnement en nuage.
Copier des images personnalisées dans plusieurs régions d'Oracle Cloud Infrastructure à l'aide de Terraform
Présentation
Oracle Cloud Infrastructure (OCI) utilise des images pour lancer des instances. Lors du lancement d'une instance, vous pouvez spécifier l'image à utiliser. Vous pouvez créer une image personnalisée d'un disque de démarrage d'instance et l'utiliser pour lancer 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 les locations et les régions à l'aide de l'importation et de l'exportation d'images.
Objectifs
- Automatisez le processus de copie d'images personnalisées dans plusieurs régions à l'aide de Terraform.
Préalables
-
Installez et configurez Terraform. Pour plus d'informations, voir Installer Terraform.
-
Installez et configurez l'interface de ligne de commande d'Oracle Cloud Infrastructure. Pour plus d'informations, voir Interface de ligne de commande OCI.
-
Identificateur Oracle Cloud d'image personnalisée (OCID) à copier.
-
Créez un seau de stockage d'objets OCI dans chaque région ayant la même convention d'attribution de nom. Par exemple,
custom-image-bucket-<region name>
. -
Configurez le fournisseur Terraform pour OCI. Pour plus d'informations, voir Configuration du fournisseur.
Tâche 1 : Créer un fichier de variable
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 : Exporter l'image personnalisée vers le stockage de seau à l'aide de Terraform
Les images exportées sont stockées dans le service de stockage d'objets pour OCI. Pour effectuer un exportation d'image, vous devez disposer d'un accès en écriture au compartiment du service de stockage d'objets OCI pour l'image. Le fournisseur Terraform pour OCI ne comporte pas de ressource intégrée pour l'exportation d'images personnalisées. Nous utiliserons le provisionneur local-exec
pour exécuter la commande d'interface de ligne de commande OCI pour 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 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 pour chaque région séparément.
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 : Importer des images personnalisées dans chaque région à partir du stockage d'objets OCI
Le fournisseur Terraform pour OCI ne fournit pas de ressources pour l'importation d'images personnalisées à partir du stockage d'objets OCI. Nous utiliserons à nouveau le provisionneur local-exec
pour importer des 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
}
}
Étape suivante
La copie manuelle d'images personnalisées au moyen de la console OCI prend beaucoup de temps. Les scripts Terraform décrits dans ce tutoriel réduiront le temps et l'effort de copie des images personnalisées, car l'importation d'images personnalisées se fera simultanément dans chaque région.
Liens connexes
Remerciements
- Auteur - Nikhil Khandelwal (architecte en nuage d'entreprise)
Autres ressources d'apprentissage
Explorez d'autres laboratoires sur docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal YouTube d'Oracle Learning. De plus, visitez 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
F97114-01
May 2024