Étendre les pages de la console à l'aide de documents de schéma

Vérifiez les exigences, les types pris en charge et les exemples pour les documents de schéma utilisés avec les configurations Terraform dans le gestionnaire de ressources.

Les documents de schéma sont recommandés pour les configurations Terraform lors de l'utilisation du gestionnaire de ressources. L'inclusion d'un document de schéma vous permet d'étendre des pages dans la console Oracle Cloud Infrastructure. Facilitez l'entrée de variable dans la page Créer une pile en surfant sur les contrôles de clé SSH et en attribuant un nom, en regroupant, en préalimentant dynamiquement les valeurs, etc. Définissez le texte dans l'onglet Informations sur l'application de la page Détails de la pile qui s'ouvre pour une pile créée.

Exigences pour les documents de schéma

Les documents de schéma pour Resource Manager ont les exigences suivantes :

  • Format YAML.

  • Les types de données doivent être cohérents avec la configuration Terraform associée.

    Par exemple, supposons que vous déclariez le type number pour la variable availability dans le schéma. Dans ce cas, availability doit avoir le même type déclaré (number) dans la configuration Terraform associée. (Par défaut, les variables sans type déclaré utilisent string.)

  • Positionnement dans le dossier racine du fichier de configuration Terraform du gestionnaire de ressources. (Par défaut, le document de schéma suppose que le dossier racine est le répertoire de travail.)

Types pris en charge (préalimentation dynamique et contrôles)

Cette section répertorie les types pris en charge par le gestionnaire de ressources pour la préalimentation dynamique et les contrôles.

La plupart des types nécessitent l'OCID du compartiment (dependsOn: required: compartmentId). Certains types comportent des éléments supplémentaires obligatoires ou facultatifs. Pour déterminer les éléments obligatoires et facultatifs d'un type, voir Schéma bêta pour la validation.

Facultativement, filtrez dynamiquement les listes préalimentées par d'autres variables à l'aide de dependsOn. Par exemple, filtrez les sous-réseaux par VCN. Pour plus d'informations, voir Préalimentation dynamique.

Note

Les descriptions dans les fichiers schema.yaml sont codées en HTML dans la sortie.

