Empiler des architectures déployables dans un projet

Vous pouvez empiler des architectures déployables dans un projet pour créer une architecture de solution de bout en bout plus complexe. Il n'est pas nécessaire de coder Terraform pour relier les architectures déployables entre elles. Lorsque vous configurez les valeurs d'entrée dans une architecture déployable, vous pouvez faire référence aux entrées ou aux sorties d'une autre architecture pour les relier entre elles. Après avoir déployé les architectures empilées, vous pouvez les ajouter à un catalogue privé en tant qu'architecture déployable afin de partager facilement votre solution de bout en bout avec d'autres membres de votre organisation.

Il s'agit d'une fonction expérimentale qui est disponible à des fins d'évaluation et de test et qui peut être modifiée sans préavis.

Dans un projet, vous pouvez empiler des architectures déployables qui sont déjà disponibles dans un catalogue. Si vous créez une architecture déployable qui n'est pas déjà intégrée à un catalogue, vous pouvez étendre l'architecture déployable au fur et à mesure que vous l'intégrez en l'empilant avec d'autres architectures. Cette approche offre davantage d'options de personnalisation qui ne sont pas disponibles lorsque vous empilez des architectures déployables dans un projet, comme l'inclusion d'architectures optionnelles pour différents cas d'utilisation. Cette approche fonctionne également si l'architecture déployable n'est pas encore disponible dans un catalogue privé. Quelle que soit l'approche adoptée pour empiler les architectures, le résultat est une architecture déployable plus robuste que les utilisateurs peuvent configurer et déployer à l'aide d'un projet.

Avant de commencer

Assurez-vous que vous disposez des accès suivants. Pour plus d'informations sur l'accès et les droits d'accès, voir Affectation de l'accès aux projets.

  • Le rôle d'éditeur sur le service IBM Cloud Projets.
  • Rôle Editeur et Gestionnaire sur le service IBM Cloud® Schematics.
  • Rôle Afficheur sur le groupe de ressources du projet.

Ajoutez les architectures déployables que vous souhaitez empiler ensemble dans votre projet. Pour plus d'informations, voir Ajout d'architectures déployables à un projet.

Lorsque vous ajoutez des architectures déployables à votre projet, fournissez des noms significatifs pour vous aider à les identifier. Par exemple, si vous ajoutez une architecture déployable qui crée la base d'une application, cette infrastructure doit d'abord être déployée. Sinon, l'application ne peut pas être déployée sur cette infrastructure. Nommez votre architecture déployable d'infrastructure 1 - infrastructure lorsque vous l'ajoutez à votre projet. Nommez l'application 2 - application pour indiquer qu'elle doit être déployée en seconde.

Empilement d'architectures à l'aide de l'interface de ligne de commande

Après avoir ajouté les architectures déployables à votre projet, empilez-les ensemble en exécutant la commande ibmcloud project config-create suivante. Dans l'option Definition, spécifiez l'adresse members en fournissant un nom et l'identifiant de configuration pour les architectures déployables existantes que vous souhaitez empiler :

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

Par exemple, la commande suivante crée une architecture déployable nommée StackDev dans votre projet. Il contient deux architectures déployables, custom-apache et test-slz, qui ont déjà été ajoutées au projet en tant que configurations :

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

Pour plus d'informations sur les paramètres de commande, voir ibmcloud project config-create.

Création de la définition de la pile à l'aide de l'interface de programmation

Pour intégrer votre architecture déployable à un catalogue privé, vous devez créer une définition de pile. Il définit les relations entre les différentes architectures déployables. Fournissez ces informations pour que les utilisateurs puissent déployer la solution entière avec succès lorsqu'ils l'ajoutent à un projet à partir du catalogue privé.

La définition de la pile contient des entrées et des sorties qui peuvent être référencées dans les architectures déployables des membres. Vous pouvez également inclure des références entre les architectures déployables, ce qui les relie entre elles pour les utilisateurs. Les entrées qui nécessitent une valeur ou une référence spécifique pour être déployées avec succès doivent être incluses dans la définition de la pile.

Schéma d'une architecture déployable réalisée en empilant deux architectures. Trois valeurs d'entrée sont définies dans la définition de la pile : un préfixe, une clé ssh et une clé ssh_privée. L'architecture test-slz fait référence au préfixe et à la clé ssh_key comme deux de ses valeurs d'entrée. Alors que l'architecture custom-apache fait référence à une sortie de test-slz comme l'une de ses entrées, avec la clé ssh_private_key de la définition de la pile.
Références entre architectures déployables

Actuellement, les membres ne peuvent pas faire référence à des sorties de la définition de la pile.

Exécutez la commande ibmcloud project stack-definition-create suivante pour créer la définition de pile et fournir les entrées:

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

id est l'ID de configuration de l'architecture déployable StackDev que vous venez de créer dans votre projet.

