- Accueil
- Réseau multi-cloud
- Customer Edge diagnostics
- Versions logicielles et reconstructions
Versions logicielles et reconstructions
Deux variables Terraform définissent le logiciel d’un Customer Edge : ce_os_version pour le
système d’exploitation et ce_sw_version pour la version F5 Distributed Cloud. Ces deux variables
se comportent d’une façon opposée à ce que leur lecture évidente laisse supposer — un champ vide
vous donne la version la plus récente plutôt qu’aucune, et une version qui s’installe sur un nœud
peut échouer sur un nœud identique disposant d’un disque plus petit.
Ce que font les champs de version, en deux phases
Section intitulée « Ce que font les champs de version, en deux phases »Distinguer les phases est tout l’enjeu. Confondues, le comportement semble contradictoire.
Au premier démarrage, un nœud installe ce que ce_sw_version désigne.
terraform/modules/ce-node déploie l’image marketplace avec version = "latest", de sorte
que la version avec laquelle un nœud arrive est celle que cette image embarque à ce moment-là
— et cela évolue dans le temps. ce_sw_version choisit la destination, et non si quoi que
ce soit se produit ; laisser ce champ vide signifie que le serveur choisit plutôt que le nœud
reste en l’état. Il en va de même pour ce_os_version.
Ne supposez pas que cette évolution se fait nécessairement vers une version plus récente.
Observé le 2026-07-28, l’image embarquait une version estampillée 20260703-e2c462a — plus
récente que le crt-20250613-3382 de cette flotte et plus récente que le
crt-20260201-0179 que le tenant annonçait. Nommer une version plus ancienne que celle
embarquée par l’image demande au nœud de revenir en arrière, ce qui est courant : cette flotte
a été créée ainsi et fonctionne.
Laisser un champ de version vide est le choix le plus risqué, pas le choix neutre. À la
création, le serveur ne laisse pas un champ vide tel quel — il le remplit avec la version
la plus récente annoncée et l’installe. Un site créé avec les deux champs non renseignés
est revenu épinglé à crt-20260201-0179 et à l’OS 9.2026.14, les deux versions que le
tenant annonçait, puis l’installation a échoué. Observé le 2026-07-29.
Cela a deux conséquences. Vide signifie « donnez-moi la plus récente », donc un déploiement non épinglé est celui qui a le plus de chances de rencontrer la limite de disque décrite ci-dessous. Et vous ne pouvez pas isoler un champ en laissant l’autre vide, car le serveur le remplit — renseignez les deux délibérément, ou acceptez la plus récente de chacun.
Après le premier démarrage, rien ne se met à niveau automatiquement. F5 Distributed Cloud annonce une version plus récente et attend. C’est là que s’applique « le nœud reste là où il a atterri » — après la création, pas pendant celle-ci.
Les deux phases sont visibles sur l’objet site. Observé le 2026-07-28, cette flotte :
volterra_software_status.available_version crt-20260201-0179operating_system_status.available_version 9.2026.14tandis que les nœuds exécutent crt-20250613-3382 et l’OS 9.2024.6. Une version plus
récente est disponible et n’a pas été adoptée — c’est l’état stable, non une mise à niveau
bloquée.
Terraform ne peut pas modifier une version. L’API le peut
Section intitulée « Terraform ne peut pas modifier une version. L’API le peut »Ce sont deux faits distincts, et les confondre conduit à un plan erroné.
Terraform ne peut pas. ce_os_version et ce_sw_version sont effectivement des
paramètres valables uniquement à la création. Modifiez l’un ou l’autre et appliquez, et l’API
rejette la mise à jour avec [BAD_REQUEST] Invalid request parameters. Observé le 2026-07-29
sur des sites jetables, dans les trois directions — épinglage vers l’avant vers une version
plus récente, épinglage vers l’arrière vers une version plus ancienne, et désépinglage
en effaçant les deux champs. L’avancement n’est pas un cas particulier.
L’API le peut. F5 Distributed Cloud expose une action de mise à niveau dédiée par site, qui démarre la modification en place — sans reconstruction et sans intervention de Terraform :
# version logiciellecurl -X POST -H "Authorization: APIToken $TOKEN" -H 'Content-Type: application/json' \ --data '{"version": "<software-version>"}' \ "$API_URL/api/config/namespaces/system/sites/<site-name>/upgrade_sw"
# système d'exploitationcurl -X POST -H "Authorization: APIToken $TOKEN" -H 'Content-Type: application/json' \ --data '{"version": "<os-version>"}' \ "$API_URL/api/config/namespaces/system/sites/<site-name>/upgrade_os"Observé le 2026-07-29 : l’appel logiciel a renvoyé 200, le site est passé à UPGRADING
avec deployment_state.phase UPGRADE_IN_PROGRESS, et la version demandée dans l’objet site
a été modifiée pour correspondre à celle soumise. Omettre le champ renvoie 400 avec
version empty in the request, ce qui a permis de confirmer le nom du champ.
Prévoyez des heures, pas des minutes, et ne paniquez pas en cas d’échec. Sur un nœud avec
disque par défaut, la mise à niveau vers crt-20260201-0179 a duré environ une heure, a
signalé UPGRADE_FAILED avec result Failed à mi-parcours, puis s’est terminée
avec succès sur la nouvelle version. La plateforme réessaie.
Cela a une conséquence directe pour quiconque surveille une mise à niveau ou en écrit le
script : un résultat Failed est un état à attendre, pas un verdict. Le traiter comme définitif
dès le premier signalement indique un échec pour une mise à niveau qui va réussir.
Notez le groupe dans ce chemin : ces endpoints se trouvent sous config, pas operate. Les
mêmes chemins sous operate renvoient 404 API Group could not be determined, qui est un
message de routage et non l’affirmation qu’il n’existe pas de mise à niveau — une distinction
qui a conduit ce projet à une conclusion erronée.
Si vous effectuez une reconstruction plutôt qu’une mise à niveau, toutes les conséquences du remplacement d’un CE s’appliquent.
Une version épinglée peut échouer à s’installer, et le site est alors bloqué
Section intitulée « Une version épinglée peut échouer à s’installer, et le site est alors bloqué »Accepter l’épingle n’est pas la même chose que l’installer. Sur un Customer Edge Azure Secure
Mesh v2 à nœud unique fraîchement créé, épinglé à crt-20260201-0179, l’objet site a
immédiatement signalé la version épinglée — puis l’installation a échoué :
site_state PROVISIONINGphase UPGRADE_FAILEDresult Failedlast_installed (empty)message stage: 10, app: voucher obj: voucher objKind: DaemonSet failed ... required replicas: 1, current replicas: 0Observé le 2026-07-28, et reproduit deux fois le 2026-07-29. L’épingle du système
d’exploitation s’est installée normalement lors du même déploiement (9.2024.6 vers
9.2026.14, UPGRADE_COMPLETED) ; seule l’installation logicielle a échoué. Le site n’a
jamais atteint ONLINE et last_installed_version est resté vide, donc rien n’est revenu à une
version fonctionnelle — il n’y avait pas d’installation réussie antérieure vers laquelle
effectuer un retour arrière.
Un échec à la création n’est pas comme un échec lors d’une mise à niveau. Les deux se comportent différemment et la différence est importante quand vous décidez d’intervenir :
| à la création | lors d’une mise à niveau via l’API | |
|---|---|---|
| réessaie-t-il jusqu’au succès ? | non — resté Failed pendant plus de 20 minutes, deux fois | oui — a récupéré et s’est terminé |
| où finit le nœud ? | PROVISIONING, rien d’installé | ONLINE sur une version fonctionnelle |
| est-il prudent de le laisser ? | non, il est bloqué | oui, il récupère ou conserve l’ancienne version |
Donc un échec à la création nécessite une reconstruction avec un disque plus grand, tandis
qu’une mise à niveau signalant Failed devrait être laissée un moment avant d’en tirer des
conclusions.
La cause est le disque, pas la version. Une matrice logiciel × OS × taille de disque, un
site Azure Secure Mesh v2 à nœud unique jetable par combinaison, tous issus de la même image
marketplace, permet de l’isoler. Observé le 2026-07-29 :
| logiciel | OS 9.2024.6 (ce que l’image embarque) | OS 9.2026.14 |
|---|---|---|
crt-20250613-3382 | s’installe | s’installe |
crt-20260201-0179 | s’installe | échoue, sur le disque par défaut uniquement |
Aucune version n’échoue seule. Seule la paire échoue, et uniquement sur le disque par défaut de l’image — la même paire s’installe sur 33 Go et sur toutes les tailles plus grandes testées. La version plus récente n’est donc pas non prise en charge ici, pas plus que le système d’exploitation plus récent ; ensemble, ils nécessitent légèrement plus de disque qu’un nœud par défaut.
terraform/modules/ce-node ne définit pas disk_size_gb, donc chaque Customer Edge obtient
le disque par défaut de l’image — la seule taille sur laquelle cette paire échoue. Pour
l’exécuter, agrandissez le disque.
La marge est la partie surprenante, et c’est pourquoi cela a longtemps ressemblé à un problème
de version. Le disque par défaut est de 31 Gio (la commande health indique size_gb: 31,
et /var fait 29 Go avec 3,5 Go libres sur un nœud en état d’échec). 33 Go s’installe
proprement. Donc le disque par défaut est insuffisant d’environ deux gigaoctets, pas d’une
large marge.
Testez un changement de version sur un site jetable avant de l’appliquer à une flotte dans tous
les cas : une flotte qui échoue de cette façon est bloquée en PROVISIONING avec la
reconstruction comme seule issue.
Quelle version la documentation décrit
Section intitulée « Quelle version la documentation décrit »La référence des commandes sur ce site décrit crt-20250613-3382, la version que cette
flotte exécute. Les commandes qui n’existent que sur des versions plus récentes sont enregistrées
dans sitecli/command-classification.json sous not_on_this_build et documentées séparément,
dans commandes sur les versions plus récentes, de sorte que
rien de ce qui s’y trouve n’apparaît comme exécutable ici. Voir également
commandes embarquées.