Lorsqu'elles sont définies dans la configuration Terraform, les variables suivantes sont préalimentées automatiquement avec les valeurs des pages de la console utilisées pour créer et modifier la pile. Les valeurs de la pile sont utilisées lorsque vous sélectionnez les actions Terraform Planifier, Appliquer et Détruire.

  • tenancy_ocid (OCID de la location)
  • compartment_ocid (OCID du compartiment)
  • region (région)
  • current_user_ocid (OCID de l'utilisateur courant)
Type (affiché sous la forme d'un champ déroulant rempli dynamiquement, sauf indication contraire) Identificateur de ressource Commentaires
file -- Surface un contrôle permettant d'ajouter un fichier unique en le supprimant ou en le parcourant. Lorsque ce contrôle est affiché, un utilisateur peut charger un fichier de n'importe quelle extension, telle qu'une clé de licence ou un certificat. Pour plus d'informations, voir Contrôle des fichiers.
oci:apm:domain:id OCID du domaine APM (Application Performance Monitoring)
oci:blockstorage:policies:id Politique de sauvegarde de volume
oci:container:cluster:id OCID des grappes Kubernetes
oci:core:image:id OCID de l'image
oci:core:instanceshape:name Nom de la forme de l'instance
oci:core:natgateway:id OCID de la passerelle NAT
oci:core:nsg:id OCID du groupe de sécurité de réseau
oci:core:servicegateway:id OCID de la passerelle de service
oci:core:ssh:publickey -- Supervise un contrôle permettant d'ajouter une ou plusieurs clés SSH publiques en supprimant des fichiers ou en collant des valeurs de clé. Pour plus d'informations, voir Contrôle de clé SSH.
oci:core:subnet:id OCID du sous-réseau
oci:core:vcn:id OCID du VCN
oci:database:autonomouscontainerdatabase:id OCID de la base de données conteneur autonome
oci:database:autonomousdatabase:id OCID d'Autonomous Database
oci:database:autonomousdatabaseversion:id Version d'Autonomous Database
oci:database:database:id OCID d'une base de données du service Base de données de base ou d'une base de données du service Exadata Database sur une infrastructure dédiée.
oci:database:dbhome:id OCID du répertoire de base de données (s'applique à la base de données de base et au service Exadata Database sur une infrastructure dédiée)
oci:database:dbsystem:id OCID du système de base de données (s'applique à la base de données de base)
oci:identity:availabilitydomain:name Nom du domaine de disponibilité
oci:identity:compartment:id OCID du compartiment
oci:identity:domains:id OCID du domaine d'identité

Indiquez l'OCID de la location compartmentId. Voir ListDomains.

oci:identity:dynamicgroups:id OCID du groupe dynamique

Indiquez l'OCID de la location compartmentId. Voir ListDynamicGroups.

oci:identity:faultdomain:name Nom du domaine d'erreur
oci:identity:groups:id OCID du groupe

Indiquez l'OCID de la location compartmentId. Voir ListGroups.

oci:identity:region:name Nom de la région
oci:identity:tag:value Nom de la clé de marqueur de l'espace de noms de marqueur; voir TagSummary Surface un contrôle permettant d'ajouter des marqueurs définis et à structure libre. Pour plus d'informations, voir Contrôle du marquage.
oci:kms:key:id OCID de la clé de chambre forte; voir ListKeys
oci:kms:secret:id OCID de la clé secrète de la chambre forte; voir ListSecrets
oci:kms:vault:id OCID de la chambre forte
oci:kubernetes:versions:id Voir GetClusterOptions
oci:loadbalancer:loadbalancer:id OCID de l'équilibreur de charge
oci:ods:project:id OCID du projet de science des données
oci:resourcemanager:privateendpoint:id OCID du point d'extrémité privé du gestionnaire de ressources Spécifiez un compartiment (compartmentId) et un VCN (vcnId) pour lister les points d'extrémité privés. Pour un exemple, voir Exemple de déclaration pour les points d'extrémité privés dans cette page.

Schéma de métadonnées pour la validation

Utilisez le fichier de méta-schéma suivant pour confirmer que votre document de schéma utilise des types de variable pris en charge.

Métaschéma
# Meta JSON Schema.
#
# This is used to validate the Schema file when the package is uploaded/loaded into Resource Manager.
# For marketplace, it is also used to validate the package when the package artifact is created in Partner Portal.
#
# NOTE: additionalProperties are set to true explicitly even though this is the default.  It must be set to true in
# cases where we use the allOf. This is a quirk of JSON Schema.  During validation, allOf means it has to match all of
# the individual definitions separately. It doesn't mean it has to match a Union of the individual definitions. This
# is a known issue with JSON Schema.
title: Schema
type: object
required:
  - variables
  - schemaVersion
additionalProperties: true
properties:
  title:
    type: string
  description:
    type: string
  stackDescription:
    type: string
  packageVersion:
    type: string
  version:
    type: string
  schemaVersion:
    type: string
    enum:
      - 1.0.0
      - 1.1.0
  locale:
    $ref: "#/definitions/locale"
  logoUrl:
    $ref: "#/definitions/url"
  source:
    $ref: "#/definitions/source"
  informationalText:
    type: string
  instructions:
    type: string
  troubleshooting:
    type: string
  allowViewState:
    type: boolean
  variables:
    $ref: "#/definitions/variables"
  # Deprecated - use variableGroups instead
  groupings:
    $ref: "#/definitions/variableGroups"
  variableGroups:
    $ref: "#/definitions/variableGroups"
  outputs:
    $ref: "#/definitions/outputs"
  outputGroups:
    $ref: "#/definitions/outputGroups"
  primaryOutputButton:
    type: string
    format: variablereference

definitions:
  source:
    type: object
    properties:
      type:
        enum:
          - marketplace
          - quickstart
          - web
      reference:
        type:
          - string
          - number
    additionalProperties: false

  variableGroups:
    type: array
    items:
      $ref: "#/definitions/variableGroup"

  variableGroup:
    type: object
    required:
      - title
      - variables
    properties:
      title:
        type: string
      variables:
        type: array
        items:
          type: string
          format: variablereference
      visible:
        $ref: "#/definitions/booleanStatement"
    additionalProperties: true

  locale:
    enum:
      - en
    default: en

  url:
    type: string
    pattern: ^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,4}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$

  ocid:
    type: string
    pattern: ^ocid1\.([a-z0-9_-]{1,32})\.([a-z0-9_-]{1,15})\.([a-z0-9]{0,24})\.([a-z0-9]{60})$

  variables:
    type: object
    additionalProperties:
      $ref: "#/definitions/variable"

  variable:
    oneOf:
      - $ref: "#/definitions/staticVariable"
      - $ref: "#/definitions/dynamicVariable"
      - $ref: "#/definitions/complexVariable"

  baseVariable:
    type: object
    properties:
      title:
        type: string
        minLength: 1
      description:
        type: string
      required:
        type: boolean
        default: false
      visible:
        $ref: "#/definitions/booleanStatement"

  booleanStatement:
    oneOf:
      - type: boolean
      - type: string
      - $ref: "#/definitions/equality"
      - $ref: "#/definitions/greaterThanOrEqual"
      - $ref: "#/definitions/lessThanOrEqual"
      - $ref: "#/definitions/greaterThan"
      - $ref: "#/definitions/lessThan"
      - $ref: "#/definitions/booleanOr"
      - $ref: "#/definitions/booleanAnd"
      - $ref: "#/definitions/booleanNot"

  equality:
    type: object
    properties:
      eq:
        type: array
        items:
          - type: [string, number]
          - type: [string, number]
        additionalItems: false
    additionalProperties: false

  greaterThanOrEqual:
    type: object
    properties:
      ge:
        type: array
        items:
          - type: [string, number]
          - type: [string, number]
        additionalItems: false
    additionalProperties: false

  lessThanOrEqual:
    type: object
    properties:
      le:
        type: array
        items:
          - type: [string, number]
          - type: [string, number]
        additionalItems: false
    additionalProperties: false

  greaterThan:
    type: object
    properties:
      gt:
        type: array
        items:
          - type: [string, number]
          - type: [string, number]
        additionalItems: false
    additionalProperties: false

  lessThan:
    type: object
    properties:
      lt:
        type: array
        items:
          - type: [string, number]
          - type: [string, number]
        additionalItems: false
    additionalProperties: false

  booleanOr:
    type: object
    properties:
      or:
        type: array
        items:
          - $ref: "#/definitions/booleanStatement"
          - $ref: "#/definitions/booleanStatement"
        additionalItems: false
    additionalProperties: false

  booleanAnd:
    type: object
    properties:
      and:
        type: array
        items:
          - $ref: "#/definitions/booleanStatement"
          - $ref: "#/definitions/booleanStatement"
        additionalItems: false
    additionalProperties: false

  booleanNot:
    type: object
    properties:
      not:
        type: array
        items:
          - $ref: "#/definitions/booleanStatement"
        additionalItems: false
    additionalProperties: false

  dependsOnCompartment:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - dependsOn
        properties:
          dependsOn:
            type: object
            required:
              - compartmentId
            properties:
              compartmentId:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  staticVariable:
    oneOf:
      - $ref: "#/definitions/arrayVariable"
      - $ref: "#/definitions/booleanVariable"
      - $ref: "#/definitions/enumVariable"
      - $ref: "#/definitions/integerVariable"
      - $ref: "#/definitions/numberVariable"
      - $ref: "#/definitions/stringVariable"
      - $ref: "#/definitions/multilineVariable"
      - $ref: "#/definitions/fileVariable"

      - $ref: "#/definitions/passwordVariable"
      - $ref: "#/definitions/datetimeVariable"

  dynamicVariable:
    oneOf:
      - $ref: "#/definitions/imageVariable"
      - $ref: "#/definitions/identityDomainVariable"
      - $ref: "#/definitions/instanceShapeVariable"
      - $ref: "#/definitions/subnetVariable"
      - $ref: "#/definitions/vcnVariable"
      - $ref: "#/definitions/availabilityDomainVariable"
      - $ref: "#/definitions/compartmentVariable"
      - $ref: "#/definitions/faultDomainVariable"
      - $ref: "#/definitions/regionVariable"
      - $ref: "#/definitions/dbSystemVariable"
      - $ref: "#/definitions/dbHomeVariable"
      - $ref: "#/definitions/dbHomeVersionVariable"
      - $ref: "#/definitions/databaseVariable"
      - $ref: "#/definitions/autonomousDatabaseVariable"
      - $ref: "#/definitions/autonomousDatabaseVersionVariable"
      - $ref: "#/definitions/autonomousContainerDBVariable"
      - $ref: "#/definitions/kmsVaultVariable"
      - $ref: "#/definitions/containerClusterVariable"
      - $ref: "#/definitions/volumeBackupPoliciesVariable"
      - $ref: "#/definitions/loadBalancerVariable"
      - $ref: "#/definitions/serviceGatewayVariable"
      - $ref: "#/definitions/kubernetesVersionsVariable"
      - $ref: "#/definitions/instanceVariable"
      - $ref: "#/definitions/natGatewayVariable"
      - $ref: "#/definitions/tagVariable"
      - $ref: "#/definitions/nsgVariable"
      - $ref: "#/definitions/mountTargetsVariable"
      - $ref: "#/definitions/kmsKeyVariable"
      - $ref: "#/definitions/kmsSecretVariable"
      - $ref: "#/definitions/odsProjectVariable"
      - $ref: "#/definitions/instanceShapeVariableWithFlex"
      - $ref: "#/definitions/groupsVariable"
      - $ref: "#/definitions/dynamicGroupsVariable"
      - $ref: "#/definitions/logAnalyticsLogGroup"
      - $ref: "#/definitions/logAnalyticsLogEntities"
      - $ref: "#/definitions/logAnalyticsScheduledTasks"
      - $ref: "#/definitions/logAnalyticsEntityTypes"
      - $ref: "#/definitions/managementAgents"
      - $ref: "#/definitions/logAnalyticsSources"
      - $ref: "#/definitions/privateEndpointVariable"
      - $ref: "#/definitions/apmDomainVariable"
  complexVariable:
    oneOf:
      - $ref: "#/definitions/listVariable"
      - $ref: "#/definitions/mapVariable"
      - $ref: "#/definitions/objectVariable"

  mapVariable: 
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required: [type, valueType]
        properties:
          type:
            enum: [map]
          default:
            type: [string]
          valueType:
            type: [string]
        additionalProperties: true

  listVariable: 
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required: [type, valueType]
        properties:
          type:
            enum: [list]
          default:
            type: [string]
          valueType:
            type: [string]
        additionalProperties: true

  objectVariable: 
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required: [type, attributes]
        properties:
          type:
            enum: [object]
          default:
            type: string
          attributes:
            type: [array]
            items:
              type: string
        additionalProperties: true

  nonNegativeInteger:
    type: integer
    minimum: 0

  nonNegativeIntegerDefault0:
    allOf:
      - $ref: "#/definitions/nonNegativeInteger"
      - default: 0

  arrayVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required: [type]
        properties:
          type:
            enum: [array]
          items:
            $ref: "#/definitions/variable"
          maxItems:
            $ref: "#/definitions/nonNegativeInteger"
          minItems:
            $ref: "#/definitions/nonNegativeIntegerDefault0"
          uniqueItems:
            type: boolean
            default: false
          contains:
            $ref: "#/definitions/variable"
        additionalProperties: true

  booleanVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required: [type]
        properties:
          type:
            enum: [boolean]
          default:
            $ref: "#/definitions/booleanStatement"
            default: false
        additionalProperties: true

  enumVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required: [type]
        properties:
          type:
            enum: [enum]
          enum:
            type: array
            items:
              type: string
          default:
            $ref: "#/definitions/booleanStatement"
          allowMultiple:
            type: boolean
            default: false
        additionalProperties: true

  integerVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required: [type]
        properties:
          type:
            enum: [integer]
          default:
            type: integer
          multipleOf:
            type: number
            exclusiveMinimum: 0
          minimum:
            type: number
          maximum:
            type: number
          exclusiveMinimum:
            type: number
          exclusiveMaximum:
            type: number
        additionalProperties: true

  numberVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required: [type]
        properties:
          type:
            enum: [number]
          default:
            type: number
          multipleOf:
            type: number
            exclusiveMinimum: 0
          minimum:
            type: number
          maximum:
            type: number
          exclusiveMinimum:
            type: number
          exclusiveMaximum:
            type: number
        additionalProperties: true

  stringVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required: [type]
        properties:
          type:
            enum: [string]
          default:
            $ref: "#/definitions/booleanStatement"
          pattern:
            type: string
          maxLength:
            $ref: "#/definitions/nonNegativeInteger"
          minLength:
            $ref: "#/definitions/nonNegativeIntegerDefault0"
        additionalProperties: true

  multilineVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required: [type]
        properties:
          type:
            enum: [text]
          default:
            $ref: "#/definitions/booleanStatement"
          pattern:
            type: string
          multiline:
            type: boolean
          maxLength:
            $ref: "#/definitions/nonNegativeInteger"
          minLength:
            $ref: "#/definitions/nonNegativeIntegerDefault0"
        additionalProperties: true

  fileVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required: [type]
        properties:
          type:
            enum: [file]
        additionalProperties: true

  passwordVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required: [type]
        properties:
          type:
            enum: [password]
          default:
            $ref: "#/definitions/booleanStatement"
          confirmation:
            $ref: "#/definitions/booleanStatement"
        additionalProperties: true

  datetimeVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required: [type]
        properties:
          type:
            enum: [datetime]
          default:
            $ref: "#/definitions/booleanStatement"
        additionalProperties: true

  identityDomainVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:identity:domains:id]
          pattern:
            type: string
          dependsOn:
            type: object
            required:
              - compartmentId
            properties:
              compartmentId:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true
  
  imageVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:core:image:id]
          pattern:
            type: string
          dependsOn:
            type: object
            required:
              - compartmentId
            properties:
              compartmentId:
                type: string
                format: variablereference
              shape:
                type: string
                format: variablereference
              operatingSystem:
                type: string
                format: variablereference
              operatingSystemVersion:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  instanceShapeVariableWithFlex:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:core:instanceshapewithflex:name]
          pattern:
            type: string
          dependsOn:
            type: object
            required:
              - compartmentId
            properties:
              imageId:
                type: string
                format: variablereference
              compartmentId:
                type: string
                format: variablereference
              availabilityDomain:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  instanceShapeVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:core:instanceshape:name]
          pattern:
            type: string
          dependsOn:
            type: object
            required:
              - compartmentId
            properties:
              imageId:
                type: string
                format: variablereference
              compartmentId:
                type: string
                format: variablereference
              availabilityDomain:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  natGatewayVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:core:natgateway:id]
          dependsOn:
            type: object
            required:
              - compartmentId
            properties:
              vcnId:
                type: string
                format: variablereference
              compartmentId:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  instanceVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:core:instance:id]
          dependsOn:
            type: object
            required:
              - compartmentId
            properties:
              compartmentId:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  subnetVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:core:subnet:id]
          dependsOn:
            type: object
            required:
              - vcnId
              - compartmentId
            properties:
              vcnId:
                type: string
                format: variablereference
              compartmentId:
                type: string
                format: variablereference
              hidePublicSubnet:
                $ref: "#/definitions/booleanStatement"
              hidePrivateSubnet:
                $ref: "#/definitions/booleanStatement"
              hideRegionalSubnet:
                $ref: "#/definitions/booleanStatement"
              hideAdSubnet:
                $ref: "#/definitions/booleanStatement"
            additionalProperties: false
        additionalProperties: true

  serviceGatewayVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:core:servicegateway:id]
          dependsOn:
            type: object
            required:
              - compartmentId
            properties:
              vcnId:
                type: string
                format: variablereference
              compartmentId:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  logAnalyticsLogGroup:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:logan:loggroup:id]
          dependsOn:
            type: object
            required:
              - compartmentId
            properties:
              compartmentId:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  logAnalyticsScheduledTasks:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:logan:scheduledtask:id]
          dependsOn:
            type: object
            required:
              - compartmentId
              - taskType
            properties:
              compartmentId:
                type: string
                format: variablereference
              taskType:
                type: string
            additionalProperties: false
        additionalProperties: true

  logAnalyticsLogEntities:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:logan:logentity:id]
          dependsOn:
            type: object
            required:
              - compartmentId
            properties:
              compartmentId:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  logAnalyticsEntityTypes:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
        properties:
          type:
            enum: [oci:logan:entitytype:id]
        additionalProperties: true

  managementAgents:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:mgmt:agent:id]
          dependsOn:
            type: object
            required:
              - compartmentId
            properties:
              compartmentId:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  logAnalyticsSources:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:logan:source:id]
          dependsOn:
            type: object
            required:
              - compartmentId
            properties:
              compartmentId:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  nsgVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:core:nsg:id]
          dependsOn:
            type: object
            required:
              - compartmentId
            properties:
              vcnId:
                type: string
                format: variablereference
              compartmentId:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  vcnVariable:
    allOf:
      - $ref: "#/definitions/dependsOnCompartment"
      - required: [type]
        properties:
          type:
            enum: [oci:core:vcn:id]
        additionalProperties: true

  availabilityDomainVariable:
    allOf:
      - $ref: "#/definitions/dependsOnCompartment"
      - required: [type]
        properties:
          type:
            enum: [oci:identity:availabilitydomain:name]
        additionalProperties: true

  compartmentVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required: [type]
        properties:
          type:
            enum: [oci:identity:compartment:id]
          default:
            $ref: "#/definitions/booleanStatement"
        additionalProperties: true

  faultDomainVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:identity:faultdomain:name]
          dependsOn:
            type: object
            required:
              - compartmentId
              - availabilityDomainName
            properties:
              compartmentId:
                type: string
                format: variablereference
              availabilityDomainName:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  regionVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required: [type]
        properties:
          type:
            enum: [oci:identity:region:name]
          default:
            $ref: "#/definitions/booleanStatement"
            default: ${session.region}
        additionalProperties: true

  dbSystemVariable:
    allOf:
      - $ref: "#/definitions/dependsOnCompartment"
      - required: [type]
        properties:
          type:
            enum: [oci:database:dbsystem:id]
        additionalProperties: true

  dbHomeVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:database:dbhome:id]
          dependsOn:
            type: object
            required:
              - dbSystemId
              - compartmentId
            properties:
              dbSystemId:
                type: string
                format: variablereference
              compartmentId:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  dbHomeVersionVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:database:dbhome:dbversion]
          dependsOn:
            type: object
            required:
              - dbHomeId
            properties:
              dbHomeId:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  databaseVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:database:database:id]
          dependsOn:
            type: object
            required:
              - dbHomeId
              - compartmentId
            properties:
              dbHomeId:
                type: string
                format: variablereference
              compartmentId:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  autonomousDatabaseVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:database:autonomousdatabase:id]
          dependsOn:
            type: object
            required:
              - compartmentId
            properties:
              compartmentId:
                type: string
                format: variablereference
              dbWorkload:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  autonomousDatabaseVersionVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:database:autonomousdatabaseversion:id]
          dependsOn:
            type: object
            properties:
              compartmentId:
                type: string
                format: variablereference
              dbWorkload:
                type: string
                format: variablereference
              additionalProperties: false
        additionalProperties: true

  autonomousContainerDBVariable:
    allOf:
      - $ref: "#/definitions/dependsOnCompartment"
      - required: [type]
        properties:
          type:
            enum: [oci:database:autonomouscontainerdatabase:id]
        additionalProperties: true

  kmsVaultVariable:
    allOf:
      - $ref: "#/definitions/dependsOnCompartment"
      - required: [type]
        properties:
          type:
            enum: [oci:kms:vault:id]
        additionalProperties: true

  kmsKeyVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:kms:key:id]
          dependsOn:
            type: object
            required:
              - compartmentId
              - vaultId
            properties:
              compartmentId:
                type: string
                format: variablereference
              vaultId:
                type: string
                format: variablereference
              protectionMode:
                type: string
                format: variablereference
              algorithm:
                type: string
                format: variablereference
              length:
                type: number
                format: variablereference
              curveId:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  kmsSecretVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:kms:secret:id]
          dependsOn:
            type: object
            required:
              - compartmentId
            properties:
              compartmentId:
                type: string
                format: variablereference
              vaultId:
                type: string
                format: variablereference
              name:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  containerClusterVariable:
    allOf:
      - $ref: "#/definitions/dependsOnCompartment"
      - required: [type]
        properties:
          type:
            enum: [oci:container:cluster:id]
        additionalProperties: true

  sshPublicKeyVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required: [type]
        properties:
          type:
            enum: [oci:core:ssh:publickey]
        additionalProperties: true

  kubernetesVersionsVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:kubernetes:versions:id]
          dependsOn:
            type: object
            required:
              - clusterOptionId
              - compartmentId
            properties:
              clusterOptionId:
                type: string
                format: variablereference
              compartmentId:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  volumeBackupPoliciesVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required: [type]
        properties:
          type:
            enum: [oci:blockstorage:policies:id]
          dependsOn:
            type: object
            properties:
              compartmentId:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  groupsVariable:
    allOf:
      - $ref: "#/definitions/dependsOnCompartment"
      - required: [type]
        properties:
          type:
            enum: [oci:identity:groups:id]
        additionalProperties: true

  dynamicGroupsVariable:
    allOf:
      - $ref: "#/definitions/dependsOnCompartment"
      - required: [type]
        properties:
          type:
            enum: [oci:identity:dynamicgroups:id]
        additionalProperties: true

  loadBalancerVariable:
    allOf:
      - $ref: "#/definitions/dependsOnCompartment"
      - required: [type]
        properties:
          type:
            enum: [oci:loadbalancer:loadbalancer:id]
          pattern:
            type: string
        additionalProperties: true

  mountTargetsVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required:
          - type
          - dependsOn
        properties:
          type:
            enum: [oci:mount:target:id]
          dependsOn:
            type: object
            required:
              - compartmentId
              - availabilityDomain
            properties:
              availabilityDomain:
                type: string
                format: variablereference
              compartmentId:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  tagVariable:
    allOf:
      - $ref: "#/definitions/dependsOnCompartment"
      - required: [type]
        properties:
          type:
            enum: [oci:identity:tag:value]
        additionalProperties: true

  odsProjectVariable:
    allOf:
      - $ref: "#/definitions/dependsOnCompartment"
      - required: [type]
        properties:
          type:
            enum: [oci:ods:project:id]
        additionalProperties: true

  privateEndpointVariable:
    allOf:
      - $ref: "#/definitions/baseVariable"
      - required: [type]
        properties:
          type:
            enum: [oci:resourcemanager:privateendpoint:id]
          dependsOn:
            type: object
            required:
              - compartmentId
              - vcnId
            properties:
              compartmentId:
                type: string
                format: variablereference
              vcnId:
                type: string
                format: variablereference
            additionalProperties: false
        additionalProperties: true

  apmDomainVariable:
    allOf:
      - $ref: "#/definitions/dependsOnCompartment"
      - required: [type]
        properties:
          type:
            enum: [oci:apm:domain:id]
        additionalProperties: true

  outputs:
    type: object
    additionalProperties:
      $ref: "#/definitions/output"

  output:
    oneOf:
      - $ref: "#/definitions/booleanOutput"
      - $ref: "#/definitions/numberOutput"
      - $ref: "#/definitions/stringOutput"
      - $ref: "#/definitions/copyableStringOutput"
      - $ref: "#/definitions/linkOutput"
      - $ref: "#/definitions/ocidOutput"
      - $ref: "#/definitions/mapOutput"
      - $ref: "#/definitions/jsonOutput"
      - $ref: "#/definitions/listOutput"
      - $ref: "#/definitions/csvOutput"

  outputGroups:
    type: array
    items:
      $ref: "#/definitions/outputGroup"

  outputGroup:
    type: object
    required:
      - title
      - outputs
    properties:
      title:
        type: string
      outputs:
        type: array
        items:
          type: string
    additionalProperties: true

  baseOutput:
    type: object
    properties:
      title:
        type: string
      description:
        type: string
      sensitive:
        type: boolean
        default: false
      format:
        type: string
      visible:
        type: boolean
        default: true
    additionalProperties: true

  booleanOutput:
    allOf:
      - $ref: "#/definitions/baseOutput"
      - required: [type]
        properties:
          type:
            enum: [boolean]
          value:
            type: boolean
        additionalProperties: true

  numberOutput:
    allOf:
      - $ref: "#/definitions/baseOutput"
      - required: [type]
        properties:
          type:
            enum: [number]
          value:
            type: number
        additionalProperties: true

  stringOutput:
    allOf:
      - $ref: "#/definitions/baseOutput"
      - required: [type]
        properties:
          type:
            enum: [string]
          value:
            type: string
        additionalProperties: true

  copyableStringOutput:
    allOf:
      - $ref: "#/definitions/baseOutput"
      - required: [type]
        properties:
          type:
            enum: [copyableString]
          value:
            type: string
        additionalProperties: true

  mapOutput:
    allOf:
      - $ref: "#/definitions/baseOutput"
      - required: [type]
        properties:
          type:
            enum: [map]
          value:
            type: object
        additionalProperties: true

  jsonOutput:
    allOf:
      - $ref: "#/definitions/baseOutput"
      - required: [type]
        properties:
          type:
            enum: [json]
          value:
            type: object
        additionalProperties: true

  listOutput:
    allOf:
      - $ref: "#/definitions/baseOutput"
      - required: [type]
        properties:
          type:
            enum: [list]
          value:
            type: array
        additionalProperties: true

  csvOutput:
    allOf:
      - $ref: "#/definitions/baseOutput"
      - required: [type]
        properties:
          type:
            enum: [csv]
          value:
            type: array
        additionalProperties: true

  linkOutput:
    allOf:
      - $ref: "#/definitions/baseOutput"
      - required: [type]
        properties:
          type:
            enum: [link]
          displayText:
            type: string
            minLength: 3
            maxLength: 45
          value:
            $ref: "#/definitions/url"
        additionalProperties: true

  ocidOutput:
    allOf:
      - $ref: "#/definitions/baseOutput"
      - required: [type]
        properties:
          type:
            enum: [ocid]
          value:
            $ref: "#/definitions/ocid"
        additionalProperties: true