Par exemple, la commande suivante ajoute les trois entrées suivantes à la définition de la pile. Ces entrées sont des chaînes obligatoires qui ne sont pas cachées aux utilisateurs, qui doivent donc configurer ces valeurs d'entrée pour déployer l'architecture déployable de bout en bout :

  • Entrée prefix avec stackDemo comme valeur par défaut.
  • Entrée ssh_key sans valeur par défaut.
  • ssh_private_key avec une valeur par défaut fournie pour aider les utilisateurs à configurer l'entrée.

La commande inclut également les noms d'entrée pour les deux architectures déployables qui sont empilées ensemble. Ces entrées seront complétées par des valeurs en tant que références et enregistrées pour les utilisateurs qui ajoutent la solution à un projet à partir du catalogue privé :

  • L'architecture déployable test-slz contient une entrée prefix et une entrée ssh_key.
  • L'architecture déployable custom-apache contient une entrée ssh_private_key et une entrée prerequisite_workspace_id.

Pour plus d'informations sur l'écriture de références, voir Valeurs de référencement.

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

Pour plus d'informations sur les paramètres de commande, voir ibmcloud project stack-definition-create.

Référencement des entrées de la définition de la pile dans les architectures déployables des membres à l'aide de l'interface de programmation (CLI)

Maintenant que les entrées sont ajoutées à la définition de la pile, mettez à jour les architectures déployables membres pour référencer ces entrées en exécutant la commande ibmcloud project config-update pour chaque architecture que vous avez empilée :

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

Par exemple, la commande suivante met à jour l'architecture déployable test-slz pour référencer les entrées qui ont été ajoutées à la définition de la pile :

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

Etant donné que l'architecture custom-apache utilise la valeur ssh_private_key de la définition de pile, mettez à jour l'architecture déployable custom-apache pour référencer cette valeur. L'architecture custom-apache utilise également la valeur d'entrée schematics_workspace_id comme l'une de ses entrées. Par conséquent, incluez une référence à cette valeur:

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

Pour plus d'informations sur les paramètres de commande, voir ibmcloud project config-update.

Mise à jour des valeurs d'entrée dans la définition de la pile à l'aide de la CLI

Maintenant que les architectures déployables membres sont configurées pour référencer les valeurs souhaitées, mettez à jour les valeurs d'entrée dans la définition de la pile en exécutant ibmcloud project config-update pour l'architecture déployable StackDev. Par exemple, la commande suivante met à jour la valeur d'entrée prefix qui est référencée par l'architecture déployable test-slz. Des valeurs sont également fournies pour les entrées ssh_key et 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

Pour plus d'informations sur les paramètres de commande, voir ibmcloud project config-update.

Maintenant que la valeur d'entrée est configurée, validez et déployez chaque membre de l'architecture déployable.

Par exemple, la commande suivante valide l'architecture déployable test-slz:

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

Alors que la commande suivante approuve l'architecture déployable test-slz pour le déploiement:

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

Et la commande suivante déploie l'architecture déployable test-slz:

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

Onboarding vers un catalogue privé à l'aide de la CLI

Une fois que chaque architecture déployable membre est validée et déployée, vous pouvez l'intégrer à un catalogue privé auquel d'autres personnes peuvent accéder. Lorsqu'un utilisateur ajoute votre architecture déployable à un projet du catalogue privé, chaque architecture que vous avez empilée est incluse dans le projet. Exécutez la commande ibmcloud project stack-definition-export suivante:

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

Vous pouvez créer un nouveau produit ou ajouter une version à un produit existant. Par exemple, la commande suivante crée un nouveau produit dans votre catalogue privé nommé 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

La commande suivante crée une nouvelle version d'un produit existant:

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

Pour plus d'informations sur les paramètres de commande, voir ibmcloud project stack-definition-export.

Votre architecture est maintenant une ébauche dans le catalogue privé qui n'est pas encore publiée, mais qui est disponible pour toute personne ayant un accès éditeur au catalogue privé.

Pour terminer l'intégration à votre catalogue privé, modifiez les détails du catalogue et fournissez des informations telles qu'un diagramme d'architecture et une catégorie.

Empilement d'architectures à l'aide de la console

Après avoir ajouté les architectures déployables à votre projet, configurez-les. Si les architectures que vous empilez dépendent les unes des autres, reliez-les en référençant les entrées ou les sorties au fur et à mesure que vous les configurez. Ensuite, empilez les architectures en suivant les étapes suivantes :

  1. Cochez la case des architectures déployables que vous souhaitez empiler.

  2. Sélectionnez Pile.

  3. Donnez un nom aux architectures déployables ou sélectionnez-en un existant.

    Les architectures déployables doivent travailler ensemble pour fournir une solution. Envisagez un nom significatif pour la solution de bout en bout, qui représente avec précision chaque architecture que vous empilez. Par exemple, si vous empilez une application Apache avec une base d'infrastructure, nommez-la quelque chose comme Apache application with infrastructure base pour identifier clairement ce que l'architecture déploie.

  4. Cliquez sur Continu.

