OCI instance opstarten met een Marketplace-image met behulp van Terraform
24-02-2026In dit voorbeeld gebruiken we de EBS Cloud Manager-image die door het Oracle EBS-team beschikbaar wordt gesteld in de OCI Marketplace.
Ervan uitgaande dat je alle basisconfiguraties voor Terraform hebt, kunnen we verder. Laten we beginnen.
Eerst halen we alles op wat we nodig hebben om de overeenkomst voor de specifieke image te accepteren en ons er vervolgens op te abonneren.
# Get the listing id out of the data source
data "oci_core_app_catalog_listings" "ebs_cloud_manager" {
display_name = "Oracle E-Business Suite Cloud Manager"
}
# Get the versions available for the listing
data "oci_core_app_catalog_listing_resource_versions" "ebs_versions" {
listing_id = data.oci_core_app_catalog_listing.ebs_cloud_manager.listing_id
}
# Safe the latest version to a local
locals {
# Get the latest version - it's the FIRST one in the list (index 0)
latest_version = data.oci_core_app_catalog_listing_resource_versions.ebs_versions.app_catalog_listing_resource_versions[0].listing_resource_version
}
data "oci_core_app_catalog_listing_resource_version" "ebs_version" {
listing_id = data.oci_core_app_catalog_listing.ebs_cloud_manager.listing_id
resource_version = local.latest_version
}
Nu we alle details over de image of applicatielijst die we gaan gebruiken uit de gegevensbronnen hebben opgehaald, kunnen we verdergaan met de overeenkomsten.
Om alle overeenkomsten te accepteren, gebruiken we resourceblokken. Dit komt omdat we onder water alleen API-aanvragen doen. Dus dat is wat we gaan doen: resourceblokken indienen in Terraform.
# Accept the license agreement
resource "oci_core_app_catalog_listing_resource_version_agreement" "ebs_agreement" {
listing_id = data.oci_core_app_catalog_listing_resource_version.ebs_version.listing_id
listing_resource_version = data.oci_core_app_catalog_listing_resource_version.ebs_version.listing_resource_version
}
# When accept this, you receive attributes we will use in the next resource block. Now we will subscribe to the image.
resource "oci_core_app_catalog_subscription" "ebs_subscription" {
compartment_id = var.tenancy_ocid
listing_id = oci_core_app_catalog_listing_resource_version_agreement.ebs_agreement.listing_id
listing_resource_version = oci_core_app_catalog_listing_resource_version_agreement.ebs_agreement.listing_resource_version
oracle_terms_of_use_link = oci_core_app_catalog_listing_resource_version_agreement.ebs_agreement.oracle_terms_of_use_link
signature = oci_core_app_catalog_listing_resource_version_agreement.ebs_agreement.signature
time_retrieved = oci_core_app_catalog_listing_resource_version_agreement.ebs_agreement.time_retrieved
}
Je hebt je nu geabonneerd op de marketplace-image. Na het indienen ontvang je attributen van Terraform. Je kunt een van die attributen gebruiken als image voor je compute. Je geeft deze door aan de `source_details` in de compute-resource.
# Snippet of the compute resource
resource "oci_core_instance" "compute" {
display_name = var.name
availability_domain = var.availability_domain
compartment_id = var.compartment
shape = var.shape
shape_config {
ocpus = var.ocpu
memory_in_gbs = var.memory
}
source_details {
source_type = "image"
source_id = oci_core_app_catalog_subscription.ebs_subscription.listing_resource_id
boot_volume_size_in_gbs = var.bootvolsize
}
Zorg ervoor dat je dit doet voor elke marketplace-image die je wilt gebruiken, want elke image heeft een licentieovereenkomst en vereist een abonnement.
Dit is alles wat je nodig hebt om een marketplace-image in Terraform te gebruiken. Tot de volgende keer!
Mark Kempers, Infrastructuur Specialist bij MCX