Exemple de document de schéma

Voici un exemple de document de schéma.

Exemple
# Title shown in Application Information tab.
title: Sample input variable schema
# Sub Title shown in Application Information tab.
description: Sample description...
informationalText: Sample informational text to display in tab...
schemaVersion: 1.1.0
version: "20190304"

# URL of Logo Icon used on Application Information tab. Logo must be 130x130 pixels.
# (Optional)
logoUrl: https://cloudmarketplace.oracle.com/marketplace/content?contentId=53066708

# Used in Application Information tab to Hyperlink Title and Logo to the Marketplace
# Listing.
# Also used to link to Listing Usage section for "View Instructions".
# (Optional) If it is missing, Application Information uses the
# "marketplace-listing-id" tag for the same purpose.
source:
  type: marketplace
  reference: 16132843

locale: "en"
variableGroups:
  - title: "Node Configuration"
    variables:
      - targetCompartment
      - ${nodeCount}
      - ${nodeShapes}
      - ${availability}
  - title: "Application Details"
    variables:
      - ${username}
      - ${password}
      - ${dnsServers}
  - title: "Subnet"
    variables:
      - ${vcnCompartment}
      - ${myVcn}
      - ${subnetCompartment}
      - ${mySubnet}
      - ${mySubnetWithFilter}
      - ${hide_public_subnet}
      - ${hide_private_subnet}
      - ${hide_regional_subnet}
      - ${hide_ad_subnet}
  - title: "Network Configuration"
    variables:
      - ${service_gateway}
      - ${nat_gateway}
      - ${load_balancer}
      - ${myNsg}
      - ${Kubernetes_version}
      - ${backup_policies}
      - ${mount_target}
  - title: "Existing Groups"
    variables:
      - ${iam_groups_use_existing}
  - title: "Identity"
    variables:
      - ${iam_groups}
      - ${iam_dynamic_groups}
      - ${iam_domains}
  - title: "Database"
    variables:
      - ${dbCompartment}
      - ${myDbSystem}
      - ${myDbHome}
      - ${myDb}
      - ${myAutonomousDB}
      - ${myAutonomousDBVersion}
  - title: "Advanced"
    variables:
      - ${myImageId}
      - ${myInstance}
      - ${myShape}
      - ${myCompatibleShape}
      - ${myCompatibleShapeBasedOnAd}
      - ${multilineText}
    visible: true
  - title: "Complex Variables"
    variables:
      - ${shapesList}
      - ${subnet_ocids}
      - ${compute_instance_config}
    visible: true
  - title: "Hidden"
    variables:
      - ${myRegion}
    visible: false
  - title: "Existing Vcn"
    variables:
      - ${myVcn}
    visible:
      or:
        - ${useExistingVcn}
        - and:
            - and:
                - true
                - true
            - not:
                - false
  - title: "Password can't be 'password'!"
    variables:
      - ${password}
  - title: "Complex Conditional Section"
    variables:
      - ${myVcn}
    visible:
      or:
        - ${useExistingVcn}
        - and:
            - and:
                - true
                - true
            - not:
                - false
  - title: "Equality Conditional Section"
    variables:
      - ${myVcn}
    visible:
      eq:
        - ${objectStorageTier}
        - standard
  - title: "Less than Conditional Section"
    variables:
      - ${myVcn}
    visible:
      lt:
        - ${availability}
        - 5
  - title: "Less than or Equal Conditional Section"
    variables:
      - ${myVcn}
    visible:
      le:
        - ${availability}
        - 4
  - title: "Greater than Conditional Section"
    variables:
      - ${myVcn}
    visible:
      gt:
        - ${availability}
        - 5
  - title: "Greater than or Equal Conditional Section"
    variables:
      - ${myVcn}
    visible:
      ge:
        - ${availability}
        - 4
  - title: "Vault section"
    variables:
      - ${myVault}
      - ${myVaultKey}
      - ${mode}
      - ${myCompatibleKey}
      - ${algo}
      - ${myCompatibleKeyBasedOnAlgo}
      - ${mySecret}
      - ${myVaultSecret}
  - title: "DataScience"
    variables:
      - ${ods_project_ocid}
  - title: "Generic File"
    variables:
      - ${generic_file}
  - title: "Resource Tagging"
    variables:
      - ${tag}
  - title: "Resource Manager Section"
    variables:
      - ${private_endpoint_ocid}
  - title: "APM Domain Selection"
    variables:
      - ${apmDomain}

variables:
  # string field
  username:
    type: string
    minLength: 1
    maxLength: 255
    pattern: "^[a-z][a-zA-Z0-9]+$"
    # title is used as the label if present
    title: Username
    # description used as the tooltip if present
    description: Enter your username
    default: admin
    required: true

  # password field
  password:
    description: Really Bad Password Field
    type: password
    pattern: "^[a-zA-z]{1,8}$"
    required: true

  # integer field
  nodeCount:
    type: integer
    description: Number of Nodes
    minimum: 3
    maximum: 12
    multipleOf: 3

  # non-integer number field
  availability:
    type: number
    default: 99.7
    maximum: 100
    minimum: 0

  # string enum
  objectStorageTier:
    type: enum
    enum:
      - archive
      - standard
    allowMultiple: false

  # input a list, each element must be an ip addresses
  dnsServers:
    type: array
    items:
      type: string
      pattern: "^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"
    minItems: 1
    uniqueItems: true
    default: [8.8.8.8, 8.8.4.4]

  # datetime picker
  expireDate:
    type: datetime

  # compartmentId dynamic dropdown, targetCompartment present in input variables
  targetCompartment:
    type: oci:identity:compartment:id

  # ---- subnet picker ---- #

  useExistingVcn:
    type: boolean

  vcnCompartment:
    type: oci:identity:compartment:id
    visible: ${useExistingVcn}

  myVcn:
    type: oci:core:vcn:id
    dependsOn:
      compartmentId: ${vcnCompartment}
    visible:
      or:
        - ${useExistingVcn}
        - and:
            - and:
                - true
                - true
            - not:
                - false

  subnetCompartment:
    type: oci:identity:compartment:id
    visible: ${useExistingVcn}

  mySubnet:
    type: oci:core:subnet:id
    dependsOn:
      compartmentId: ${subnetCompartment}
      vcnId: ${myVcn}
    visible: ${useExistingVcn}

  mySubnetWithFilter:
    type: oci:core:subnet:id
    dependsOn:
      compartmentId: ${subnetCompartment}
      vcnId: ${myVcn}
      hidePublicSubnet: ${hide_public_subnet}
      hidePrivateSubnet: ${hide_private_subnet}
      hideRegionalSubnet: ${hide_regional_subnet}
      hideAdSubnet: ${hide_ad_subnet}
    visible: ${useExistingVcn}

  hide_public_subnet:
    type: boolean
    default: false

  hide_private_subnet:
    type: boolean
    default: false

  hide_regional_subnet:
    type: boolean
    default: false

  hide_ad_subnet:
    type: boolean
    default: false

  load_balancer:
    type: oci:loadbalancer:loadbalancer:id
    pattern: ^(10)Mbps.*$
    title: Existing LBaaS for "Application" Evaluation
    required: true
    dependsOn:
      compartmentId: ${vcnCompartment}

  Kubernetes_version:
    type: oci:kubernetes:versions:id
    title: Kubernetes version
    description: The Oracle cloud kubernetes version for tenancy.
    required: true
    visible: true
    dependsOn:
      compartmentId: ${vcnCompartment}
      clusterOptionId: "all"

  backup_policies:
    type: oci:blockstorage:policies:id
    title: Backup Policy
    description: The Oracle Cloud Backup Policy for tenancy.
    required: true

  mount_target:
    type: oci:mount:target:id
    title: Mount target
    description: The Oracle Cloud mount target
    dependsOn:
      compartmentId: ${targetCompartment}
      availabilityDomain: ${myAvailabilityDomain}

  myNsg:
    type: oci:core:nsg:id
    title: "Network Security Group"
    description: "Network Security Group description"
    dependsOn:
      compartmentId: ${vcnCompartment}

  service_gateway:
    type: oci:core:servicegateway:id
    title: NAT Gateway
    dependsOn:
      compartmentId: ${vcnCompartment}
      vcnId: ${myVcn}

  nat_gateway:
    type: oci:core:servicegateway:id
    title: NAT Gateway
    dependsOn:
      compartmentId: ${vcnCompartment}
      vcnId: ${myVcn}

  iam_groups_use_existing:
    type: boolean
    title: Use existing Groups
    required: true
    default: false

  iam_groups:
    type: oci:identity:groups:id
    title: Group Name
    dependsOn:
      compartmentId: ${targetCompartment}
    visible:
      or:
        - ${iam_groups_use_existing}
        - and:
            - and:
                - true
                - true
            - not:
                - false

  iam_dynamic_groups:
    type: oci:identity:dynamicgroups:id
    title: Dynamic Group Name
    dependsOn:
      compartmentId: ${targetCompartment}
    visible:
      or:
        - ${iam_groups_use_existing}
        - and:
            - and:
                - true
                - true
            - not:
                - false
  
  iam_domains:
    type: oci:identity:domains:id
    title: Domain Name
    dependsOn:
      compartmentId: ${targetCompartment}
    visible:
      or:
        - ${iam_groups_use_existing}
        - and:
            - and:
                - true
                - true
            - not:
                - false

  myRegion:
    type: oci:identity:region:name
    visible: false

  myImageId:
    type: oci:core:image:id
    dependsOn:
      compartmentId: ${targetCompartment}

  myShape:
    type: oci:core:instanceshape:name
    dependsOn:
      compartmentId: ${targetCompartment}

  myInstance:
    type: oci:core:instance:id
    dependsOn:
      compartmentId: ${targetCompartment}

  myCompatibleShape:
    type: oci:core:instanceshape:name
    dependsOn:
      compartmentId: ${targetCompartment}
      imageId: ${myImageId}
    visible:
      or:
        - ${useExistingVcn}
        - and:
            - and:
                - true
                - true
            - not:
                - false

  myCompatibleShapeBasedOnAd:
    type: oci:core:instanceshape:name
    dependsOn:
      compartmentId: ${targetCompartment}
      availabilityDomain: ${myAvailabilityDomain}
    visible:
      or:
        - ${useExistingVcn}
        - and:
            - and:
                - true
                - true
            - not:
                - false

  myAvailabilityDomain:
    type: oci:identity:availabilitydomain:name
    dependsOn:
      compartmentId: ${targetCompartment}
    visible: complexExpression

  myFaultdomain:
    type: oci:identity:faultdomain:name
    dependsOn:
      compartmentId: ${targetCompartment}
      availabilityDomainName: ${myAvailabilityDomain}

  dbCompartment:
    type: oci:identity:compartment:id

  myDbSystem:
    type: oci:database:dbsystem:id
    dependsOn:
      compartmentId: ${dbCompartment}

  myDbHome:
    type: oci:database:dbhome:id
    dependsOn:
      dbSystemId: ${myDbSystem}
      compartmentId: ${dbCompartment}

  myDbHomeVersion:
    type: oci:database:dbhome:dbversion
    dependsOn:
      dbHomeId: ${myDbHome}

  myDb:
    type: oci:database:database:id
    dependsOn:
      dbHomeId: ${myDbHome}
      compartmentId: ${dbCompartment}

  myAutonomousDB:
    type: oci:database:autonomousdatabase:id
    dependsOn:
      compartmentId: ${dbCompartment}
      dbWorkload: "DW"

  myAutonomousDBVersion:
    type: oci:database:autonomousdatabaseversion:id
    title: AutonomousDatabaseVersionTitle
    description: AutonomousDatabaseVersionDescription
    required: true
    default: "19c"
    dependsOn:
      compartmentId: ${compartment_ocid}
      dbWorkload: "AJD"

  container_cluster_ocid:
    type: oci:container:cluster:id
    required: true
    title: OKE Cluster
    description: Kubernetes cluster managed by OCI Container Engine for Kubernetes
    dependsOn:
      compartmentId: ${compartment_ocid}

  myVault:
    type: oci:kms:vault:id
    title: "vault"
    description: "vault"
    dependsOn:
      compartmentId: ${targetCompartment}

  myVaultKey:
    type: oci:kms:key:id
    title: "key"
    description: "key"
    dependsOn:
      compartmentId: ${targetCompartment}
      vaultId: ${myVault}

  mode:
    type: enum
    enum:
      - Hsm
      - Software
    allowMultiple: false

  myCompatibleKey:
    type: oci:kms:key:id
    title: "key"
    description: "key"
    dependsOn:
      compartmentId: ${targetCompartment}
      vaultId: ${myVault}
      protectionMode: ${mode}

  algo:
    type: enum
    enum:
      - AES
      - RSA
      - ECDSA
    allowMultiple: true

  myCompatibleKeyBasedOnAlgo:
    type: oci:kms:key:id
    title: "key"
    description: "key"
    dependsOn:
      compartmentId: ${targetCompartment}
      vaultId: ${myVault}
      protectionMode: ${mode}
      algorithm: ${algo}

  mySecret:
    type: "oci:kms:secret:id"
    title: "secret"
    description: "secret"
    dependsOn:
      compartmentId: ${targetCompartment}

  myVaultSecret:
    type: "oci:kms:secret:id"
    title: "secret"
    description: "secret"
    dependsOn:
      compartmentId: ${targetCompartment}
      vaultId: ${myVault}

  ods_project_ocid:
    type: oci:ods:project:id
    required: true
    title: odsProject
    description: "Select ods project from list"
    dependsOn:
      compartmentId: ${targetCompartment}

  generic_file:
    type: file
    required: true
    title: GenericFile
    description: "Drop a raw file (stored as base64 string data)"

  tag:
    type: oci:identity:tag:value
    required: true
    title: Tagging
    description: Tag value for resource created
    dependsOn:
      compartmentId: ${targetCompartment}

  private_endpoint_ocid:
    type: oci:resourcemanager:privateendpoint:id
    required: true
    title: privateEndpoint
    description: "Resource Manager Private Endpoint for Private Access"
    dependsOn:
      compartmentId: ${targetCompartment}
      vcnId: ${vcnId}

  multilineText:
    type: text
    required: false
    multiline: true
    title: Multi-line value
    description: Multi-line value
    default: "First line\nSecond line\nThird line"

  apmDomainVariable:
    type: oci:apm:domain:id
    title: "APM Domain"
    description: "APM Domain"
    dependsOn:
      compartmentId: ${targetCompartment}

  # ---- Complex Data Type: Map Variable ---- #
  # map variable with subnet OCIDs for dev, test, prod
  subnet_ocids: 
    type: map
    valueType: subnet_ocid
    title: "Subnet OCIDs"
    description: "Subnet Map containing dev, test and prod subnet OCIDs"
    default: "{\"dev\":\"ocid1.subnet.oc1..aaaaaaaadevsubnet\",\"test\":\"ocid1.subnet.oc1..aaaaaaaatestsubnet\",\"prod\":\"ocid1.subnet.oc1..aaaaaaaaprodsubnet\"}"

  subnet_ocid:
    type: string
    visible: false
    
  # ---- Complex Data Type: List Variable ---- #
  # list variable with dynamic valueType variable 
  shapesList:
    type: list
    valueType: shape
    title: "List of Shapes"
    required: true
    description: "List of Shapes in the target Compartment"

  shape: 
    type: oci:core:instanceshape:name
    visible: false
    dependsOn:
      compartmentId: ${targetCompartment}
  # ---- Complex Data Type: Object Variable ---- #
  # an object variable for compute instance configuration 
  compute_instance_config:
    type: object
    title: "Compute Instance Configuration"
    attributes:
      - availabilityDomain
      - displayName
      - imageID
    description: "Configuration for an OCI compute instance"
    default: "{\"availability_domain\": \"us-phoenix-1\", \"display_name\":\"Instance1\", \"image_id\":\"ocid1.image.oc1..aaaaaaaadevimage\"}"

  availabilityDomain:
    type: oci:identity:availabilitydomain:name
    actualName: availability_domain
    visible: false
    dependsOn:
      compartmentId: ${targetCompartment}

  displayName: 
    type: string 
    actualName: display_name 
    visible: false   

  imageID: 
    type: oci:core:image:id 
    actualName: image_id 
    visible: false
    dependsOn: 
      compartmentId: ${targetCompartment}

# Used to present outputs with more refinement on the Application Information tab.
# The Application Information tab is only shown if the schema has a "title",
# "description", and at least one output in this "outputs" section.
#
# type:
#   - boolean
#   - string
#   - number
#   - link - contains url that can be hyperlinked.  If type is not specified and the
#            value is a proper url, this type is assumed.
#   - ocid - contains an OCID.  An attempt is made to hyperlink it to the designated
#            resource in the console.
#   - csv - synonym for list.  Array of values converted to a comma separated list.
#   - json - synonym for map.  Map of key / values converted to JSON.
#   - list - array of values converted to a comma separated list.
#   - map - map of key / values converted to JSON.
#
# displayText: used in links to give text displayed instead of value
# title: friendly label
# visible: if false, this ouptut is not shown in the outputs section of Application Information.
#          It can still be used as the primaryOutputButton.
outputs:
  controlCenterUrl:
    type: link
    title: Control Center
    displayText: Control Center
    visible: false

  schemaRegistryUrl:
    type: link
    title: Schema Registry
    displayText: Schema Registry

  schemaRegistryPublicIps:
    type: csv
    title: Public IPs

  schemaRegistryLoadBalancer:
    type: ocid
    title: Load Balancer

  brokerPublicIps:
    type: csv

  connectUrl:
    type: link
    title: Connect
    displayText: Connect

  connectPublicIps:
    type: csv
    title: Public IPs

  restUrl:
    type: link
    title: Rest API

