Modifica del manifesto del catalogo in locale

Il file manifest del catalogo specifica le informazioni sulla soluzione onboarded che si desidera condividere con gli utenti attraverso un catalogo. È possibile fornire informazioni sulle licenze e sulla conformità, effettuare impostazioni specifiche e fornire descrizioni sulla destinazione d'uso del prodotto.

Preferite utilizzare la console per modificare i dettagli del vostro catalogo? È possibile effettuare le selezioni seguendo la procedura guidata fornita e quindi esportare il file manifest da aggiungere al proprio repo sorgente. Se si impilano architetture distribuibili in un progetto, il manifest del catalogo viene creato quando si aggiungono le architetture a un catalogo privato del progetto.

Mappatura dei dettagli del catalogo nel file manifesto

Per visualizzare il modo in cui il contenuto aggiunto al file manifesto viene visualizzato dagli utenti, si vedano i seguenti esempi che mostrano la relazione tra il sito ibm_catalog.json e la pagina dei dettagli del catalogo.

Vediamo come il nome dell'architettura distribuibile, la descrizione, le caratteristiche e le varianti sono definite nel file manifest del catalogo e come l'utente vede le informazioni nella pagina dei dettagli del catalogo.

Titolo dell'architettura distribuibile, descrizione, mappatura del testo delle caratteristiche al file di origine
Titolo dell'architettura distribuibile, descrizione, mappatura del testo delle caratteristiche al file di origine

Vediamo come l'elenco delle caratteristiche delle variazioni viene utilizzato per aiutare gli utenti a confrontare le variazioni in base a quanto definito nel file manifest del catalogo.

Confronto tra le caratteristiche della variazione dell'architettura distribuibile
Confronto tra le caratteristiche della variazione dell'architettura distribuibile

Vediamo dove vengono specificati i permessi e i dettagli del diagramma di architettura nel file manifest del catalogo e come vengono visualizzati nella pagina dei dettagli del catalogo.

Permessi di architettura distribuibili e mappatura del testo di architettura al file di origine
Permessi di architettura distribuibili e mappatura del testo di architettura al file di origine

Inoltre, se la vostra architettura soddisfa un livello specifico di conformità, verificato con i risultati dell'inventario utilizzando Workload Protection, potete rivendicare tale conformità per ogni variazione. Nel file ibm_catalog.json si definisce il modo in cui l'architettura soddisfa un certo livello di conformità, specificando la politica Workload Protection. È inoltre necessario distribuire le risorse create dall'architettura, poiché Workload Protection utilizza le risorse distribuite per verificare la conformità. Per ulteriori informazioni, vedere Gestione delle informazioni di conformità per l'architettura distribuibile.

Nell'esempio seguente si può vedere come vengono visualizzate agli utenti le informazioni di conformità definite nel file manifest.

Conformità dell'architettura distribuibile
Conformità dell'architettura distribuibile

Modifica del manifesto

Per modificare il manifesto localmente, si può procedere come segue.

  1. Copiare il seguente file manifest di esempio in un editor locale.
  2. Nominare il file ibm_catalog.json.
  3. Aggiungete le vostre configurazioni preferite nel file, usando il manifest di esempio come guida. Per saperne di più su ciascun valore, consultare i valori disponibili.
  4. Aggiungere il file nella cartella principale del repository del codice sorgente.
  5. Aggiungete l'architettura distribuibile al vostro catalogo.

Se l'architettura distribuibile è già inserita in un catalogo privato, è possibile scaricare il manifest dalla console.

Esempio di file manifesto

Il seguente frammento di codice può essere utilizzato come modello.

{
   "products": [
      {
         "name": "",
         "label": "",
         "product_kind": "",
         "tags": [
            "tag 1",
            "tag 2"
         ],
         "keywords": [
            "keyword 1",
            "keyword 2",
            "keyword 3"
         ],
         "short_description": "Short description of your product.",
         "long_description": "A longer description of your product.",
         "offering_docs_url": "URL",
         "offering_icon_url": "URL or emebbed image",
         "provider_name": "Community",
         "module_info": {
            "works_with": [
               {
                  "catalog_id": "",
                  "name": "module name",
                  "kind": "terraform",
                  "version": "0.1.0",
                  "flavor": "Variation name"
               }
            ]
         },
         "support_details": "Explanation of support.",
         "features": [
            {
               "title": "Feature 1 title"
               "description": "Feature 1 description"
            },
            {
               "title": "Feature 2 title"
               "description": "Feature 2 description"
            }
         ],
         "flavors": [
            {
               "label": "Display name",
               "name": "Programatic name",
               "index": 1,
               "install_type": "Install type",
               "working_directory": "Directory path",
               "usage_template": "template",
               "scripts": [
                  {
                     "type": "ansible",
                     "short_description": "Short description of what your script is intended to do.",
                     "path": "Path to script location.",
                     "stage": "The stage. For example, pre.",
                     "action": "The action. For example, validate."
                  }
               ],
               "change_notices": {
                  "breaking": [
                     {
                        "title": "Title of breaking change",
                        "description": "Description of the change."
                     }
                  ],
                  "new": [
                     {
                        "title": "Title of new feature",
                        "description": "Description of the new feature or capability."
                     }
                  ],
                  "update": [
                     {
                        "title": "Title of general update",
                        "description": "Description of the general update."
                     }
                  ]
               },
               "compliance": {
                  "authority": "scc-v3",
                  "controls": [
                     {
                        "profile": {
                           "name": "Security and Compliance Center profile name",
                           "version": "Profile version"
                        },
                        "names": [
                           "Control name 1 e.g. AC-2(a)",
                           "Control name 2",
                           "Control name 3"
                        ]
                     }
                  ]
               },
               "configuration": [
                  {
                     "key": "key type e.g. ssh_key",
                     "required": true
                  },
                  {
                     "key": "Key type e.g. ibmcloud_api_key",
                     "required": true,
                     "type": "The data type"
                  }
               ],
               "outputs": [
                  {
                     "description": "Output description",
                     "key": "key"
                  },
                  {
                     "description": "Output description",
                     "key": "key"
                  }
               ],
               "dependencies": [
                  {
                     "catalog_id": "ID",
                     "id": "ID",
                     "name": "Product programmatic name",
                     "kind": "Format kind",
                     "version": "Versions or range of versions",
                     "flavors": [
                        "Variation name 1",
                        "Variation name 2",
                        "Variation name 3"
                     ],
                     "install_type": "fullstack or extension",
                  }
               ],
               "iam_permissions" [
                  {
                     "role_crns": [
                        "CRN 1 e.g. crn:v1:bluemix:public:iam::::serviceRole:Manager",
                        "CRN 2 e.g. crn:v1:bluemix:public:iam::::role:Administrator"
                     ],
                     "service_name": "Programatic service name e.g. is.vpc"
                  }
               ],
               "licenses": [
                  {
                     "name": "License name",
                     "smref": "Link to the license"
                  }
               ],
               "schematics_env_values": {
                  "value": "value",
                  "smref": " "
               },
               "architecture": {
                  "descriptions": " ",
                  "features": [
                     {
                        "title": "Feature 1 title",
                        "description": "Feature 1 description"
                     },
                     {
                        "title": "Feature 1 title",
                        "description": "Feature 1 description"
                     }
                  ],
                  "diagram": {
                     "caption": "Diagram caption",
                     "url": "Link to diagram or embedded image",
                     "metadata": []
                  },
                  "description": "Description of the diagram"
               }
            }
         ]
      }
   ]
}

