IBM Cloud Docs
Impilare architetture distribuibili in un progetto

Impilare architetture distribuibili in un progetto

È possibile impilare le architetture distribuibili in un progetto per creare un'architettura di soluzione end-to-end più complessa. Non è necessario codificare Terraform per collegare tra loro le architetture distribuibili. Quando si configurano i valori di input in un'architettura distribuibile, è possibile fare riferimento a input o output di un'altra architettura per collegarli tra loro. Dopo aver distribuito le architetture impilate, è possibile aggiungerle a un catalogo privato come architettura distribuibile per condividere facilmente la soluzione end-to-end con altri membri dell'organizzazione.

Questa è una funzione sperimentale disponibile per scopi di valutazione e test e potrebbe cambiare senza preavviso.

In un progetto, è possibile impilare architetture distribuibili già disponibili in un catalogo. Se si sta creando un'architettura distribuibile che non è già inserita in un catalogo, è possibile estendere l'architettura distribuibile man mano che la si inserisce, impilandola con altre architetture. Questo approccio offre maggiori opzioni di personalizzazione che non sono disponibili quando si impilano le architetture distribuibili in un progetto, come l'inclusione di architetture opzionali per diversi casi d'uso. Questo approccio funziona anche se l'architettura distribuibile non è ancora disponibile in un catalogo privato. Indipendentemente dall'approccio adottato per impilare le architetture, il risultato è un'architettura distribuibile più robusta che gli utenti possono configurare e distribuire utilizzando un progetto.

Prima di iniziare

Assicuratevi di avere i seguenti accessi. Per ulteriori informazioni sull'accesso e sulle autorizzazioni, vedi Assegnazione dell'accesso ai progetti.

  • Il ruolo di editor sul servizio Progetti IBM Cloud.
  • Il ruolo di editor e gestore sul servizio IBM Cloud® Schematics.
  • Il ruolo Visualizzatore sul gruppo di risorse per il progetto.

Aggiungere al proprio progetto le architetture distribuibili che si desidera raggruppare. Per ulteriori informazioni, vedi Aggiunta di architetture distribuibili a un progetto.

Quando si aggiungono architetture distribuibili al progetto, fornire nomi significativi per identificarle. Ad esempio, se si aggiunge un'architettura distribuibile per l'infrastruttura che crea la base per un'applicazione, tale infrastruttura deve essere distribuita per prima. In caso contrario, l'applicazione non può eseguire la distribuzione su tale infrastruttura. Denominare l'architettura distribuibile dell'infrastruttura 1 - infrastructure quando la si aggiunge al progetto. Denominare l'applicazione 2 - application per indicare che deve essere distribuita in secondo luogo.

Impilamento delle architetture utilizzando la CLI

Dopo che hai aggiunto le architetture distribuibili al tuo progetto, impilale insieme eseguendo il seguente comando ibmcloud project config-create. Nell'opzione Definition, specificare members fornendo un nome e l'ID di configurazione per le architetture distribuibili esistenti che si desidera impilare insieme:

ibmcloud project config-create --project-id PROJECT-ID [--definition DEFINITION]

Ad esempio, il comando seguente crea un'architettura distribuibile che si chiama StackDev nel progetto. Contiene due architetture distribuibili, custom-apache e test-slz, già aggiunte come configurazioni al progetto:

ibmcloud project config-create \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--definition '{"name": "StackDev", "members": [{"name": "custom-apache", "config_id": "caff3a49-0bf4-40c4-b348-47e5da6e2274"}, {"name": "test-slz", "config_id": "fc7fa3d1-33db-4c40-9570-7604348ab3c4"} ]}' --output json

Per ulteriori informazioni relative ai parametri del comando, consultare ibmcloud project config-create.

Creazione della definizione di stack utilizzando la CLI

Per inserire l'architettura distribuibile in un catalogo privato, è necessario creare una definizione di stack. Definisce il modo in cui ogni architettura implementabile si relaziona con le altre. Fornite queste informazioni in modo che gli utenti possano distribuire correttamente l'intera soluzione quando la aggiungono a un progetto dal catalogo privato.

La definizione dello stack contiene ingressi e uscite che possono essere referenziati nelle architetture distribuibili dei membri. È inoltre possibile includere riferimenti tra le architetture distribuibili, che le collegano tra loro per gli utenti. Gli input che richiedono un valore o un riferimento specifico per essere distribuiti con successo devono essere inclusi nella definizione dello stack.

