Aller au contenu

Déployer la démo

  • Terraform à la version plancher indiquée dans terraform/versions.tf>= 1.8, pour les fonctions définies par le fournisseur et le bloc check qui protège la VIP.
  • Le fournisseur xcsh. Aucune version n’est figée : .terraform.lock.hcl est ignoré par git et la contrainte est un plancher ouvert, donc chaque init résout la dernière version publiée. C’est délibéré pour un projet en préversion — la démo doit échouer sur une régression du fournisseur plutôt que de rester sur une version obsolète qui la masque.
  • Un identifiant d’API F5 XC pour le tenant indiqué dans var.expected_xc_tenant, exporté sous XCSH_API_TOKEN (ou la paire P12/PEM). N’exportez que l’identifiant, jamais une URL — voir ci-dessous.
  • Des identifiants Azure disposant des droits de créer un groupe de ressources, un VNet, un Route Server et des VM.
  • Un namespace F5 XC préexistant pour la couche applicative. Le déploiement le lit et ne le crée ni ne le détruit jamais, de sorte qu’un namespace contenant des démos sans lien ne peut jamais se retrouver dans la liste de destruction de cette stack.

Fournir les deux valeurs qui n’ont pas de valeur par défaut

Section intitulée « Fournir les deux valeurs qui n’ont pas de valeur par défaut »

Toutes les autres variables ont une valeur par défaut fonctionnelle, et chaque nom d’objet dérive de var.component. Deux sont délibérément laissées sans :

Fenêtre de terminal
cd terraform
cp terraform.tfvars.example terraform.tfvars
VariablePourquoi elle n’a pas de valeur par défaut
origin_ipToute valeur par défaut désigne une machine précise. Une valeur obsolète envoie le trafic d’un nouveau déploiement vers l’hôte de quelqu’un d’autre au lieu d’échouer.
lb_domainL’équilibreur de charge fait correspondre sur Host, c’est donc ce que chaque requête doit envoyer. Cela appartient à qui exploite le déploiement.

Les deux sont validées quant à leur format, si bien qu’une faute de frappe fait échouer le plan plutôt que la démo.

terraform.tfvars est ignoré par git, et doit le rester : il contient un identifiant d’abonnement et des valeurs propres à chaque ingénieur.

Le tenant est une configuration, pas ce que votre shell exporte

Section intitulée « Le tenant est une configuration, pas ce que votre shell exporte »

var.expected_xc_tenant nomme le tenant et constitue le seul endroit où il est nommé. providers.tf en dérive l’api_url du fournisseur xcsh, ce qui remplace délibérément tout XCSH_API_URL présent dans l’environnement, et une postcondition dans terraform/main.tf fait échouer le plan lorsque l’environnement nomme un tenant différent.

Lisez l’une ou l’autre moitié sans rien exécuter qui modifie l’état :

Fenêtre de terminal
terraform output -raw xc_tenant # what the deployment targets
terraform output -raw xc_env_tenant # what your shell claims — diagnostic only
f5-sales-demo
f5-sales-demo
  1. Initialiser. La configuration du backend n’est pas versionnée ; fournissez la vôtre.

    Fenêtre de terminal
    terraform init -backend-config=backend.hcl
  2. Premier apply. Il construit Azure, les sites CE et le jeton d’enregistrement, et démarre les CE.

    Fenêtre de terminal
    terraform apply
  3. Appliquer à nouveau une fois les CE enregistrés. Ce n’est pas optionnel, et la raison figure ci-dessous plutôt que d’être quelque chose que vous découvrez.

    Fenêtre de terminal
    terraform apply

Ensuite, rendez-vous sur prouver qu’il est sain avant de le montrer à qui que ce soit.

L’approbation d’enregistrement est automatisée, et l’apply reste en deux phases

Section intitulée « L’approbation d’enregistrement est automatisée, et l’apply reste en deux phases »

L’approbation d’enregistrement ne nécessite plus d’intervention humaine dans la console : la ressource xcsh_registration_approval la réalise, et le module de site détermine quel enregistrement approuver.

Cela ne fait pourtant pas du déploiement un unique apply sans intervention, et la raison mérite d’être comprise avant que vous n’observiez une première exécution et n’en concluiez qu’elle a échoué :

  • L’objet d’enregistrement d’un CE est nommé r-<uuid>. Il n’est jamais nommé d’après le site, donc rien ne peut prédire ce nom au moment du plan.
  • L’enregistrement n’existe qu’après le démarrage de la VM et l’enregistrement par vpm.
  • Ainsi, le premier apply ne planifie aucune approbation. Réappliquez une fois les CE enregistrés et les approbations sont créées.

terraform/main.tf documente cet ordonnancement en haut du fichier, ce qui constitue la version autoritative — la séquence de déploiement vit avec le code qui l’implémente.

Le SSH opérateur est une décision prise à la construction

Section intitulée « Le SSH opérateur est une décision prise à la construction »

Le déploiement écrit une clé opérateur sur le compte admin de l’appliance, dont le shell de connexion est la CLI du site. Elle est écrite par le write_files de cloud-init, qui s’exécute une seule fois au premier démarrage.

Fenêtre de terminal
terraform destroy

Le namespace applicatif survit : il est lu, jamais géré, donc destroy ne peut pas emporter avec lui un namespace contenant des démos sans lien. Tout le reste du groupe de ressources disparaît.