# primaryOutputButton is a reference to a link output that creates a primary button
# on the Application Information tab.
# (Optional) if not provided, no primary button is shown.  Also if the output
# referenced is not a link output, no button is shown.
primaryOutputButton: ${controlCenterUrl}

# Used to group Outputs.  Any outputs not included in these defined groups, are
# included in a default group labelled "Outputs".
# (Optional) if not groups are given, outputs are not grouped at all.
outputGroups:
  - title: Schema Registry
    outputs:
      - ${schemaRegistryUrl}
      - ${schemaRegistryPublicIps}
      - ${schemaRegistryInstances}
      - ${schemaRegistryLoadBalancer}

  - title: Broker / Connect
    outputs:
      - ${brokerPublicIps}
      - ${brokerInstances}
      - ${connectUrl}
      - ${connectPublicIps}
      - ${restUrl}

Comment contrôler les éléments de la console

Utilisez un document de schéma pour contrôler l'affichage des variables de pile et d'autres éléments dans les pages de détails de pile de la console.

Ce contrôle d'affichage est disponible pour les piles créées à partir d'un fichier de configuration Terraform. À l'aide d'un document de schéma, vous pouvez définir l'apparence et le comportement des variables lors de la création de la pile, ainsi que le texte affiché dans l'onglet Informations sur l'application pour une pile créée.

Voici les éléments d'affichage de la console que le document de schéma contrôle. Pour voir des instructions et des exemples pertinents, développez un élément d'affichage qui vous intéresse.

Étiquette et description du champ

Pour afficher une étiquette et une description de champ pour une variable :

  • Ajoutez les lignes title: <field_label> et description: <field_description>.

Exemple d'image pour une étiquette et une description de champ de variable :

Champ de journalisation avancée avec la description "Activer ou désactiver la journalisation avancée (journaux de flux VCN et/ou journaux de vérification)."

Exemple de déclaration pour une étiquette et une description de champ de variable :

  advanced_logging_option:
    type: enum
    description: "Enable or disable advanced logging (VCN flow logs and/or audit logs)."
    title: "Advanced logging"
Descriptions des variables formatées

Les formats suivants sont pris en charge dans une description de variable :

Format Code
Forte (gras) <strong>...</strong>
Emphase (italique) <em>...</em>
Lien <a href='...'>...</a>
Vous pouvez également combiner le formatage pris en charge. Exemples :
  • Forte et accentuée (gras et italiques) : <strong><em>...</em></strong> OU <em><strong>...</strong></em>
  • Forte et accent dans le texte du lien (gras et italiques dans le texte du lien) : <a href='...'><strong>...</strong><em>...</em></a>

Exemple de description de variable formatée :

container_cluster_ocid:   
 type: oci:container:cluster:id   
 required: true   
 title: OKE Cluster   
 description: "<strong>Kubernetes cluster</strong> managed by <a href="https://www.oracle.com/cloud/cloud-native/kubernetes-engine/">OCI Container Engine</a> for Kubernetes"
Valeur par défaut

Pour afficher une variable avec une valeur par défaut :

  • Ajoutez la ligne default: <default-value>.

Exemple d'image pour une variable avec une valeur par défaut :

Valeur par défaut "DataScienceGroup" pour le nom de groupe de variables pour les politiques de sécurité.

Exemple de déclaration pour une valeur par défaut :

  ods_group_name:
    type: string
    title: ${Messages.solutionsHub.solutions.dataScience.variables.ods_group_name.title()}
    description: ${Messages.solutionsHub.solutions.dataScience.variables.ods_group_name.description()}
    required: true
  # provide a default value
    default: "DataScienceGroup"
Champ de texte multiligne

Pour afficher une variable en tant que champ de texte multiligne :

  • Ajoutez la ligne multiline: true.

Pour déclarer une valeur par défaut comportant plusieurs lignes :

  • Séparez chaque ligne par \n.

Exemple d'image pour une variable affichée en tant que champ de texte multiligne, avec deux lignes de texte entrées :

Champ de texte multiligne, avec deux lignes de texte entrées.

Exemple de déclaration pour un champ de texte multiligne :

  otherNames:
    type: text
    required: false
    multiline: true
    title: "Other Names"
    description: "Enter one name per line."
    default: "Name1\nName2"
Groupe et commande

Pour afficher un groupe (boîte) de variables, avec les variables dans une séquence prescrite :

  • Ajoutez un bloc variableGroups.
  • Ajoutez une ligne title à ce bloc.
  • Ajoutez un bloc variables à variableGroups.
  • Ajoutez des variables au bloc variables dans l'ordre souhaité.

Exemple d'image pour un groupe de variables :

Configuration du groupe de variables WordPress contenant les champs de nom d'utilisateur et de mot de passe.

Exemple de déclaration pour un groupe de variables avec un ordre prescrit :

variableGroups:
  - title: "WordPress configuration"
    variables:
    - wp_admin_user
    - wp_admin_password