Un diagramma di un'architettura distribuibile realizzata impilando due architetture. Nella definizione dello stack sono definiti tre valori di input: un prefisso, una chiave ssh_e una chiave ssh_privata. L'architettura test-slz fa riferimento al prefisso e a ssh_key come due dei suoi valori di ingresso. Mentre l'architettura custom-apache fa riferimento a un output di test-slz come uno dei suoi input, insieme a ssh_private_key dalla definizione dello stack.
Riferimenti tra architetture implementabili

Attualmente, i membri non possono fare riferimento alle uscite dalla definizione dello stack.

Eseguire questo comando ibmcloud project stack-definition-create per creare la definizione di stack e fornire gli input:

ibmcloud project stack-definition-create --project-id PROJECT-ID --id

Dove id è l'ID di configurazione dell'architettura distribuibile StackDev appena creata nel progetto.

Ad esempio, il comando seguente aggiunge i tre ingressi seguenti alla definizione della pila. Questi input sono stringhe obbligatorie che non sono nascoste agli utenti, che devono quindi configurare questi valori di input per distribuire l'architettura distribuibile end-to-end:

  • prefix input con stackDemo come valore predefinito.
  • Input ssh_key senza valore predefinito.
  • ssh_private_key con un valore predefinito fornito per assistere gli utenti nella configurazione dell'input.

Il comando include anche i nomi di input per le due architetture distribuibili che sono impilate insieme. Questi input saranno popolati con valori come riferimenti e salvati per gli utenti che aggiungono la soluzione a un progetto dal catalogo privato:

  • L'architettura distribuibile test-slz contiene un input prefix e un input ssh_key.
  • L'architettura distribuibile custom-apache contiene un input ssh_private_key e un input prerequisite_workspace_id.

Per ulteriori informazioni sulla scrittura dei riferimenti, consultare Riferimento ai valori.

ibmcloud project stack-definition-create \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id 4d69cee6-0fb2-4621-96c6-16d987f3d9d7 \
--stack-definition '{"inputs": [{"name": "prefix", "type": "string", "hidden": false, "required": true, "default": "stackDemo"}, {"name": "ssh_key", "type": "string", "hidden": false, "required": true}, {"name": "ssh_private_key", "type": "string", "hidden": false, "required": true, "default": "<<-EOF\nINSERT YOUR KEY HERE\nEOF"}], "members": [{"name": "test-slz", "inputs": [{"name": "prefix"}, {"name": "ssh_key"}]}, {"name": "custom-apache", "inputs": [{"name": "ssh_private_key"}, {"name": "prerequisite_workspace_id"}]} ]}' --output json

Per ulteriori informazioni relative ai parametri del comando, consultare ibmcloud project stack-definition-create.

Fare riferimento agli input della definizione dello stack all'interno delle architetture distribuibili dei membri utilizzando la CLI

Ora che gli input sono stati aggiunti alla definizione dello stack, aggiornate le architetture distribuibili membri per fare riferimento a questi input eseguendo il comando ibmcloud project config-update per ogni architettura che avete impilato insieme:

ibmcloud project config-update --project-id PROJECT-ID --id

Ad esempio, il comando seguente aggiorna l'architettura distribuibile test-slz per fare riferimento agli ingressi aggiunti alla definizione dello stack:

ibmcloud project config-update \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id fc7fa3d1-33db-4c40-9570-7604348ab3c4 \
--definition '{"inputs": {"prefix": "ref:../../inputs/prefix", "ssh_key": "ref:../../inputs/ssh_key"}}' --output json

Poiché l'architettura custom-apache utilizza il valore ssh_private_key dalla definizione di stack, aggiornare l'architettura distribuibile custom-apache per fare riferimento a quel valore. L'architettura custom-apache utilizza anche il valore di input di schematics_workspace_id come uno dei suoi input, quindi includere un riferimento a tale valore:

ibmcloud project config-update \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id caff3a49-0bf4-40c4-b348-47e5da6e2274 \
--definition '{"inputs": {"ssh_private_key": "ref:../../inputs/ssh_private_key", "prerequisite_workspace_id": "ref:../test-slz/outputs/schematics_workspace_id"}}' --output json

Per ulteriori informazioni relative ai parametri del comando, consultare ibmcloud project config-update.

Aggiornamento dei valori di input nella definizione di stack tramite la CLI

