devis switch : spanning-tree vérifié, les six familles de syntaxe sont closes
`spanning-tree ?` en mode configuration tranche la dernière inconnue, en faveur de la forme émise : `mode` et `priority` s'acceptent au niveau global. La priorité n'a pas besoin d'être portée par une instance, même en MSTP — la réserve inverse, notée la veille, était infondée et le devis ne la porte plus. Une mise en garde fausse nuit autant qu'une syntaxe fausse. Ajouté : `spanning-tree` seul, qui garantit l'état actif. Sans lui, `mode` et `priority` sur un boîtier où le protocole aurait été désactivé configureraient un arbre qui ne tourne pas. Sans effet s'il est déjà actif — même logique déclarative que pour les trunks. Six familles vérifiées contre le matériel : VLAN, SVI, trunks, routes, ACL, spanning-tree. Deux ont révélé un défaut réel plutôt que de confirmer l'existant — les routes (CIDR) et les trunks, dont `add` ne retranchait rien. Preuves : 24 OK, 0 échec. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
1150a8e9c8
commit
ed5fb25b14
3 changed files with 33 additions and 14 deletions
16
CHANGELOG.md
16
CHANGELOG.md
|
|
@ -1,5 +1,21 @@
|
||||||
# CHANGELOG — Set-OPS
|
# CHANGELOG — Set-OPS
|
||||||
|
|
||||||
|
## 2026-08-02 (suite 17) — spanning-tree vérifié : les six familles sont closes
|
||||||
|
|
||||||
|
`spanning-tree ?` en mode configuration tranche la dernière inconnue, **en faveur de la forme
|
||||||
|
émise** : `mode` et `priority` s'acceptent au niveau **global**. La priorité n'a pas besoin
|
||||||
|
d'être portée par une instance, même en MSTP — la réserve inverse, notée la veille, était
|
||||||
|
infondée et le devis ne la porte plus. Une mise en garde fausse est aussi nuisible qu'une
|
||||||
|
syntaxe fausse.
|
||||||
|
|
||||||
|
Ajouté : `spanning-tree` seul, qui **garantit l'état actif**. Sans lui, `mode` et `priority`
|
||||||
|
sur un boîtier où le protocole aurait été désactivé configureraient un arbre qui ne tourne
|
||||||
|
pas. Sans effet s'il est déjà actif — même logique déclarative que pour les trunks.
|
||||||
|
|
||||||
|
**Les six familles de syntaxe sont vérifiées contre le matériel** : VLAN, SVI, trunks, routes,
|
||||||
|
ACL, spanning-tree. Deux ont révélé un défaut réel plutôt que de confirmer l'existant — les
|
||||||
|
routes (notation CIDR) et surtout les trunks, dont la forme `add` ne retranchait rien.
|
||||||
|
|
||||||
## 2026-08-02 (suite 16) — la syntaxe des ACL vérifiée sur le matériel
|
## 2026-08-02 (suite 16) — la syntaxe des ACL vérifiée sur le matériel
|
||||||
|
|
||||||
`show access-lists` confirme la dernière famille de syntaxe restée ouverte : une ACL générée
|
`show access-lists` confirme la dernière famille de syntaxe restée ouverte : une ACL générée
|
||||||
|
|
|
||||||
|
|
@ -309,9 +309,15 @@ ansible-vault edit instance/inventories/principal/group_vars/all/vault.yml
|
||||||
ses règles dans l'ordre (`ip access-list extended <NOM>`, masques normaux, `any`). Détail de
|
ses règles dans l'ordre (`ip access-list extended <NOM>`, masques normaux, `any`). Détail de
|
||||||
lecture : le boîtier **affiche** `any-destination` là où l'on saisit `any` — comparer un
|
lecture : le boîtier **affiche** `any-destination` là où l'on saisit `any` — comparer un
|
||||||
`show access-lists` au devis fait apparaître une différence qui n'en est pas une.
|
`show access-lists` au devis fait apparaître une différence qui n'en est pas une.
|
||||||
- **Reste non vérifiée** : la forme d'**entrée** des commandes de spanning-tree. `show` en
|
- ~~La syntaxe du spanning-tree~~ — **réglé le 2026-08-02** par `spanning-tree ?` en mode
|
||||||
donne l'état, pas la syntaxe. En MSTP, la priorité se règle en général par instance, ce qui
|
configuration : `spanning-tree` seul active le protocole, `mode` et `priority` s'acceptent au
|
||||||
n'est pas la forme émise — le devis le signale lui-même à cet endroit.
|
niveau **global**. La priorité n'a donc pas besoin d'être portée par une instance, même en
|
||||||
|
MSTP — la réserve inverse, notée la veille, était infondée.
|
||||||
|
|
||||||
|
**Les six familles de syntaxe sont désormais vérifiées contre le matériel** : VLAN, SVI,
|
||||||
|
trunks, routes, ACL, spanning-tree. Deux d'entre elles ont révélé un défaut réel plutôt que de
|
||||||
|
confirmer ce qui était écrit — les routes (notation CIDR) et surtout les trunks, dont la forme
|
||||||
|
`add` ne retranchait rien.
|
||||||
- **Les ports physiques restent à nommer** — `<PORT-VERS-PROXMOX>`, `<PORT-VERS-FRONTIERE>`
|
- **Les ports physiques restent à nommer** — `<PORT-VERS-PROXMOX>`, `<PORT-VERS-FRONTIERE>`
|
||||||
et `<PORT-TRUNK>` ; rien dans le modèle ne peut les deviner.
|
et `<PORT-TRUNK>` ; rien dans le modèle ne peut les deviner.
|
||||||
- ~~**La sortie générale** n'est pas déclarée~~ — **réglé le 2026-08-02.** Elle est
|
- ~~**La sortie générale** n'est pas déclarée~~ — **réglé le 2026-08-02.** Elle est
|
||||||
|
|
|
||||||
|
|
@ -176,21 +176,18 @@ def _stp_lignes(dialecte: str, mode: str, priorite: int) -> list[str]:
|
||||||
Cisco IOS parle `rapid-pvst` (RSTP par VLAN) ; les plateformes generiques parlent
|
Cisco IOS parle `rapid-pvst` (RSTP par VLAN) ; les plateformes generiques parlent
|
||||||
`rstp`/`mstp` et une priorite globale.
|
`rstp`/`mstp` et une priorite globale.
|
||||||
|
|
||||||
FORME NON VERIFIEE : `show spanning-tree` donne l'ETAT du protocole, pas la syntaxe
|
Formes VERIFIEES sur Binardat (`spanning-tree ?` en mode configuration, 2026-08-02) :
|
||||||
d'entree. En MSTP notamment, la priorite se regle souvent PAR INSTANCE — la forme
|
`spanning-tree` seul active le protocole, `mode` et `priority` s'acceptent au niveau
|
||||||
globale ci-dessous pourrait etre refusee. A confronter a `spanning-tree ?` en mode
|
GLOBAL — la priorite n'a pas besoin d'etre portee par une instance, meme en MSTP.
|
||||||
configuration.
|
|
||||||
"""
|
"""
|
||||||
if dialecte == "cisco":
|
if dialecte == "cisco":
|
||||||
return [f"spanning-tree mode {'rapid-pvst' if mode == 'rstp' else mode}",
|
return [f"spanning-tree mode {'rapid-pvst' if mode == 'rstp' else mode}",
|
||||||
f"spanning-tree vlan 1-4094 priority {priorite}"]
|
f"spanning-tree vlan 1-4094 priority {priorite}"]
|
||||||
lignes = [f"spanning-tree mode {mode}", f"spanning-tree priority {priorite}"]
|
# `spanning-tree` seul garantit l'etat actif : sur un boitier ou il aurait ete
|
||||||
if mode == "mstp":
|
# desactive, les deux lignes suivantes ne suffiraient pas. Sans effet s'il l'est deja.
|
||||||
lignes.append(f"! ^ en MSTP, la priorite est souvent portee par une INSTANCE "
|
return ["spanning-tree",
|
||||||
f"(ex. `spanning-tree mst 0 priority {priorite}`).")
|
f"spanning-tree mode {mode}",
|
||||||
lignes.append("! Forme a confirmer par `spanning-tree ?` ; celle-ci reprend la "
|
f"spanning-tree priority {priorite}"]
|
||||||
"syntaxe globale.")
|
|
||||||
return lignes
|
|
||||||
|
|
||||||
|
|
||||||
def section_stp(underlay: dict | None, dialecte: str) -> list[str]:
|
def section_stp(underlay: dict | None, dialecte: str) -> list[str]:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue