Aller au contenu
Edouard Topin's Blog
Du legacy VM Apps à All Apps avec VCF Automation 9.1 / Série 08/09

Du Namespace capturé au produit de catalogue : personnaliser et versionner l’App Stack

Testez le clone, externalisez identités et données, puis promouvez un App Stack versionné dans le catalogue.

Edouard Topin
7 min de lecture
Un App Stack WebShop progresse de la capture à la revue, au clone sandbox puis au catalogue

Un ZIP exporté et un Blueprint généré ne sont pas encore un produit. Si le premier clone reprend le FQDN de production, le compte ordinateur de la source ou un disque contenant des données sensibles, App Stack Formation aura reproduit fidèlement le problème. La vraie industrialisation commence donc après la capture.

Nous partons de webshop-appstack-v1, produit dans l’article précédent à partir de ns-webshop-prod. L’objectif est de rendre WebShop Environment v1 demandable dans prj-webshop-modern, puis supprimable sans effet sur la production. La chaîne de promotion, le versionnement et les contrôles de nettoyage présentés ici constituent un modèle d’exploitation proposé, non une procédure exécutée dans un lab.

Le Namespace source appartient déjà à All Apps : App Stack Formation ne convertit pas un deployment VM Apps et ne remplace aucune étape de migration.

Catalog productClone indépendantSuppression à valider

TL;DR

  • Une capture devient un produit seulement lorsqu’elle régénère identités et secrets, sélectionne une donnée adaptée et supporte un lifecycle complet jusqu’au delete.
  • Publiez d’abord dans un projet sandbox ; l’audience augmente après les preuves de démarrage, panne, Day-2 et nettoyage, jamais après le seul succès du provisioning.
  • Dès lundi, définissez trois versions distinctes — état source, Blueprint technique, release catalogue — et interdisez le remplacement silencieux d’une version consommée.

Promouvoir par preuves, pas par confiance

Broadcom documente la capture d’un Namespace et la distribution de Blueprints, mais le rayon de publication reste une décision de gouvernance. Une capture issue de production ne doit jamais arriver directement dans un catalogue global. Elle traverse une revue à quatre voix, un clone isolé, une panne représentative et un delete contrôlé.

Chaîne de promotion d'un App Stack depuis la capture, la revue et le clone sandbox jusqu'aux tests produit et à la publication limitée au projet
Modèle d’exploitation proposé : l’audience augmente uniquement après la preuve d’indépendance et de nettoyage.

La revue rassemble plateforme, application, sécurité et données. Elle cherche les IP, MAC, hostnames, certificats, clés privées, tokens, comptes de service, endpoints CMDB/DNS/IPAM/AD, destinations de backup, règles firewall et dépendances à une Region, un VPC ou une classe indisponible. Elle couvre le Blueprint et les disques capturés : un secret absent du code peut toujours être présent dans une image.

Personnaliser le besoin, calculer l’infrastructure

Le formulaire doit parler le langage du consommateur : environnement autorisé, taille fonctionnelle, durée de vie, profil de données et centre de coût. Il ne doit pas exposer une liste brute de VM Classes, Storage Classes ou subnets. Ces choix sont calculés par la plateforme à partir du projet, de la Region, des quotas et des politiques.

  • environnement : sandbox ou intégration selon les droits ;
  • taille : small ou standard ;
  • profil de données : vide, démo ou assaini ;
  • lease dans les limites de la politique ;
  • change et cost center lorsque la gouvernance l’exige.
  • Namespace Class, VM Class et Storage Class autorisées ;
  • VPC et subnets dédiés ou approuvés ;
  • préfixe de noms et identifiants uniques ;
  • secrets générés et flux d’approbation ;
  • labels d’observabilité, backup et ownership.

Cette séparation réutilise le principe des Custom Forms dynamiques reconstruits pour All Apps : l’utilisateur décrit son intention et le backend revalide les valeurs autorisées. Une liste dynamique n’est jamais une frontière de sécurité ; l’action de provisioning doit refuser une classe ou un projet hors politique même si une requête contourne le formulaire.

clone_profile:
  environment: sandbox
  namespace_name: generated
  hostname_prefix: ws-sbx
  size: standard
  vpc_policy: dedicated-per-deployment
  credentials: generated-in-approved-secret-store
  data_source: sanitized-demo-snapshot
  external_registration: sandbox-only
  lease_days: 7

Les mots de passe ne deviennent jamais des valeurs par défaut du formulaire. Ils sont générés ou référencés par un mécanisme de secrets approuvé. Le dataset de production n’est pas une commodité de démonstration : un profil sanitized-demo possède un propriétaire, une version, une preuve d’assainissement et une règle de rétention.

Déployer le clone et prouver son indépendance

La première demande conserve l’identifiant de request, l’identifiant de deployment, le Namespace, le VPC, les VM, les volumes, la version du Blueprint, les paramètres non sensibles, les événements et les timestamps. Ce faisceau permet de relier une erreur au bon niveau au lieu de diagnostiquer seulement la dernière VM créée.

Les quatre identités suivantes doivent changer :

Domaine Source capturée Clone attendu
Namespace ns-webshop-prod nom unique généré
VM et FQDN noms PROD préfixe de demande déterministe
systèmes externes CI, AD, DNS de production objets sandbox distincts ou aucun
données dataset de production vide, démo ou assaini selon policy

Le test le plus révélateur consiste à arrêter le clone. Si WebShop PROD perd une dépendance, un objet était partagé alors qu’il devait être isolé. Vérifiez aussi qu’aucun nom, IP ou certificat ne collisionne, que les logs portent le projet et le Namespace du clone, que le backup vise une destination sandbox et que la CMDB ne fusionne pas les deux CI.

La présentation officielle d’App Stack Formation 9.1 positionne le stack comme une unité exploitable, notamment autour d’actions telles que start, stop ou snapshot. Les actions exactes, leur portée et leur contrôle par policy restent à confirmer sur le build. Le test attendu démarre la base, attend son état prêt, démarre l’application, attend /readyz, puis rend le Web sain via /healthz. L’arrêt suit l’ordre inverse.

Injecter une panne avant d’élargir l’audience

Un produit de plateforme est défini autant par ses erreurs que par son chemin heureux. Rendez temporairement la Content Library indisponible, refusez un secret, saturez la Storage Class dans un environnement sûr ou interrompez le cleanup. Pour chaque injection, capturez le message utilisateur, les événements, la ressource bloquée, la remédiation et le reste éventuel.

Le clone contacte la production
Isoler immédiatement le réseau, identifier endpoint, secret ou donnée capturée, traiter l'exposition selon le processus sécurité et créer une nouvelle capture corrigée.
Le stack démarre dans le mauvais ordre
Remplacer les délais fixes par des conditions de disponibilité observables et vérifier le comportement lorsque la base reste indisponible.
Une action Day-2 disparaît pour l'utilisateur
Contrôler rôle, policy et portée du projet. Tester le refus attendu pour une persona non autorisée avant de modifier la gouvernance.
Une nouvelle release casse les demandes
Restaurer la release précédente, arrêter les nouvelles demandes de la version fautive et corriger sous un numéro distinct.

Le diagnostic ne doit jamais « réparer » le clone en modifiant ns-webshop-prod. La source de capture reste une référence protégée. Une correction déclarative peut être appliquée au Blueprint puis testée ; une dérive importante ou mal comprise impose généralement une nouvelle capture et une nouvelle revue.

Tester le delete comme une fonction produit

Le succès d’un clone ne se mesure pas seulement à sa création. Après suppression, contrôlez le Namespace selon son ownership, les VM, le VPC et ses subnets dédiés, les volumes/PVC, les entrées DNS et IPAM, les comptes AD, le CI CMDB, le membership load balancer, les secrets temporaires et les sauvegardes.

Classez chaque reste : absent, retained ou orphan. Un volume volontairement conservé n’est pas un orphan si un owner, une durée, un coût et une procédure de destruction sont documentés. À l’inverse, une ressource « probablement utile » sans propriétaire constitue un échec de cleanup.

delete_evidence_template:
  evidence_status: expected-result
  validation_requirements:
    - timestamped-deletion-task
    - post-deletion-inventory
    - production-non-impact-check
  expected_state:
    namespace: absent
    virtual_machines: absent
    dedicated_vpc: absent
    volumes: retained-with-data-owner-for-7-days
    dns_ipam_ad_cmdb: absent
    temporary_secrets: revoked
    production_source_impact: none
  execution_status: not-performed

Ce bloc décrit le format de preuve attendu : cet article n’a exécuté aucune suppression. Après le test, remplacez les valeurs attendues par une preuve horodatée et un inventaire post-suppression.

Versionner trois objets différents

Une seule étiquette v1 est insuffisante. Conservez un tuple :

release_tuple:
  capture_source: webshop-prod@2026-08-10T20:00Z
  blueprint: webshop-appstack-v1.2
  catalog_release: 1.0.0
  audience: prj-webshop-modern
  deprecated_after: 2026-11-10

capture_source identifie l’état observé du Namespace. blueprint versionne l’artefact technique et ses personnalisations. catalog_release communique un contrat au consommateur. Ne remplacez pas v1 en silence : publiez v2, marquez v1 comme dépréciée, bloquez éventuellement ses nouvelles demandes et laissez les deployments existants suivre leur lifecycle.

Pour un changement majeur du stack vivant, recapturez et repassez toute la chaîne. Pour une petite correction déclarative, modifiez le Blueprint et retestez. Pour un changement de dataset seulement, versionnez la donnée sans recapturer l’infrastructure. Pour un nouveau runtime, créez un nouveau produit plutôt que de maquiller la rupture en version mineure.

Publication graduelle et rollback

La première release reste limitée à prj-webshop-modern. Appliquez selon le besoin les politiques All Apps d’approval, de lease, d’actions Day-2 et de ressources IaaS, puis configurez les quotas pour le périmètre visé. Affichez owner, support, coût estimé, limites, version et date de dépréciation. Le Global Catalog ou une audience plus large arrive seulement après plusieurs lifecycles observés.

Si le clone échoue, limitez ou dépubliez la release, conservez le deployment le temps de l’analyse si la sécurité l’autorise, supprimez-le via le lifecycle supporté, contrôlez les systèmes externes, puis restaurez la release précédente. Si une donnée sensible a été copiée, le delete du deployment peut ne pas suffire : backups et rétention suivent le processus d’incident du client.

Conclusion

App Stack Formation accélère le passage d’un service stable à un artefact réutilisable. Le travail de plateforme consiste ensuite à rendre cet artefact sûr, compréhensible, observable et supprimable. C’est la combinaison identité + donnée + Day-2 + delete + version qui crée un produit, pas le bouton Publish.

Indépendance à démontrer

Le clone doit posséder ses noms, secrets, données et objets externes. Son arrêt ne doit rien changer au service de production.

Nettoyage à prouver

Après le test, chaque ressource restante doit être absente ou conservée avec owner et échéance ; l’imprécision est traitée comme un défaut produit.

Versions explicites

État source, Blueprint et release catalogue évoluent séparément pour éviter les remplacements invisibles.

Revenez au preflight et à la capture du Namespace si un défaut se trouve dans l’artefact source. Une fois la release opérable, la dernière étape consiste à drainer, désactiver puis éventuellement supprimer l’organisation VM Apps.

Sources officielles : Capture a Namespace as a Blueprint · App Stack Formation 9.1 · Import or Export a Stateful Blueprint · Politiques approval, lease, Day-2 et ressources IaaS.

Reçois le prochain par email

Les nouveaux articles et séries, envoyés à leur publication. Aucun autre courrier.

Désabonnement en un clic, à tout moment.

Retour au blog
Partager

Articles similaires

  1. 9 min de lecture

    App Stack Formation : capturer le Namespace WebShop sans capturer ses défauts

    Validez le Namespace, le VM Group et la Content Library avant une capture App Stack contrôlée et traçable.

  2. 9 min de lecture

    Après l’upgrade : ce que l’organisation VM Apps préserve vraiment

    Établissez la baseline post-upgrade, validez identité, Orchestrator et Day‑2, puis séparez dette d’upgrade et dette de migration.

  3. 9 min de lecture

    Inventorier le legacy : choisir quoi migrer, conserver ou retirer

    Cartographiez services et dépendances, appliquez les gates d’éligibilité et construisez des vagues de migration vérifiables.

Suivre le blog

Nouveaux articles, réflexions et mises à jour.