Ora che le architetture distribuibili membri sono configurate per fare riferimento ai valori desiderati, aggiornare i valori di input nella definizione dello stack eseguendo ibmcloud project config-update per l'architettura distribuibile StackDev. Ad esempio, il comando seguente aggiorna il valore di ingresso prefix a cui fa riferimento l'architettura implementabile test-slz. I valori vengono forniti anche per gli input ssh_key e ssh_private_key:

ibmcloud project config-update  \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id 4d69cee6-0fb2-4621-96c6-16d987f3d9d7 \
--definition '{"inputs": {"prefix": "kb-stack-0327", "ssh_key": "<publicKey>", "ssh_private_key": "<privateKey>"}}' --output json

Per ulteriori informazioni relative ai parametri del comando, consultare ibmcloud project config-update.

Ora che il valore di input è configurato, convalidare e distribuire ogni architettura distribuibile membro.

Ad esempio, il seguente comando convalida l'architettura distribuibile test-slz:

ibmcloud project config-validate \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id fc7fa3d1-33db-4c40-9570-7604348ab3c4

Mentre il seguente comando approva l'architettura distribuibile test-slz per la distribuzione:

ibmcloud project config-approve \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id fc7fa3d1-33db-4c40-9570-7604348ab3c4 \
--comment 'I approve'

E il seguente comando distribuisce l'architettura distribuibile test-slz:

ibmcloud project config-deploy \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id fc7fa3d1-33db-4c40-9570-7604348ab3c4

Onboarding di un catalogo privato tramite CLI

Dopo che ogni architettura distribuibile membro è stata convalidata e distribuita, è possibile inserire la propria architettura distribuibile in un catalogo privato a cui gli altri possono accedere. Quando un utente aggiunge la vostra architettura distribuibile a un progetto dal catalogo privato, ogni architettura che avete impilato insieme viene inclusa nel progetto. Eseguire questo comando ibmcloud project stack-definition-export:

ibmcloud project stack-definition-export --project-id PROJECT ID

È possibile creare un nuovo prodotto o aggiungere una versione a un prodotto esistente. Ad esempio, il seguente comando crea un prodotto nuovo nel tuo catalogo privato denominato My Apache Stack:

ibmcloud project stack-definition-export --project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 --id 4d69cee6-0fb2-4621-96c6-16d987f3d9d7 --settings '{"catalog_id": "702ff97a-e35a-45a4-a0c0-a04e2e052bc8", "label": "My Apache Stack"}' --output json

Mentre il seguente comando crea una nuova versione di un prodotto esistente:

ibmcloud project stack-definition-export \
--project-id 0e13c360-45c4-4b68-a53f-bb8f6ac04161 \
--id 4d69cee6-0fb2-4621-96c6-16d987f3d9d7 \
--settings '{"catalog_id": "702ff97a-e35a-45a4-a0c0-a04e2e052bc8", "product_id": "1bf57631-27a2-42cc-ac87-733cca67e8a5", "target_version": "1.0.1"}' --output json

Per ulteriori informazioni relative ai parametri del comando, consultare ibmcloud project stack-definition-export.

La vostra architettura è ora una bozza nel catalogo privato, non ancora pubblicata, ma disponibile per chiunque abbia accesso al catalogo privato.

Per completare l'onboarding del vostro catalogo privato, modificate i dettagli del catalogo e fornite informazioni come un diagramma dell'architettura e una categoria.

Impilamento delle architetture utilizzando la console

Dopo aver aggiunto le architetture distribuibili al progetto, configurarle. Se le architetture da impilare dipendono l'una dall'altra, collegatele tra loro facendo riferimento agli ingressi o alle uscite mentre le configurate. Quindi, impilare le architetture completando i seguenti passaggi:

  1. Selezionare la casella di controllo per le architetture distribuibili che si desidera impilare insieme.

  2. Selezionare Stack.

  3. Fornire un nome per le architetture distribuibili o selezionarne una esistente.

    Le architetture implementabili devono collaborare per fornire una soluzione. Considerate un nome significativo per la soluzione end-to-end che rappresenti accuratamente ogni architettura che state mettendo insieme. Ad esempio, se state impilando un'applicazione Apache insieme a un'infrastruttura di base, chiamatela con un nome del tipo Apache application with infrastructure base per identificare chiaramente l'architettura distribuita.

  4. Fai clic su Continue.

Definizione di variabili tramite la console

Dopo aver impilato le architetture distribuibili, è necessario definire le variabili per gli utenti. L'obiettivo è collegare le architetture distribuibili tra loro, in modo che gli utenti possano configurare gli input in un'unica interfaccia, invece di configurare le architetture singolarmente.

Le variabili di input definite sono configurate dagli utenti dopo che l'architettura distribuibile è stata aggiunta a un progetto da un catalogo. Allo stesso modo, le variabili di output selezionate vengono visualizzate per gli utenti del livello principale dell'architettura. Non selezionare le variabili che gli utenti non devono configurare. Ad esempio, se l'architettura richiede un valore specifico per una variabile di input, come il piano di archiviazione, non selezionare l'input piano di archiviazione. Non selezionare riferimenti che colleghino tra loro le architetture distribuibili. In questo caso, la connessione tra queste architetture potrebbe interrompersi e l'intera soluzione potrebbe non essere distribuita con successo.

Per facilitare la configurazione agli utenti, ridurre al minimo il numero di valori di input richiesti. Esaminare gli ingressi richiesti per ciascuna architettura e assicurarsi che tali ingressi siano configurati aggiungendo riferimenti ai valori di ingresso nella definizione dello stack o facendo riferimento ai valori di uscita di altre architetture.

Completa i seguenti passi:

  1. Nella scheda Configurazioni del progetto, fare clic sull'icona Opzioni Opzioni per l'architettura distribuibile impilata e selezionare Definisci variabili.

  2. Nella scheda Sicurezza, selezionare le variabili che gli utenti devono configurare.

  3. Andare alla scheda Input richiesti e selezionare gli input richiesti che gli utenti devono configurare.

  4. Andare alla scheda Input facoltativi e selezionare gli input facoltativi che gli utenti devono configurare.

  5. Passare alla scheda Output e selezionare le variabili di output che si desidera visualizzare a livello di genitore.

    Facilitare agli utenti la ricerca di valori di output importanti dopo la distribuzione dell'architettura, come gli URL delle applicazioni o i nomi delle credenziali. Selezionare i valori di output importanti dalle architetture distribuibili dei membri per visualizzarli per gli utenti del livello padre.

  6. Fare clic su Avanti e continuare a selezionare le variabili per le altre architetture.

  7. Al termine, fare clic su Fine e configurare l'architettura per la distribuzione. Potrebbe essere necessario configurare gli ingressi selezionati durante la definizione delle variabili.

Onboarding su un catalogo privato utilizzando la console

Dopo aver convalidato e distribuito ciascuna delle architetture distribuibili impilate, è possibile aggiungerle come architettura distribuibile a un catalogo privato per condividere facilmente la soluzione con altri membri dell'organizzazione. Per ulteriori informazioni, vedere Condivisione di un catalogo privato.

Completa i seguenti passi:

  1. Nella scheda Configurazioni del progetto, fare clic sull'icona Opzioni Opzioni per l'architettura distribuibile e selezionare Aggiungi al catalogo privato.
  2. Selezionare o creare il catalogo privato a cui aggiungere l'architettura distribuibile.
  3. Selezionare se si tratta di un nuovo prodotto o di una nuova versione di un prodotto esistente.
  4. Fornire i dettagli come il nome di un prodotto, se applicabile, la categoria, la variazione e la versione.
  5. Fai clic su Next.
  6. Esaminare le variabili che gli utenti possono configurare dopo aver aggiunto l'architettura distribuibile a un progetto dal catalogo privato. Se è necessario apportare modifiche, è possibile definire le variabili.
  7. Fai clic su Aggiungi.

L'architettura distribuibile è ora una bozza nel catalogo privato, non ancora pubblicata, ma disponibile a chiunque abbia accesso al catalogo privato. Quando un utente aggiunge la vostra architettura distribuibile a un progetto dal catalogo privato, ogni architettura che avete impilato insieme viene inclusa nel progetto.

Per completare l'inserimento dell'architettura distribuibile nel catalogo privato, modificate i dettagli del catalogo e fornite informazioni come un diagramma dell'architettura e una categoria.

È disponibile una nuova versione per un'architettura distribuibile che avete impilato con altri? Aggiornate la configurazione del progetto per utilizzare la versione più recente, convalidate e distribuite le modifiche, quindi completate i passaggi per inserire la soluzione aggiornata in un catalogo privato. Selezionate il prodotto esistente che avete già inserito e fornite un nuovo numero di versione. In questo modo, si contribuisce a garantire che l'architettura distribuibile aggiornata continui a funzionare correttamente con le altre architetture impilate insieme ad essa.