Valori disponibili

Le sezioni seguenti contengono informazioni su ciascun valore che può essere citato nel file manifest.

Prodotti

Il valore products indica un array di prodotti di dimensione uno o più. Se nella radice del repository esiste un file manifest del catalogo, è possibile importare solo i prodotti contenuti nel file. I prodotti vengono importati uno alla volta. I seguenti valori possono essere inclusi nel livello products:

label

Il nome visualizzato del prodotto. Questo valore deve corrispondere al nome visualizzato fornito dall'utente durante l'onboarding.

name

Il nome programmatico del prodotto.

hidden

Un valore booleano che controlla la visibilità del prodotto. Quando è impostato su true, il prodotto viene nascosto dal catalogo e dai risultati della ricerca, ma rimane disponibile attraverso il sito diretto URL.

version

La versione del prodotto nel formato SemVer, che include la versione maggiore, la versione minore e la revisione, ad esempio 1.0.0. Questo valore può essere specificato anche quando il prodotto viene inserito in un catalogo.

product_kind

Il tipo di prodotto che stai integrando. I valori validi sono software, modulo o soluzione. Una soluzione è altrimenti nota come architettura implementabile.

tags

Una serie di valori predefiniti che possono aiutare gli utenti a filtrare il catalogo per identificare e conoscere meglio il vostro prodotto. Per visualizzare le opzioni disponibili, eseguire il seguente comando: ibmcloud catalog filter options --all.

keywords

Una serie di parole o frasi specifiche che un utente potrebbe cercare.

short_description

Un riassunto conciso di ciò che è il vostro prodotto e del suo valore.

long_description

Una descrizione dettagliata del prodotto che ne spieghi il valore e i vantaggi per gli utenti.

provider_name

Gli utenti possono filtrare il catalogo in base al fornitore di un prodotto. Quando si inserisce un prodotto in un catalogo privato, il nome del fornitore è impostato di default su Community. Tuttavia, è possibile personalizzare questo campo per visualizzare il nome della propria azienda o organizzazione. IBM è un valore riservato e può essere usato solo per i prodotti di costruzione IBM.

offering_docs_url

Un link alla documentazione sul prodotto a cui gli utenti possono accedere.

offering_icon_url

Un link al sito URL dove si trova l'icona che si vuole far apparire nella pagina di inserimento del catalogo del prodotto.

support_details

Informazioni sull'assistenza in formato markdown che possono includere contatti di assistenza, sedi di assistenza e metodi di assistenza.

features

Intestazione della sezione all'interno di products per i dettagli che evidenziano i processi, le capacità e i risultati del prodotto. Queste caratteristiche a livello di prodotto sono elencate nella pagina di inserimento del catalogo insieme alla descrizione del prodotto. Ad esempio, le caratteristiche possono includere i requisiti della CPU, le funzioni di sicurezza o altro ancora. Ogni voce è definita come un array, come mostrato nell'esempio di manifesto della sezione precedente. Nella sezione features si possono inserire i seguenti valori:

features[].title
Il nome della funzione.
features[].description
Una descrizione concisa della caratteristica.

Moduli

Il valore module_info indica informazioni su altri prodotti con cui l'architettura implementabile è compatibile. I seguenti valori possono essere inseriti nella sezione module_info:

works_with

Intestazione della sezione per informazioni su un singolo prodotto compatibile con l'architettura distribuibile. Nella sezione works_with si possono inserire i seguenti valori:

works_with[].catalog_id (facoltativo)
ID del catalogo che ospita il prodotto. Se non viene specificato, il catalogo IBM Cloud è quello predefinito.
works_with[].id (facoltativo)
ID del prodotto. L'ID non è richiesto se è impostato il valore name.
works_with[].name (facoltativo)
Nome programmatico del prodotto che funziona con l'architettura distribuibile.
works_with[].kind
Il formato del modulo che funziona con la vostra architettura distribuibile. Il più delle volte si tratta di terraform.
works_with[].version
Versione o gamma di versioni del prodotto che funzionano con l'architettura distribuibile in formato SemVer.
works_with[].flavors[] (facoltativo)
I nomi programmatici delle varianti compatibili. Le varianti vengono inserite singolarmente in un catalogo e ricevono un numero di versione. Un esempio di nome di variazione potrebbe essere standard o advanced.

Flavor

Per informazioni sulle varianti dell'architettura distribuibile, consultare l'intestazione della sezione. I gusti sono ora conosciuti come variazioni della console. I seguenti valori possono essere inclusi nel livello flavors:

label

Nome visualizzato della variante.

name

Nome programmatico della variazione.

short_description

Breve descrizione di questa versione della variante.

index

L'ordine in cui le varianti sono elencate nel catalogo.

working_directory

Per una directory di lavoro che si trova al livello radice del repo, non è necessario specificare la directory di lavoro. Se non è nella radice, elencare il percorso dalla radice del repository. Ad esempio, ./examples/.

usage

Informazioni su come incorporare l'architettura o eseguirla localmente tramite Terraform.

usage_template

Simile a usage. Con un modello si possono usare le variabili come segnaposto in cui sostituire i valori. La stringa viene memorizzata nella proprietà usage.

Valori e descrizioni dei modelli di utilizzo
Variabile modello Valore di sostituzione
${{version}} La stringa della versione di questa variante o sapore.
${{flavor}} Il nome programmatico della variazione o del sapore.
${{kind}} Il tipo di implementazione. I.e. terraform.
${{id}} L'ID dell'offerta o del prodotto.
${{name}} Il nome programmatico dell'offerta o del prodotto.
${{catalogID}} L'ID del catalogo in cui si trova l'offerta o il prodotto.
${{workingDirectory}} La directory di lavoro del flavor o della variante.

licenses

Intestazione della sezione flavors che fornisce informazioni sugli accordi di licenza con l'utente finale che gli utenti devono accettare quando installano il prodotto. I contratti di licenza si aggiungono all'Accordo sui servizi IBM Cloud.

{
	"id": "string, license id",
	"name": "string, license display name",
	"type": "string, type of license, e.g. Apache xxx",
	"url": "string, URL for the license text",
	"description": "string, license description"
}

I seguenti valori possono essere inseriti nella sezione licenses:

licenses[].id
L'ID della licenza.
licenses[].name
Il nome della licenza.
licenses[].type
Il tipo di licenza. Ad esempio, Apache.
licenses[].url
Un indirizzo URL dove l'utente può accedere al contratto di licenza.
licenses[].description
Una descrizione della licenza.

compliance

Intestazione della sezione flavors che indica quali controlli di conformità soddisfa l'architettura con le impostazioni di installazione predefinite. La valutazione e la convalida delle indicazioni fornite è completata da Workload Protection.

L'esempio seguente mostra la struttura JSON della sezione compliance:

"flavors": [{
  "compliance": {
    "authority": "scc-wp-v1",
    "profiles": [{
      "profile_name": "",
      "profile_version": ""
    }],
    "controls": [{
      "profile": {
        "name": "",
        "version": ""
      },
      "names": []
    }]
  }
}]

È possibile elencare più criteri nel file JSON manifesto del catalogo, ma solo il primo criterio viene aggiunto alle informazioni sulla conformità in un catalogo privato.

Nella sezione compliance si possono inserire i seguenti valori:

compliance.authority
Workload Protection v1 è l'unica autorità accettata. Questo viene scritto programmaticamente come scc-wp-v1.
compliance.profiles[]
Array di politiche che contengono i controlli richiesti. È possibile visualizzare le politiche predefinite all'indirizzo Workload Protection.
compliance.profiles[].profile_name
Il nome della politica. Ad esempio, NIST. Il nome della politica si trova in Workload Protection.
compliance.profiles[].profile_version
La versione della politica. Ad esempio, 1.0.0. La versione della politica è disponibile in Workload Protection.
compliance.controls[]
Una serie di controlli richiesti su questa variante. Il manifest del catalogo accetta una serie di controlli che possono essere rivendicati specificando il nome del profilo, la versione del profilo e il nome del controllo.
compliance.controls[].profile
Oggetto che indica l'aggiunta di controlli da un criterio specifico.
compliance.controls[].profile.name
Il nome del criterio del controllo richiesto. Ad esempio, NIST. Il nome della politica si trova in Workload Protection.
compliance.controls[].profile.version
La versione della politica. Ad esempio, 1.0.0. La versione della politica è disponibile in Workload Protection.
compliance.controls[].names[]
Array di nomi di controlli rivendicati. Ad esempio: ["CM-7(b)", "AC-2(a)"].

Se sono stati inclusi controlli nel file readme e nel file manifest del catalogo, il file manifest ha la precedenza. È buona norma assicurarsi che i controlli elencati nel file manifest del catalogo corrispondano ai controlli del file readme.

change_notices (facoltativo)

Un elenco dei tre tipi di modifiche di cui si potrebbe voler avvisare gli utenti quando si rilascia una nuova versione dell'architettura distribuibile. È possibile specificare breaking changes, new features e general updates. Le modifiche di rottura sono gli aggiornamenti che interrompono le funzionalità disponibili in una versione precedente. Le nuove caratteristiche evidenziano tutte le nuove funzionalità che l'utente potrebbe incontrare con la nuova versione. Gli aggiornamenti comprendono tutte le modifiche che si desidera evidenziare all'utente, come un comportamento modificato che non necessariamente interrompe la funzionalità esistente o modifiche che rendono l'architettura distribuibile più facile da usare.

"change_notices": {
   "breaking": [
      {
         "title": "",
         "description": ""
      }
   ],
   "new_features": [
      {
         "title": "",
         "description": ""
      }
   ],
   "updates": [
      {
         "title": "",
         "description": ""
      }
  ]
}

iam_permissions (facoltativo)

Per un elenco di tutte le autorizzazioni IAM necessarie a un utente per lavorare con la versione dell'architettura distribuibile, consultare l'intestazione della sezione. Le informazioni sui permessi IAM includono il nome programmatico del servizio richiesto e un elenco di CRN per i ruoli necessari. Se si crea il file manifest del catalogo dall'interfaccia utente, i CRN sono già inclusi.

L'esempio seguente mostra la struttura JSON della sezione iam_permissions:

"flavors": [{
  "iam_permissions": [{
    "service_name": "IAM defined service name",
    "notes": "Optional notes about this permission",
    "role_crns": ["crn:v1:..."],
    "resources": [{
      "name": "resource name",
      "description": "resource description",
      "role_crns": ["crn:v1:..."]
    }]
  }]
}]

Nella sezione iam_permissions si possono inserire i seguenti valori:

iam_permissions[].service_name
Il nome programmatico del servizio a cui gli utenti devono avere accesso.
iam_permissions[].notes (facoltativo)
Fornire agli utenti maggiori informazioni su questo ruolo o sul motivo per cui è stato incluso. Ad esempio, This role is only required if you are using IBM Key Protect for encryption.
iam_permissions[].role_crns[]
Intestazione della sezione per indicare un elenco di ruoli di accesso.
iam_permissions[].resources[]
Array di risorse per un'autorizzazione.
iam_permissions[].resources[].name
Il nome della risorsa.
iam_permissions[].resources[].description
Una descrizione della risorsa.
iam_permissions[].resources[].role_crns[]
Intestazione della sezione per incidere un elenco di ruoli di accesso.

architecture

Intestazione di sezione all'interno della sezione flavors che specifica le informazioni di alto livello sulla versione dell'architettura distribuibile che include una descrizione, le caratteristiche e un diagramma. Possono essere forniti più diagrammi, con didascalie.

L'esempio seguente mostra la struttura JSON della sezione architecture:

"flavors": [{
  "architecture": {
    "features": [{
      "title": "",
      "description": ""
    }],
    "diagrams": [{
      "diagram": {
        "caption": "",
        "url": "",
        "type": "image/svg+xml",
        "thumbnail_url": ""
      },
      "description": ""
    }]
  }
}]

Nella sezione architecture si possono inserire i seguenti valori:

architecture.features[]
Una serie di informazioni che illustrano i processi, le funzionalità e i risultati della versione o, se del caso, della variante architettonica. Quando si effettua l'onboarding tramite la console, questi dettagli sono chiamati punti salienti. Questi dettagli appaiono nel riquadro di selezione della variante all'interno della voce di catalogo. Se il tuo prodotto è disponibile in diverse varianti architetturali, gli utenti possono confrontare le caratteristiche specifiche di ciascuna variante per decidere quale sia quella più adatta alle loro esigenze.
architecture.features[].title
Nome della funzione.
architecture.features[].description
Una descrizione della funzionalità.
architecture.diagrams[]
Array di diagrammi di architettura che include la didascalia del diagramma, URL per incorporare l'SVG del diagramma, i metadati del diagramma come l'ID dell'elemento e la descrizione dell'elemento e la descrizione dell'architettura di riferimento.
architecture.diagrams[].diagram
Oggetto contenente informazioni su un diagramma di architettura singolare.
architecture.diagrams[].diagram.url
URL all'SVG del diagramma. È anche possibile incorporare un SVG.
architecture.diagrams[].diagram.api_url
L'API di gestione del catalogo URL al diagramma.
architecture.diagrams[].diagram.url_proxy
Oggetto contenente informazioni su un'immagine proxy.
architecture.diagrams[].diagram.url_proxy.url
L' URL e all'immagine a cui si fa riferimento.
architecture.diagrams[].diagram.url_proxy.sha
L'identificatore sha dell'immagine.
architecture.diagrams[].diagram.caption
Un'etichetta breve per il diagramma di architettura.
architecture.diagrams[].diagram.type
Il tipo di supporto.
architecture.diagrams[].diagram.thumbnail_url
Un link a una miniatura del diagramma.
architecture.diagrams[].description
Informazioni sul diagramma dell'architettura nel suo complesso, compresi i contorni del sistema e le relazioni, i vincoli e i confini tra i componenti dell'architettura distribuibile.

dependencies

Intestazione della sezione flavors per un elenco di prodotti compatibili con l'architettura distribuibile. Le dipendenze possono essere obbligatorie o facoltative. Una dipendenza inclusa qui non può essere aggiunta anche alla sezione swappable_dependencies. Le informazioni includono il nome programmatico del prodotto e le versioni del prodotto. Opzionalmente, è possibile includere l'ID del catalogo e un elenco di varianti dipendenti.

L'esempio seguente mostra la struttura JSON della sezione dependencies:

"flavors": [{
  "dependencies": [{
    "catalog_id": "catalog ID",
    "id": "offering ID",
    "name": "offering name",
    "kind": "terraform",
    "version": "SemVer version e.g. 3.1.2",
    "flavors": ["flavor name"],
    "install_type": "fullstack or extension",
    "optional": true,
    "description": "Description of optional dependency",
    "on_by_default": false,
    "input_mapping": [{
      "dependency_output": "kms_instance_crn",
      "version_input": "existing_kms_instance_crn"
    }]
  }]
}]

È possibile fornire informazioni sulle architetture necessarie che soddisfano una dipendenza e sulle architetture opzionali che funzionano con le proprie mentre si inserisce l'architettura distribuibile in un catalogo. Per ulteriori informazioni, vedere Estensione di un'architettura distribuibile durante l'onboarding.

Nella sezione dependencies si possono inserire i seguenti valori:

dependencies[].catalog_id (facoltativo)
ID del catalogo che ospita il prodotto. Se non viene specificato, il catalogo IBM Cloud è quello predefinito.
dependencies[].id (facoltativo)
L'ID del prodotto. L'ID non è richiesto se è impostato il valore name.
dependencies[].name (facoltativo)
Nome programmatico del prodotto.
dependencies[].kind
Il tipo di formato della dipendenza. Utilizzare stack per un'architettura distribuibile composta da architetture distribuibili raggruppate in cui è presente un file di configurazione dello stack. Utilizzare terraform per architetture distribuibili composte esclusivamente da uno o più moduli.
dependencies[].version
Una versione o un intervallo di versioni da includere come dipendenze nel formato SemVer.
dependencies[].flavors[] (facoltativo)
Array di nomi di varianti con cui l'architettura è compatibile.
dependencies[].default_flavor (facoltativo)
Specifica una variante predefinita che viene selezionata per gli utenti quando più varianti sono compatibili o necessarie per distribuire la vostra architettura. Gli utenti possono selezionare una variante diversa se è inclusa nella proprietà flavors. Il valore è name della variazione. Per utilizzare questa proprietà, è necessario impostare anche dependency_version_2 su true. Se non è impostato, non viene fornita una variante predefinita per gli utenti.
dependencies[].optional
Specifica se la dipendenza è necessaria o non necessaria. Il valore predefinito è false. Per utilizzare questa proprietà, è necessario impostare anche dependency_version_2 su true.
dependencies[].description (facoltativo)
Fornite una descrizione di un'architettura opzionale compatibile con la vostra, in modo che gli utenti possano capire come funziona l'architettura all'interno della soluzione più ampia e perché potrebbero volerla includere. Per utilizzare questa proprietà, è necessario impostare anche dependency_version_2 su true.
dependencies[].on_by_default
Specifica se una dipendenza opzionale viene selezionata dagli utenti quando aggiungono l'architettura distribuibile a un progetto da un catalogo. Gli utenti possono deselezionare l'architettura se non la desiderano. Il valore predefinito è false. Per utilizzare questa proprietà, è necessario impostare anche dependency_version_2 e optional su true.
dependencies[].input_mapping[] (facoltativo)
Array che specifica i valori di riferimento tra l'architettura compatibile e l'architettura che si sta inserendo. Per utilizzare questa proprietà, è necessario impostare anche dependency_version_2 su true.
dependencies[].input_mapping[].dependency_output o dependencies[].input_mapping[].dependency_input (facoltativo)
Specifica la variabile della dipendenza a cui fa riferimento l'architettura che si sta inserendo. Il valore è il nome della variabile della dipendenza. Deve essere fornita solo una di queste due proprietà. Se reference_version è impostato su true, allora questa variabile fa riferimento alla variabile version_input dell'architettura che si sta inserendo.
dependencies[].input_mapping[].version_input (facoltativo)
Specifica il nome della variabile di input nell'architettura che si sta inserendo e che fa riferimento al valore dependency_output o dependency_input. Se reference_version è impostato su true, allora la variabile dependency_input fa riferimento alla variabile version_input dell'architettura che si sta inserendo.
dependencies[].input_mapping[].value (facoltativo)
Specifica il valore preimpostato per un input dell'architettura che si sta inserendo (version_input) o della sua dipendenza (dependency_input). Il valore specificato qui viene usato solo se viene fornito un version_input o un dependency_input e se non viene fornito un dependency_output. Se viene fornito version_input, quando l'architettura e la sua dipendenza vengono aggiunte a un progetto da un utente, l'architettura version_input viene preimpostata sul valore specificato qui. Se viene fornito dependency_input, quando l'architettura e la sua dipendenza vengono aggiunte a un progetto da un utente, dependency_input della dipendenza viene preimpostato al valore specificato qui.
dependencies[].input_mapping[].reference_version (facoltativo)
Indica il flusso di riferimenti tra l'architettura che si sta inserendo e la sua dipendenza. Il valore predefinito è false. Il comportamento predefinito prevede che l'input dell'architettura (version_input) faccia riferimento a un input o a un output della dipendenza (dependency_input o dependency_output). Quando questo flag è impostato su true, dependency_input fa riferimento a un valore di version_input.

dependency_version_2 (facoltativo)

Alla pari della sezione dependencies, dependency_version_2 Specifica che la gestione delle dipendenze aggiornata viene usata con questa architettura distribuibile. Se si utilizza la proprietà optional o le sezioni input_mapping all'interno della sezione dependencies, impostare questo valore su true. In caso contrario, impostalo su false. Se questa proprietà è impostata su true, tutte le dipendenze che hanno la proprietà optional impostata su false sono necessarie per distribuire l'architettura che si sta avviando.

swappable_dependencies (facoltativo)

