Dans mes précédents articles j’ai expliqué comment créer des templates simples et les déployer sur des équipements. J’ai également détaillé comment Catalyst Center vérifiait automatiquement la conformité des configurations en s’assurant que personne ne modifiait une configuration ainsi appliquée. Ici je vais donner un peu plus de détails sur la gestion des variables dans les templates.
Dans mon premier exemple, j’appliquais une description simple sur une interface fixe. Ici je vais variabiliser à la fois le nom de l’interface, la description et un numéro de VLAN qui sera lui aussi appliqué.
La syntaxe va dépendre de votre langage préféré. Catalyst Center supporte à la fois Velocity et Jinja. Ce dernier, plus moderne, est préféré aujourd’hui aussi je vais poursuivre avec lui. Dans un template Jinja, les variables doivent être déclarées entre deux paires d’accolades. J’ai donc créé simplement le template ci-dessous en créant les variables requises.
Une fois mon template créé, je peux définir chaque variable dans l’onglet Variables du template Hub. Ce dernier a détecté chaque variable du template et propose de les définir dans le détail.
Je vais commencer par la description:
- Je confirme tout d’abord qu’il s’agit bien d’une variable. Imaginez que vous souhaitiez mettre des accolades dans votre description, il faudrait dans ce cas clarifier qu’il ne s’agit pas d’une variable malgré la présence de ces caractères spéciaux.
- J’indique que c’est une variable qui devra être saisie par l’administrateur (User Defined). On verra tout à l’heure un autre type de variables.
- Je choisis donc l’option “Text Field” et “String” puisque toute chaîne de caractère est admise.
- Je donne à ma variable un nom présentable “Interface Description” et je peux ajouter une petite note explicative pour l’opérateur.
Je poursuis avec le numéro de VLAN. Plutôt que demander à l’administrateur de saisir un numéro de VLAN, je vais créer une liste qui permettra de choisir dans une liste déroulante avec des noms explicites et une valeur par défaut. Comme je ne configure qu’un seul VLAN, je choisis l’option “Single Select” pour ne permettre de ne sélectionner qu’une seule valeur. A contrario, pour un trunk vous pourriez utiliser ici le mode “Multi Select” pour choisir tous les VLANs à autoriser.
Maintenant on va s’attaquer au nom d’interface. J’aurais pu laisser le champ libre à l’instar de la description mais je vais à la place m’assurer qu’on va choisir parmi une interface existante sur l’équipement. Je vais donc opter pour une variable de type “Bound to Source”. Cela veut dire qu’on ira chercher la valeur parmi un ensemble connu de Catalyst Center. Dans l’exemple ci-dessous ma source sera les interfaces de l’équipement à provisioner et dont le nom contient “GigabitEthernet”.
Il existe de très nombreux critères de choix sur Catalyst Center au niveau des sources utilisables (inventaire, paramètres de Catalyst Center..) Le mieux est de fouiller un peu et vous arriverez certainement à trouver votre bonheur. N’hésitez pas à me remonter vos besoin en commentaire.
Maintenant que mes variables sont déclarées, je suis prêt pour la production! Mais attendez une seconde, est-ce que ça ne vaudrait pas le coup de faire un petit test avant de déployer tout cela? C’est tout l’objet de l’onglet “Simulation” qui me permet à tout moment de valider mon template. Je donne un nom à ma simulation et renseigne les diverses variables. On notera le menu déroulant simple pour le choix du VLAN comme défini précédemment.
Un autre menu déroulant me permet de sélectionner une interface parmi celles qui sont réellement présentes sur l’équipement.
Une fois tous les paramètres renseignés, je peux lancer ma simulation. Catalyst Center me donne la CLI résultante.
Nous noterons un dernier onglet “Provision Conflict” qui va détecter les commandes qui pourraient interférer avec des paramètres appliqués par Catalyst Center. Si par exemple vous souhaitiez configurer un serveur NTP via template et que ce dernier est déjà configuré dans vos Network Settings, Catalyst Center viendrait vous avertir au préalable.
Une fois satisfait du résultat des tests et de l’absence de conflits, je peux sans risque faire un “commit” du template et le référencer dans un Network Profile pour qu’il soit utilisé en production. Pour ces étapes vous relirez cet article précédent. Mon nouveau template étant associé à tous les Catalyst 9300 ayant le tag “reseauxblog”, il me suffit de faire un provision de l’équipement pour que celui-ci puisse être configuré.
C’est lors de la deuxième étape de provisioning qu’il est possible de renseigner les variables déclarées dans le template. Je peux tout simplement saisir à la main les informations comme lors de la simulation.
Mais laisser l’opérateur saisir ces informations peut aussi être une source d’erreur et une énorme perte de temps quand on doit configurer un grand nombre d’équipements et que le nombre de variables augmente. Il est possible de définir les valeurs des variables dans un fichier CSV.
Vous pouvez tout d’abord exporter le template CSV pour avoir la trame de départ. Vous pouvez modifier ce fichier ainsi récupéré puis l’importer dans Catalyst Center. Voici le fichier ainsi créé pour mon test:
"Project Name:Template Name","Device Name","interface_description","vlan_id" "RESEAUXBLOG:Use-of-variables","ST-C9300-1.enfr.cisco.com","Test Blog","11" "RESEAUXBLOG:Use-of-variables","ST-C9300-2.enfr.cisco.com","Test Blog","12"
On notera que les variables “Bound to Source” ne peuvent pas être saisies ici (rappelez vous par définition elles ne sont pas “User defined”). On peut évidemment ajouter plusieurs lignes dans le fichier (une par équipement). Catalyst Center ira chercher les bonnes variables selon les équipements à configurer. En fonction de vos besoins vous pouvez créer ce fichier à partir d’un simple script et générer sans effort vos configurations pour des centaines d’équipements.
Une fois mon fichier créé, je peux l’importer:
Mes variables sont remplies automatiquement selon les informations contenues dans le fichier créé.
Je n’ai plus qu’à choisir l’interface à configurer dans la liste (TwoGigabitEthernet1/0/20). Pour mon premier déploiement je préfère avoir ceinture et bretelles aussi je lance un “configuration preview” pour voir le résultat avant de lancer l’action de configuration.
Après validation du résultat je peux directement déployer la configuration sur l’équipement en un click. Je vous épargne cette étape.
Vous avez pu voir dans cet article à quel point il était facile de créer des templates avec des variables pour appliquer tout type de configuration. Mais peut-être souhaiteriez-vous configurer plusieurs interfaces d’un seul coup ou aller encore plus loin dans l’automatisation? Ce sera l’objet de mon prochain article dans lequel je vous montrerai comment il peut être très simple de faire ce genre de configurations avec un peu de programmation. N’oubliez pas de suivre mon Webinar le 14 mai prochain à 15H CEST sur les templates Catalyst Center. Je vous le garantis, vous allez tomber amoureux 🙂
Pour les impatients qui ne peuvent pas attendre la suite, n’hésitez pas à lire le user guide sur les CLI templates.