Définition de variables à l'aide de la console

Après avoir empilé les architectures déployables, vous devez définir des variables pour vos utilisateurs. Votre objectif est de relier les architectures déployables entre elles afin que les utilisateurs puissent configurer les entrées dans une interface unique, au lieu de configurer les architectures individuellement.

Les variables d'entrée que vous définissez sont configurées par les utilisateurs après que l'architecture déployable a été ajoutée à un projet à partir d'un catalogue. De même, les variables de sortie que vous sélectionnez s'affichent pour les utilisateurs au niveau parent de l'architecture. Ne sélectionnez pas les variables que les utilisateurs ne doivent pas configurer. Par exemple, si votre architecture exige une valeur spécifique pour une variable d'entrée, telle qu'un plan de stockage, ne sélectionnez pas l'entrée plan de stockage. Ne sélectionnez pas de références qui relient les architectures déployables entre elles. Si vous le faites, la connexion entre ces architectures risque d'être rompue et l'ensemble de la solution risque de ne pas être déployée avec succès.

Pour faciliter la configuration par les utilisateurs, réduisez au minimum le nombre de valeurs d'entrée requises. Examinez les entrées requises pour chaque architecture et assurez-vous que ces entrées sont configurées en ajoutant des références aux valeurs d'entrée dans la définition de la pile, ou en référençant les valeurs de sortie d'autres architectures.

Procédez comme suit :

  1. Dans l'onglet Configurations de votre projet, cliquez sur l'icône Options Icône Options pour l'architecture déployable empilée et sélectionnez Définir les variables.

  2. Dans l'onglet Sécurité, sélectionnez les variables que les utilisateurs doivent configurer.

  3. Accédez à l'onglet Entrées requises et sélectionnez les entrées requises que les utilisateurs doivent configurer.

  4. Accédez à l'onglet Entrées facultatives et sélectionnez les entrées facultatives que les utilisateurs doivent configurer.

  5. Allez dans l'onglet Sorties et sélectionnez toutes les variables de sortie que vous souhaitez afficher au niveau du parent.

    Faciliter la recherche par les utilisateurs des valeurs de sortie importantes après le déploiement de l'architecture, telles que les URL d'application ou les noms d'identification. Sélectionner les valeurs de sortie importantes des architectures déployables membres afin de les afficher pour les utilisateurs au niveau parent.

  6. Cliquez sur Suivant et continuez à sélectionner des variables pour les architectures restantes.

  7. Lorsque vous avez terminé, cliquez sur Terminer et configurez l'architecture pour le déploiement. Les entrées que vous avez sélectionnées lors de la définition des variables peuvent devoir être configurées.

Onboarding vers un catalogue privé en utilisant la console

Après avoir validé et déployé chacune des architectures déployables que vous avez empilées, vous pouvez les ajouter en tant qu'architecture déployable à un catalogue privé afin de partager facilement la solution avec d'autres membres de votre organisation. Pour plus d'informations, voir Partage d'un catalogue privé.

Procédez comme suit :

  1. Dans l'onglet Configurations de votre projet, cliquez sur l'icône Options Icône Options pour l'architecture déployable et sélectionnez Ajouter au catalogue privé.
  2. Sélectionnez ou créez le catalogue privé auquel vous souhaitez ajouter l'architecture déployable.
  3. Choisissez s'il s'agit d'un nouveau produit ou d'une nouvelle version d'un produit existant.
  4. Fournissez les détails tels qu'un nom de produit, le cas échéant, la catégorie, la variante et la version.
  5. Cliquez sur Suivant.
  6. Passez en revue les variables que les utilisateurs peuvent configurer après avoir ajouté une architecture déployable à un projet à partir du catalogue privé. Si vous devez apporter des modifications, vous pouvez définir les variables.
  7. Cliquez sur Ajouter.

Votre architecture déployable est maintenant une ébauche dans le catalogue privé qui n'est pas encore publiée, mais qui est disponible pour toute personne ayant un accès éditeur à votre catalogue privé. Lorsqu'un utilisateur ajoute votre architecture déployable à un projet du catalogue privé, chaque architecture que vous avez empilée est incluse dans le projet.

Pour terminer l'intégration de votre architecture déployable dans votre catalogue privé, modifiez les détails du catalogue et fournissez des informations telles qu'un diagramme d'architecture et une catégorie.

Existe-t-il une nouvelle version disponible pour une architecture déployable que vous avez empilée avec d'autres? Mettez à jour la configuration de votre projet pour utiliser la dernière version, validez et déployez les modifications, puis suivez les étapes pour intégrer la solution mise à jour dans un catalogue privé. Sélectionnez le produit existant que vous avez déjà intégré et indiquez un nouveau numéro de version. Ce faisant, vous vous assurez que l'architecture déployable mise à jour fonctionne toujours correctement avec les autres architectures que vous avez empilées avec elle.