Contrôle de clé SSH
Pour afficher une variable en tant que contrôle de clé SSH :
  • Ajoutez la ligne type: oci:core:ssh:publickey.

Exemple d'image pour un contrôle de clé SSH :

Contrôle de clé SSH.

Exemple de déclaration pour un contrôle de clé SSH :

  ssh_public_key:
    title: SSH public key
    description: Public SSH key to be included in the ~/.ssh/authorized_keys file for the default user on the instance
    # renders variable as an SSH key control
    type: oci:core:ssh:publickey
    additionalProps:
      allowMultiple: true
    required: false
    default: [""]
    pattern: "((^(ssh-rsa AAAAB3NzaC1yc2|ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNT|ecdsa-sha2-nistp384 AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAzOD|ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1Mj|ssh-ed25519 AAAAC3NzaC1lZDI1NTE5|ssh-dss AAAAB3NzaC1kc3)[0-9A-Za-z+\/]+[=]{0,3})( [^,]*)?)(,((ssh-rsa AAAAB3NzaC1yc2|ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNT|ecdsa-sha2-nistp384 AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAzOD|ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1Mj|ssh-ed25519 AAAAC3NzaC1lZDI1NTE5|ssh-dss AAAAB3NzaC1kc3)[0-9A-Za-z+\/]+[=]{0,3})( [^,]*)?)*$"
Contrôle de fichier

Pour afficher une variable en tant que contrôle de fichier :

  • Ajoutez la ligne type: file.

    Note

    Le fichier chargé est stocké au format Base64. Pour utiliser le fichier, décodez la sortie. Par exemple, ajoutez le code suivant à un fichier outputs.tf dans la configuration Terraform.
    output "generic_file_raw" {
      value = base64decode(var.generic_file)
    }

Exemple d'image pour un contrôle de fichier :

Contrôle de fichier.

Exemple de déclaration pour un contrôle de fichier :

  generic_file:
    type: file
    title: generic_file
    description: Drop any file or browse
    required: true
Contrôle de marquage

Pour afficher une variable en tant que contrôle de balisage :

  • Ajoutez la ligne type: oci:identity:tag:value.

    Note

    Pour préalimenter les valeurs de marqueur dans la console, accédez aux valeurs à partir de la configuration Terraform. Par exemple, ajoutez le code suivant à un fichier main.tf dans la configuration Terraform.
    resource "oci_logging_log_group" "sample_log_group" {
      compartment_id = var.compartment_ocid
      display_name   = "sample_log_group"
      description    = "Prepopulated tag values"
      freeform_tags  = var.tag_value.freeformTags
      defined_tags   = var.tag_value.definedTags
    }

Exemple d'image pour un contrôle de marquage :

Contrôle du marquage.

Exemple de déclaration pour un contrôle de marquage :

  tag_value:
    type: oci:identity:tag:value
    title: Tags
    required: true
Types de données complexes

La présente section décrit les types de données complexes pour les variables de liste, de mappage et d'objet. Nous vous recommandons d'inclure un champ title pour tout type de données complexe.

Lister et mapper les directives de variable :

  • Définissez le champ valueType lors de la spécification de la variable de schéma.
  • Pour toute variable valueType, réglez visible à false.

Directives relatives aux variables d'objet :

  • Incluez un champ attributes pour définir les variables d'attribut de l'objet.
  • Pour toute variable attribute, incluez un champ actualName qui correspond au nom d'attribut défini dans le fichier Terraform pour la variable d'objet.
  • Pour toute variable attribute, réglez visible à false.

Exemples de déclarations, à partir de Exemple de document de schéma :

  # ---- Complex Data Type: Map Variable ---- #
  # map variable with subnet OCIDs for dev, test, prod
  subnet_ocids: 
    type: map
    valueType: subnet_ocid
    title: "Subnet OCIDs"
    description: "Subnet Map containing dev, test and prod subnet OCIDs"
    default: "{\"dev\":\"ocid1.subnet.oc1..aaaaaaaadevsubnet\",\"test\":\"ocid1.subnet.oc1..aaaaaaaatestsubnet\",\"prod\":\"ocid1.subnet.oc1..aaaaaaaaprodsubnet\"}"

  subnet_ocid:
    type: string
    visible: false
    
  # ---- Complex Data Type: List Variable ---- #
  # list variable with dynamic valueType variable 
  shapesList:
    type: list
    valueType: shape
    title: "List of Shapes"
    required: true
    description: "List of Shapes in the target Compartment"

  shape: 
    type: oci:core:instanceshape:name
    visible: false
    dependsOn:
      compartmentId: ${targetCompartment}
  # ---- Complex Data Type: Object Variable ---- #
  # an object variable for compute instance configuration 
  compute_instance_config:
    type: object
    title: "Compute Instance Configuration"
    attributes:
      - availabilityDomain
      - displayName
      - imageID
    description: "Configuration for an OCI compute instance"
    default: "{\"availability_domain\": \"us-phoenix-1\", \"display_name\":\"Instance1\", \"image_id\":\"ocid1.image.oc1..aaaaaaaadevimage\"}"

  availabilityDomain:
    type: oci:identity:availabilitydomain:name
    actualName: availability_domain
    visible: false
    dependsOn:
      compartmentId: ${targetCompartment}

  displayName: 
    type: string 
    actualName: display_name 
    visible: false   

  imageID: 
    type: oci:core:image:id 
    actualName: image_id 
    visible: false
    dependsOn: 
      compartmentId: ${targetCompartment}
Préalimentation dynamique

Pour préalimenter dynamiquement les variables avec des valeurs basées sur des dépendances :

Exemple d'image pour une variable préalimentée dynamiquement :

Valeurs préalimentées pour le champ Réseau en nuage virtuel (VCN).

Exemple de déclaration pour une variable préalimentée dynamiquement :

    vcn_ocid:
    "title": "Virtual cloud network (VCN)",
    "description": "The virtual cloud network to use with the compute instance. You can use the subnets template to create a VCN."
    # prepopulates available values for VCN
      type: oci:core:vcn:id
    # determines values for prepopulation from selected compartment
      dependsOn:
        compartmentId: compartment_ocid
      required: true
      default: ""

Exemple de déclaration pour les points d'extrémité privés :

  private_endpoint_ocid:
    type: oci:resourcemanager:privateendpoint:id
    required: true
    title: "Resource Manager Private Endpoint"
    description: "Resource Manager Private Endpoint for Private Access"
    dependsOn:
      compartmentId: ${privateEndpointCompartmentOCID}
      vcnId: ${privateEndpointVCNOCID}

Exemples de déclarations pour le VCN selon le compartiment, avec le sous-réseau selon le compartiment et le VCN :

  vcnCompartment:
    # prepopulates available values for compartment
    type: oci:identity:compartment:id
 
myVcn:
    # prepopulates available values for VCN
    type: oci:core:vcn:id
    # determines values for VCN prepopulation from selected compartment
    dependsOn:
      compartmentId: ${vcnCompartment}
 
subnetCompartment:
    # prepopulates available values for compartment
    type: oci:identity:compartment:id
 
mySubnet:
    # prepopulates available values for subnet
    type: oci:core:subnet:id
    # determines values for subnet prepopulation from selected compartment and VCN
    dependsOn:
      compartmentId: ${subnetCompartment}
      vcnId: ${myVcn}

Exemple de déclaration d'image 1, où l'image dépend uniquement du compartiment (champ dependsOn obligatoire) :

  instance_image:    
    title: Image    
    description: Image    
    type: oci:core:image:id    
    required: true    
    dependsOn:      
       compartmentId: ${compartment_ocid}

Exemple de déclaration d'image 2, où l'image dépend du compartiment, du système d'exploitation, de la version du système d'exploitation et de la forme :

  instance_image:    
    title: Image    
    description: Image    
    type: oci:core:image:id    
    required: true    
    dependsOn:      
       compartmentId: ${compartment_ocid}      
       operatingSystem: "Oracle Linux"      
       operatingSystemVersion: "7.8"
       shape: "<shape name>"
