Assinando Configurações do Terraform para Imagens do Marketplace

Crie uma instância e um acordo para assinar configurações do Terraform em imagens do Marketplace.

Para inscrever as configurações do Terraform em imagens do Marketplace, siga estas etapas:

  1. Crie uma instância com base em uma imagem publicada do Marketplace.
    Para concluir esta etapa, adicione os seguintes recursos na configuração do Terraform:
    • oci_core_app_catalog_listing_resource_version_agreement
    • oci_core_app_catalog_subscription
  2. Crie uma assinatura e um contrato de versão do recurso.
    Para concluir esta etapa, você deve fornecer as seguintes informações:
    • Listing OCID (mp_listing_id)
    • Package Version Reference (mp_listing_resource_version)
    • Marketplace Image OCID (mp_listing_resource_id)
  3. Obtenha valores para Listing OCID, Package Version Reference, and Marketplace Image OCID, da seguinte forma:
    Para obter estes valores:
    1. Acesse o Portal do Parceiro.
    2. Clique em Listings.
    3. Na página Listings, clique na guia Publicado.
    4. Selecione a listagem de imagens que você está assinando, clique no ícone de menu (o ícone de quatro linhas) no canto direito dessa linha e selecione Exibir Listagem.
    5. Na página Editar Listagem, clique na guia Pacote de Instalação do Aplicativo.
    6. Na lista Versões do Pacote, clique na versão da listagem de imagens que você está assinando.
    7. Na seção Definir informações do pacote, copie os seguintes valores:
      • Listing OCID (mp_listing_id)
      • Package Version Reference (mp_listing_resource_version)
    8. Na seção Configurar Imagem do OCI Compute, copie o valor de Marketplace image ocid (mp_listing_resource_id).
  4. O exemplo a seguir cria uma assinatura de imagem do Marketplace. Para obter um exemplo completo, consulte:
    https://github.com/oracle-quickstart/oci-quickstart-template/blob/master/image_subscription.tf
    # Local variables pointing to the Marketplace catalog resource
    # Eg. Modify accordingly to your Application/Listing
    locals {
      mp_listing_id               = "${var.mp_listing_id}"
      mp_listing_resource_id      = "${var.mp_listing_resource_id}"
      mp_listing_resource_version = "${var.mp_listing_resource_version}"
    }
     
     
    # Get Image Agreement
    resource "oci_core_app_catalog_listing_resource_version_agreement" "mp_image_agreement" {
      count = "${var.use_marketplace_image ? 1 : 0}"
     
      listing_id               = "${local.mp_listing_id}"
      listing_resource_version = "${local.mp_listing_resource_version}"
    }
     
    # Accept Terms and Subscribe to the image, placing the image in a particular compartment
    resource "oci_core_app_catalog_subscription" "mp_image_subscription" {
      count                    = "${var.use_marketplace_image ? 1 : 0}"
      compartment_id           = "${var.compartment_ocid}"
      eula_link                = "${oci_core_app_catalog_listing_resource_version_agreement.mp_image_agreement.eula_link}"
      listing_id               = "${oci_core_app_catalog_listing_resource_version_agreement.mp_image_agreement.listing_id}"
      listing_resource_version = "${oci_core_app_catalog_listing_resource_version_agreement.mp_image_agreement.listing_resource_version}"
      oracle_terms_of_use_link = "${oci_core_app_catalog_listing_resource_version_agreement.mp_image_agreement.oracle_terms_of_use_link}"
      signature                = "${oci_core_app_catalog_listing_resource_version_agreement.mp_image_agreement.signature}"
      time_retrieved           = "${oci_core_app_catalog_listing_resource_version_agreement.mp_image_agreement.time_retrieved}"
     
      timeouts {
        create = "20m"
      }
    }
     
    # Gets the partner image subscription
    data "oci_core_app_catalog_subscriptions" "mp_image_subscription" {
      #Required
      compartment_id = "${var.compartment_ocid}"
     
      #Optional
      listing_id = "${local.mp_listing_id}"
     
      filter {
        name   = "listing_resource_version"
        values = ["${local.mp_listing_resource_version}"]
    }
     
     
    # Reference the Marketplace Image
    resource "oci_core_instance" "instance" {
      // availability_domain = "${data.oci_identity_availability_domain.ad.name}"
      //...
     
      source_details {
        source_type = "image"
        source_id   = "${var.use_marketplace_image ? local.mp_listing_resource_id : var.custom_image_id}"
      }
     
      timeouts {
        create = "60m"
      }
    }