SUR CETTE PAGE
Exemple : configurer un protocole de passerelle intérieure sur une interface
Cet exemple de script de commit utilise une macro pour inclure automatiquement une interface au niveau de la [edit protocols]
hiérarchie et pour configurer l’IGP (Interior Gateway Protocol) approprié sur l’interface.
Exigences
Cet exemple utilise un périphérique exécutant Junos OS.
Présentation et script de validation
Lorsque vous ajoutez une nouvelle interface à un domaine OSPF ou IS-IS, vous devez configurer l’interface à plusieurs niveaux hiérarchiques, y compris [edit interfaces]
et [edit protocols]
. Cet exemple utilise un script de validation et une macro pour inclure automatiquement l’interface au niveau de la hiérarchie et pour configurer l’IGP approprié sur l’interface, OSPF ou IS-IS, en fonction du contenu d’une apply-macro
instruction que vous incluez dans la configuration de [edit protocols]
l’interface. Cette macro vous permet d’effectuer plus de tâches de configuration à un seul niveau hiérarchique.
Dans cet exemple, le processus de gestion Junos OS (mgd) inspecte la configuration à la recherche apply-macro
d’instructions. Pour chaque apply-macro ifclass
instruction incluse au niveau de la [edit interfaces interface-name unit logical-unit-number]
hiérarchie, le script vérifie si le role
paramètre est défini comme cpe
. Si c’est le cas, le script vérifie le igp
paramètre.
Si le paramètre est défini comme isis
, le script inclut le igp
nom d’interface approprié au niveau de la [edit protocols isis interface]
hiérarchie.
Si le paramètre est défini comme ospf
, le script inclut le igp
nom d’interface approprié au niveau de la [edit protocols ospf area address interface]
hiérarchie. Pour OSPF, le script référence le area
paramètre pour déterminer l’adresse de sous-réseau correcte de la zone.
L’exemple de script est présenté en syntaxe XSLT et SLAX :
Syntaxe XSLT
<?xml version="1.0" standalone="yes"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:junos="http://xml.juniper.net/junos/*/junos" xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm" xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0"> <xsl:import href="../import/junos.xsl"/> <xsl:template match="configuration"> <xsl:for-each select="interfaces/interface/unit/apply-macro[name = 'ifclass']"> <xsl:variable name="role" select="data[name='role']/value"/> <xsl:variable name="igp" select="data[name='igp']/value"/> <xsl:variable name="ifname"> <xsl:value-of select="../../name"/> <xsl:text>.</xsl:text> <xsl:value-of select="../name"/> </xsl:variable> <xsl:choose> <xsl:when test="$role = 'cpe'"> <change> <xsl:choose> <xsl:when test="$igp = 'isis'"> <protocols> <isis> <interface> <name><xsl:value-of select="$ifname"/></name> </interface> </isis> </protocols> </xsl:when> <xsl:when test="$igp = 'ospf'"> <protocols> <ospf> <area> <name> <xsl:value-of select="data[name='area']/value"/> </name> <interface> <name><xsl:value-of select="$ifname"/></name> </interface> </area> </ospf> </protocols> </xsl:when> </xsl:choose> </change> </xsl:when> </xsl:choose> </xsl:for-each> </xsl:template> </xsl:stylesheet>
Syntaxe SLAX
version 1.0; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; import "../import/junos.xsl"; match configuration { for-each (interfaces/interface/unit/apply-macro[name = 'ifclass']) { var $role = data[name='role']/value; var $igp = data[name='igp']/value; var $ifname = { expr ../../name; expr "."; expr ../name; } if ($role = 'cpe') { <change> { if ($igp = 'isis') { <protocols> { <isis> { <interface> { <name> $ifname; } } } } else if ($igp = 'ospf') { <protocols> { <ospf> { <area> { <name> data[name='area']/value; <interface> { <name> $ifname; } } } } } } } } }
Configuration
Procédure
Procédure étape par étape
Pour télécharger, activer et tester le script :
Copiez le script dans un fichier texte, nommez le fichier if-class.xsl ou if-class.slax selon le cas, puis copiez-le dans le répertoire /var/db/scripts/commit/ sur le périphérique.
Sélectionnez les strophes de configuration de test suivantes, puis appuyez sur Ctrl+c pour les copier dans le Presse-papiers.
Si vous utilisez la version SLAX du script, remplacez le nom de fichier au niveau de la
[edit system scripts commit file]
hiérarchie par if-class.slax.system { scripts { commit { file if-class.xsl; } } } interfaces { so-1/2/3 { unit 0 { apply-macro ifclass { area 10.4.0.0; igp ospf; role cpe; } } } t3-0/0/0 { unit 0 { apply-macro ifclass { igp isis; role cpe; } } } }
En mode configuration, exécutez la
load merge terminal
commande pour fusionner les strophes dans la configuration de votre appareil.[edit] user@host# load merge terminal [Type ^D at a new line to end input] ... Paste the contents of the clipboard here ...
À l’invite, collez le contenu du presse-papiers à l’aide de la souris et de l’icône Coller.
Appuyez sur Entrée.
Appuyez sur Ctrl+d.
Validez la configuration.
user@host# commit
Vérification
Vérification de la configuration
But
Vérifiez que le script se comporte comme prévu.
Action
Affichez la configuration pour vérifier que les modifications manuelles et les modifications générées par script sont présentes.
Lorsque vous exécutez la commande configuration mode, les modifications ajoutées par les exemples de strophes de configuration doivent être présentes dans la show interfaces
configuration.
[edit] user@host# show interfaces t3-0/0/0 { unit 0 { apply-macro ifclass { igp isis; role cpe; } } } so-1/2/3 { unit 0 { apply-macro ifclass { area 10.4.0.0; igp ospf; role cpe; } } }
Lorsque vous exécutez la commande configuration mode, les modifications générées par script doivent être présentes dans la show protocols
configuration.
[edit] user@host# show protocols isis { interface t3-0/0/0.0; } ospf { area 10.4.0.0 { interface so-1/2/3.0; } }