Valeurs énumérées (sélection d'une seule valeur)

Pour afficher les valeurs énumérées pour une variable (permettant de sélectionner une valeur) :

  • Ajoutez les lignes type: enum et ajoutez un bloc enum.

Exemple d'image pour une variable avec des valeurs énumérées qui permettent la sélection d'une seule valeur :

Valeurs énumérées pour le champ de journalisation avancée.

Exemple de déclaration pour une variable avec des valeurs énumérées :

  advanced_logging_option:
    title: "Advanced logging"
    description: "Enable or disable advanced logging (VCN flow logs and/or audit logs)."
    type: enum
    # enumerated values
    enum:
    - AUDIT_LOGS
    - FLOW_LOGS
    - BOTH
    - NONE
    default: NONE
    required: true
Valeurs énumérées (sélection de plusieurs valeurs)

Pour afficher les valeurs énumérées pour une variable (permettant la sélection de plusieurs valeurs) :

  • Ajoutez les lignes type: enum et ajoutez un bloc enum.
  • Ajoutez les lignes additionalProps: et un bloc allowMultiple:true.

Exemple d'image pour une variable avec des valeurs énumérées qui permettent la sélection de plusieurs valeurs :

Cette illustration présente une variable avec des valeurs énumérées, où plusieurs valeurs peuvent être sélectionnées.

Exemple de déclaration pour une variable avec des valeurs énumérées (sélection de valeurs multiples) :

    attachment_type:
      type: enum
      title: "Attachment type"
      additionalProps:
        allowMultiple: true
      default: "iscsi"
      # enumerated values (multiple value selection)
      enum:
        - "iscsi"
        - "paravirtualized"
Cocher la case

Pour afficher une variable en tant que case à cocher :

  • Ajoutez la ligne type: boolean.

Exemple d'image pour une variable de case à cocher :

Affichage des cases à cocher pour la variable Activer la prise en charge de la chambre forte?

Exemple de déclaration pour une variable de case à cocher :

  ods_vcn_use_existing:
    # renders variable as a check box
    type: boolean
    title: "Enable vault support?"
    description: "Use a vault to store secrets and manage encrypted resources."
    required: true
    default: false
Dépendance de visibilité
Note

Les groupes ont une priorité supérieure aux variables de composant des groupes. Par exemple, si une variable est visible dans un groupe non visible, le groupe entier n'est pas visible.

Opérations prises en charge :

  • and
  • eq (égal)
  • ge (supérieur ou égal)
  • gt (supérieur à)
  • le (inférieur ou égal)
  • lt (inférieur à)
  • not
  • or
Pour masquer ou afficher des variables ou des groupes de variables en fonction d'autres variables :
  • Ajoutez la ligne visible: <other_variable>.

Exemple de variable Utiliser une chambre forte existante?, dont la visibilité dépend de la sélection de l'utilisateur pour la variable Activer la prise en charge de la chambre forte? :

L'option Utiliser une chambre forte existante? est visible uniquement lorsque l'option Activer la prise en charge de la chambre forte? est sélectionnée.

Exemples de déclarations qui affichent les champs "Nom de l'application" et "Nom de la passerelle d'API" (functions_app_name et apigateway_name) uniquement lorsque la case "Provisionner les fonctions et la passerelle d'API?" (enable_functions_apigateway) est cochée :

  enable_vault:
    type: boolean
    title: "Enable vault support?"
    description: "Use a vault to store secrets and manage encrypted resources."
    required: true
    default: false

  ods_use_existing_vault:
    type: boolean
    title: "Use existing vault?"
    description: "Use a pre-existing vault in the current compartment."
    required: true
    default: false
  # show only when enable_vault variable is selected
    visible: enable_vault
Mot de passe
Pour afficher une variable en tant que mot de passe :
  • Ajoutez la ligne type: password.
Pour exiger une nouvelle entrée pour la confirmation du mot de passe entré :
  • Ajoutez la ligne confirmation: true.

Exemple d'image pour une variable de mot de passe nécessitant une confirmation :

Invite de confirmation pour un mot de passe (mot de passe de l'administrateur WordPress).

Exemple de déclaration pour une variable de mot de passe nécessitant une confirmation :

  wp_admin_password:
    title: "WordPress administrator password"
    description: "The password must be more than 8 characters and include at least one uppercase letter, one lowercase letter, one number, and one of the following special characters: !@#%^*_+-:?.,[]{}"
    # renders variable as a password field
    type: password
    # renders a second field to re-enter the password for confirmation
    confirmation: true
    pattern: "^(?=.*[!@#%^*_+\\-:?.,\\[\\]\\{\\}])(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?!.*[$\\(\\)]).{8,32}$"
    required: true
Variables requises

Pour exiger une valeur pour une variable :

  • Ajoutez la ligne required: true.

Exemple d'image pour une variable requise, avec un avertissement de validation :

Avertissement de validation pour une variable requise (réseau en nuage virtuel (VCN)) qui n'a pas été alimentée.

Exemple de déclaration pour une variable requise :

    vcn_ocid:
    "title": "Virtual cloud network (VCN)",
    "description": "The virtual cloud network to use with the compute instance. You can use the subnets template to create a VCN."
      type: oci:core:vcn:id
      dependsOn:
        compartmentId: compartment_ocid
    # displays validation warning if no value is selected or entered
      required: true
      default: ""
Variable facultative

Pour marquer une variable comme facultative :

  • Ajoutez la ligne required: false.

Exemple d'image pour une variable facultative :

Marquage "Facultatif" affiché à droite du titre de la variable : IP privée.

Exemple de déclaration pour une variable facultative :

    private_ip:
      title: "Private IP"
      description: "Private IP address of your choice to assign to the VNICs."
      type: string
      # displays "Optional" marking to right of field label
      required: false
      default: ""
Modèle de validation

Pour valider la valeur entrée pour une variable par rapport à un modèle d'expression rationnelle :

  • Ajoutez la ligne pattern: <regular-expression>.

    <regular-expression> est le modèle de validation propre à la valeur à valider.

    Exemple de modèle d'hyperlien : ^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,4}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$

Exemple d'image d'erreur de validation pour une valeur entrée :

Erreur de validation pour une valeur entrée (mot de passe de l'administrateur WordPress).

Exemple de déclaration pour une variable avec un modèle de validation :

  wp_admin_password:
    title: "WordPress administrator password"
    description: "The password must be more than 8 characters and include at least one uppercase letter, one lowercase letter, one number, and one of the following special characters: !@#%^*_+-:?.,[]{}"
    type: password
    confirmation: true
    # validate entered value against alphanumeric regular expression
    pattern: "^(?=.*[!@#%^*_+\\-:?.,\\[\\]\\{\\}])(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?!.*[$\\(\\)]).{8,32}$"
    required: true
Variables sensibles (onglet Sorties, onglet Informations sur l'application)

La sortie d'une variable marquée comme sensible s'affiche comme <sensitive> avec une option Déverrouiller dans l'onglet Informations sur l'application. Cet onglet est visible dans les pages Détails de la tâche et Détails de la pile.

Exemple d'image pour une variable marquée comme sensible (Clé privée SSH générée) dans l'onglet Informations sur l'application :

Variable marquée comme sensible dans l'onglet Informations sur l'application.

Pour plus d'informations sur l'argument sensible Terraform, voir sensible - Suppression des valeurs dans la sortie de l'interface de ligne de commande.

Pour marquer une variable comme sensible :

  • Ajoutez la ligne sensitive: true.

Exemple de déclaration pour une variable marquée comme sensible :

  ssh_private_key:
    title: Generated SSH private key
    # marks variable as sensitive
    sensitive: true
Onglet Informations sur l'application

Pour afficher l'onglet Informations sur l'application d'une pile créée à partir de votre configuration Terraform :

  • Ajoutez des lignes pour le schéma title et description.
  • Facultativement, ajoutez une ligne pour une zone de texte d'information bleue : informationalText.
  • Ajoutez au moins une sortie dans la section outputs, éventuellement regroupée à l'aide de outputGroups.
Pour permettre la copie d'une valeur de sortie affichée dans l'onglet Informations sur l'application :
  • Définissez le type : Ajoutez la ligne type: copyableString.

Exemple d'image pour l'onglet Informations sur l'application :

Onglet Informations sur l'application.

Exemple de déclaration pour un titre, une description et des sorties de schéma :

# heading under Application Information tab
title: "Deploy a WordPress instance"
# text under heading
description: "Create your own website or blog using WordPress."

...

# output variable groups
outputGroups:
- title: "Service endpoints"
  outputs:
    - wordpress_public_ip
- title: "Generated passwords"
  outputs:
    - generated_ssh_private_key

...

# output variable field names and values
outputs:
  wordpress_public_ip:
    type: link
    title: "Your WordPress website"
  generated_ssh_private_key:
    title: "Generated SSH private key"
    sensitive: true

Comment interagir avec les éléments de la console

Cette section décrit comment interagir avec l'affichage contrôlé par schéma des informations de pile dans la console Oracle Cloud Infrastructure.

Les informations sur la pile sont touchées par le document de schéma (le cas échéant) que vous incluez dans la configuration Terraform pour créer la pile. Le document de schéma affecte l'apparence et le comportement des variables lors de la création de la pile, ainsi que le texte affiché dans l'onglet Informations sur l'application pour une pile créée.

Déverrouiller les variables sensibles

Une option Déverrouiller de l'onglet Informations sur l'application indique une variable marquée de manière sensible. Cette option bascule entre Déverrouiller et Verrouiller.

  • Pour voir la valeur, sélectionnez Déverrouiller.
  • Pour masquer la valeur, sélectionnez Verrouiller.

Exemple d'image pour une variable marquée comme sensible (Clé privée SSH générée) dans l'onglet Informations sur l'application :

Capture d'écran de l'onglet Informations de l'application avec une variable marquée par une sensibilité (clé privée SSH générée).