L'intestazione della sezione per un elenco di prodotti compatibili con l'architettura distribuibile. A differenza dell'array dependencies, i prodotti di questa sezione sono intercambiabili. L'utente può scegliere quale prodotto utilizzare per soddisfare la dipendenza. Le dipendenze intercambiabili possono essere obbligatorie o facoltative. Una dipendenza inclusa qui non può essere aggiunta anche all'array dependencies. Le informazioni includono il nome programmatico del prodotto e le versioni del prodotto. Opzionalmente, è possibile includere l'ID del catalogo e un elenco di varianti dipendenti. Per utilizzare questa proprietà, è necessario impostare anche dependency_version_2 su true.

{
  "optional": "true or false",
  "name": "Name for this group of swappable dependencies",
  "default_dependency": "the name of the dependency that is selected by default",
  "dependencies": [
    {
      	"name": "offering name",
      	"id": "offering ID",
      	"kind": "terraform",
      	"version": "SemVer version e.g. 3.1.2",
      	"flavors": [
           "flavor name"
        ],
      	"install_type": "fullstack or extension",
      	"catalog_id": "catalog ID",
      	"input_mapping": [
        {
            "dependency_output": "kms_instance_crn",
            "version_input": "existing_kms_instance_crn"
        }
        ]
    },
    {
      	"name": "offering name",
      	"id": "offering ID",
      	"kind": "terraform",
      	"version": "SemVer version e.g. 3.1.2",
      	"flavors": [
           "flavor name"
        ],
      	"install_type": "fullstack or extension",
      	"catalog_id": "catalog ID",
      	"input_mapping": [
        {
            "dependency_output": "kms_instance_crn",
            "version_input": "existing_kms_instance_crn"
        }
        ]
    }
  ]
}

I seguenti valori possono essere inseriti nella sezione swappable_dependencies:

swappable_dependencies[].name (facoltativo)
Utilizzato quando l'architettura è inserita in un catalogo per aiutare a identificare il gruppo specifico di swappable_dependencies.
swappable_dependencies[].default_dependency (facoltativo)
Il sito name di una delle dipendenze del gruppo che viene selezionato per gli utenti per impostazione predefinita.
swappable_dependencies[].dependencies
Array di dipendenze che possono essere scambiate all'interno di questo gruppo. I valori all'interno di questa matrice sono gli stessi di quelli documentati nella sezione dependencies sezione.

release_notes_url

URL alle note di rilascio dell'architettura.

configuration

Intestazione di sezione all'interno della sezione flavors che specifica la configurazione delle variabili di distribuzione per una variazione specifica. I tipi di dati del catalogo sono usati per estendere i tipi nativi e facilitare una migliore esperienza utente quando si lavora nella console IBM Cloud. Se il codice viene eseguito su una macchina locale o in un altro ambiente, le variabili non vengono utilizzate. Un esempio potrebbe essere un tipo di catalogo password usato per estendere le capacità di una variabile Terraform definita con un tipo string in modo che sia trattata come sensibile nell'interfaccia utente.

L'esempio seguente mostra la struttura JSON della sezione di configurazione:

"flavors": [{
  "configuration": [{
    "key": "deployment_variable_name",
    "type": "string",
    "default_value": "default value",
    "description": "Description shown to users",
    "display_name": "Display Name",
    "required": true,
    "hidden": false,
    "options": ["option1", "option2"],
    "custom_config": {
      "type": "widget_id",
      "grouping": "Target",
      "grouping_index": 1
    },
    "value_constraints": [{
      "type": "regex",
      "value": "^.{12,30}$",
      "description": "Must be between 12 and 30 characters"
    }]
  }]
}]

Nella sezione configuration si possono inserire i seguenti valori:

configuration[].key

La chiave di configurazione. Il valore deve corrispondere al nome di una variabile di distribuzione.

configuration[].type

Il tipo di input che un cliente può definire o selezionare. Il tipo di dati deve essere supportato dal servizio Gestione catalogo. I tipi nativi di Terraform corrispondono ad alcuni dei tipi supportati. Ad esempio, il tipo Terraform map equivale a object. Il tipo Terraform list equivale a array. Un tipo di Terraform string con un attributo sensibile equivale a password. I clienti che consumano l'architettura distribuibile devono fornire valori per il tipo di input definito nel manifest del catalogo.

Tipi predefiniti supportati:

  • boolean richiede un input di stringa true o false da parte degli utenti.
  • float richiede agli utenti un punto decimale.
  • int richiede l'inserimento di un numero intero da parte degli utenti.
  • number richiede un valore numerico. Il tipo number può rappresentare sia numeri interi che valori frazionari, come 4.56.
  • password richiede l'immissione di una stringa da parte degli utenti. La stringa viene eliminata nella console e nei log.
  • string richiede una sequenza di caratteri Unicode che rappresentano il testo. È possibile includere una stringa casuale da aggiungere come suffisso, che aiuta a evitare collisioni di nomi per le stringhe usate come prefissi o come nomi base. È possibile anche specificare la lunghezza di questa stringa casuale. La stringa generata è composta da lettere minuscole, a-z, senza caratteri speciali e preceduta da un trattino, ad esempio myString-wx. Se viene fornito anche un valore predefinito, viene aggiunto il suffisso. Se non viene fornito alcun valore predefinito, il valore è il suffisso senza il carattere trattino. Ad esempio,
"random_string": {
	"length": 2
}
  • object richiede l'inserimento di un oggetto Terraform da parte degli utenti. Per ulteriori informazioni, vedere map.

I tipi predefiniti richiedono l'inserimento manuale da parte degli utenti.

Tipi personalizzati supportati:

  • array richiede un elenco di valori separati da una virgola.
  • region richiede all'utente di selezionare una regione per distribuire l'architettura distribuibile da un elenco a discesa. È possibile filtrare le regioni disponibili per gli utenti finali. Ad esempio, si può specificare country_id:us,ca,jp nel filtro Regione per limitare le regioni disponibili a quei Paesi. Per ulteriori informazioni, vedere Sintassi del filtro.
  • textarea richiede agli utenti di inserire del testo che può essere suddiviso in più righe. Ad esempio, una descrizione.
  • vpc richiede agli utenti di selezionare una VPC per nome da un elenco a discesa. Il risultato è il nome o l'ID VPC richiesto dal modello.
  • vpc ssh key richiede agli utenti di selezionare una chiave SSH VPC per l'autenticazione a una macchina virtuale.
  • cluster richiede agli utenti di selezionare un cluster Kubernetes Service o Red Hat OpenShift. Il risultato è l'ID del cluster.
  • power iaas richiede agli utenti di selezionare un'istanza di Power Virtual Server.
  • resource group richiede agli utenti di selezionare un gruppo di risorse. Il risultato è l'ID, il nome o il CRN del gruppo di risorse.
  • multi-line secure value richiede agli utenti di immettere del testo che può essere suddiviso in più righe, che viene redatto nella console e nei log. Ad esempio, se è richiesta una chiave lunga, il valore viene nascosto negli spazi di lavoro.
  • schematics workspace richiede agli utenti di selezionare uno spazio di lavoro specifico da un elenco a discesa. Questo elenco viene filtrato dinamicamente in base alle dipendenze definite nell'architettura distribuibile. Ad esempio, se l'architettura distribuibile, example-da-1, dipende da un'altra architettura distribuibile, example-da-2, l'elenco a discesa di input per example-da-1 mostra solo gli spazi di lavoro associati a example-da-2. Gli utenti selezionano quindi l'istanza appropriata dell'area di lavoro di example-da-2 quando impostano example-da-1.
  • json editor offre agli utenti uno spazio per specificare input JSON o file di testo semplice di dimensioni maggiori.
  • code editor offre agli utenti la possibilità di scegliere tra input in formato JSON o HCL, utile per gli input basati su Terraform.
  • Platform resource richiede agli utenti di selezionare un'istanza di risorsa da un elenco per il tipo di risorsa specificato dall'utente. Il tipo di risorsa può essere VPC Subnet, VPC Image, VPC Floating IPs, Cloud Logs, Sysdig, Cloud Object Storage, Key Protect, o Secrets Manager. È possibile specificare l'ID, il nome o il CRN come valori tra cui gli utenti possono scegliere e consentire selezioni singole o multiple. L'output è il nome o l'ID richiesto dal codice Terraform.
  • secret_group richiede agli utenti di selezionare un gruppo segreto per nome da un'istanza specifica di Secrets Manager. Il risultato è l'ID o il nome del gruppo segreto. Per elencare i gruppi di un'istanza specifica di Secrets Manager, questo tipo deve essere associato al tipo personalizzato platform resource, al tipo di risorsa Secrets Manager e a un output di tipo valore crn.
  • secret richiede agli utenti di selezionare un segreto per nome da un'istanza specifica di Secrets Manager. Il risultato è l'ID, il nome o il CRN del segreto. Per elencare i segreti di un'istanza specifica di Secrets Manager, questo tipo deve essere associato almeno al tipo personalizzato platform resource, al tipo di risorsa Secrets Manager e a un output di tipo valore crn. Si può associare facoltativamente al tipo secret_group anche un output di tipo valore id per elencare i segreti di uno specifico gruppo di segreti in quell'istanza Secrets Manager.
  • kms_key richiede agli utenti di selezionare una chiave da una specifica istanza di Key Protect. Il risultato è l'ID, il nome o il CRN della chiave. Per elencare le chiavi di una specifica istanza di Key Protect, questo tipo deve essere associato al tipo personalizzato platform resource, al tipo di risorsa Key Protect e a un output di tipo valore crn.
configuration[].default_value

Il valore da impostare come predefinito.

configuration[].virtual (facoltativo)

Flag che specifica se un input deve essere passato al servizio Schematics. Se impostato su true, l'input non viene passato a Schematics. Impostare questo flag su true per tutti gli input dell'architettura distribuibile che sono referenziati in architetture compatibili, ma non utilizzati nell'architettura distribuibile che si sta inserendo. Aggiungete i riferimenti in input_mapping all'interno del file dependencies o swappable_dependencies del manifesto del catalogo.

configuration[].description

Una descrizione della variabile che si desidera visualizzare nell'interfaccia utente per gli utenti dell'architettura distribuibile.

configuration[].display_name

Il nome visualizzato per il tipo di configurazione.

configuration[].required

Un booleano che indica se gli utenti devono specificare il parametro durante l'installazione.

configuration[].hidden

Un booleano che indica se il parametro deve essere nascosto agli utenti durante l'installazione.

configuration[].options[]

Array di opzioni che gli utenti possono scegliere per un parametro.

configuration[].custom_config

Oggetto per indicare che è possibile utilizzare una configurazione personalizzata.

configuration[].custom_config.type

L'ID del tipo di widget usato per la configurazione.

configuration[].custom_config.grouping

Dove deve apparire il tipo di configurazione nel catalogo. I valori validi sono Target, Resource e Deployment.

configuration[].custom_config.original_grouping

Dove il tipo di configurazione è apparso originariamente. I valori validi sono Target, Resource e Deployment.

configuration[].custom_config.grouping_index

L'ordine di questo elemento di configurazione, quando ce ne sono più di uno.

configuration[].custom_config.config_constraints

Mappa dei parametri dei vincoli forniti al widget personalizzato.

configuration[].custom_config.associations

Oggetto per i parametri associati alla configurazione.

configuration[].configuration_group

Il nome di un gruppo di configurazione associato.

configuration[].value_constraints[]

Array di vincoli di valore, dove ogni vincolo definisce le regole di validazione.

configuration[].value_constraints[].type

Il tipo di vincolo. Al momento è supportato solo regex.

configuration[].value_constraints[].value

Un'espressione regolare JavaScript.

configuration[].value_constraints[].description

Un messaggio da visualizzare se il valore fornito non corrisponde all'espressione regolare specificata.

schematics_env_values

Nella sezione flavors, schematics_env_values specifica un elenco di valori e nomi di variabili che devono essere passati al servizio Schematics per essere usati come variabili d'ambiente durante l'esecuzione di Terraform. Potrebbe essere un valore sicuro, un'impostazione del logging di Terraform o altro. Si può scegliere di specificare una stringa o di creare un riferimento a Secrets Manager. Se vengono specificati entrambi, viene utilizzato il riferimento Secrets Manager.

L'esempio seguente mostra la struttura JSON della sezione schematics_env_values:

"flavors": [{
  "schematics_env_values": {
    "value": "[{\"name\": \"TF_LOG\",\"value\": \"TRACE\",\"secure\": true,\"hidden\": true}]",
    "sm_ref": "cmsm_v1:{...}"
  }
}]

Nella sezione schematics_env_values si possono inserire i seguenti valori:

schematics_env_values.value
Una stringa JSON che include un array di variabili d'ambiente e i loro valori.
schematics_env_values.value[].name
Specifica il nome della variabile di ambiente.
schematics_env_values.value[].value
Specifica il valore della variabile d'ambiente.
schematics_env_values.value[].secure
Specifica se visualizzare o meno il valore della variabile d'ambiente in chiaro nel log di esecuzione. I possibili valori sono true o false.
schematics_env_values.value[].hidden
Specifica se includere o meno questa variabile nel log di esecuzione. I possibili valori sono true o false.
schematics_env_values.sm_ref
Un riferimento a un'istanza di Secrets Manager che contiene le variabili d'ambiente salvate come segreto. Il segreto deve essere una stringa JSON che include un array di variabili d'ambiente e i loro valori.

La seguente stringa JSON di esempio include due variabili, TF_LOG e TF_IGNORE, e i loro valori che vengono aggiunti come variabili d'ambiente durante l'esecuzione di Terraform:

"schematics_env_values": {
    "value": "[{\"name\": \"TF_LOG\",\"value\": \"TRACE\",\"secure\": true,\"hidden\": true},{\"name\": \"TF_IGNORE\",\"value\": \"TRACE\",\"secure\": false,\"hidden\": false}]"
}

Utilizzare i caratteri di escape per le virgolette all'interno dell'elenco.

L'esempio seguente utilizza un riferimento a un segreto in Secrets Manager:

"schematics_env_values": {
    "sm_ref": "cmsm_v1:{\"name\": \"envVarSecret\",\"id\":\"1234567890\",\"service_id\":\"crn:v1:bluemix:public:secrets-manager:eu-gb:a/1234567890:1234567890::\",\"service_name\":\"My SM instance\",\"group_id\":\"1234567890\",\"group_name\":\"My SM group\",\"resource_group_id\":\"1234567890\",\"region\":\"eu-gb\",\"type\":\"arbitrary\"}"
}

minimum_compatible_version (facoltativo)

Un valore semver che indica la prima versione compatibile con la versione corrente. Se nessuna versione precedente è compatibile con la versione corrente, specificare in questo campo il valore della versione corrente. Per impostazione predefinita, la versione corrente è compatibile con tutte le versioni precedenti.

ignore_readme

Se impostato su true, il file readme non viene utilizzato quando si sale a bordo di questa versione e il campo long_description è vuoto. Se il campo long_description è vuoto, il collegamento al file readme non appare nel menu Collegamenti correlati dell'elenco del catalogo della versione.

terraform_version

La versione del runtime di Hashicorp Terraform necessaria per convalidare e installare la versione. L'impostazione di questo valore nel manifest sovrascrive quanto specificato nel codice sorgente.

outputs

Intestazione della sezione per informazioni sui valori di output di Terraform.

{
   "key": "name of the output value as defined in the Terraform",
   "description": "The description of the key"
}

Nella sezione outputs si possono inserire i seguenti valori:

outputs[].key
Specifica il valore di uscita.
outputs[].description
Un breve riassunto del valore di uscita.

install_type

Specifica se un'architettura distribuibile è fullstack o extension. Le architetture elencate come estensioni richiedono dei prerequisiti. Anche la matrice dependencies deve essere completata se si imposta questo valore su extension. Questa proprietà viene ignorata se dependency_version_2 è impostato su true.

scripts

Un elenco di script contenuti nello stesso repository che possono essere eseguiti da un progetto durante una fase particolare di un'azione specifica. Ogni chiave della mappa deve corrispondere al formato action e stage della voce. Stage deve essere pre o post. Action deve essere validate, deploy, o undeploy.

{
   "short_description": "description for the script",
   "type": "type of script. i.e. ansible",
   "path": "the path to the script in the repo. Must begin with scripts/...",
   "stage": "pre or post",
   "action": "The action that executes the script. Options include validate, deploy, or undeploy."
}