Ejemplo: configurar grupos administrativos para LSP
A los grupos administrativos, también conocidos como colorear vínculos o clases de recursos, se les asignan manualmente atributos que describen el color de los vínculos. Los enlaces con el mismo color conceptualmente pertenecen a la misma clase. Puede utilizar grupos administrativos para implementar diversas configuraciones de rutas de conmutación de etiquetas (LSP) basadas en políticas.
En este ejemplo de script commit se buscan apply-macro
instrucciones con el parámetro incluido en el color
nivel de [edit protocols mpls]
jerarquía. Para cada apply-macro
instrucción, la secuencia de comandos utiliza los datos proporcionados para generar un cambio transitorio y expandir la macro en un grupo administrativo estándar de Junos OS para LSP.
Requisitos
En este ejemplo se utiliza un dispositivo que ejecuta Junos OS.
Descripción general y script de confirmación
En este ejemplo, el proceso de administración de Junos OS (mgd) inspecciona la configuración en busca apply-macro
de instrucciones. Para cada apply-macro
instrucción con el parámetro incluido en el color
nivel de [edit protocols mpls]
jerarquía, la secuencia de comandos genera un cambio transitorio, utilizando los datos proporcionados en la instrucción para expandir la apply-macro
macro en un grupo administrativo estándar de Junos OS para LSP.
Para que este ejemplo funcione, se debe incluir una apply-macro
instrucción en el [edit protocols mpls]
nivel de jerarquía con un conjunto de direcciones, un parámetro y un color
group-value
parámetro. El script commit convierte cada dirección en una configuración LSP y convierte el color
parámetro en un grupo administrativo.
Para obtener una explicación línea por línea de este script, vea Ejemplo: Creación de sintaxis de configuración personalizada con macros de script de confirmación.
El script de ejemplo se muestra en las sintaxis XSLT y SLAX:
Sintaxis 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:variable name="mpls" select="protocols/mpls"/> <xsl:for-each select="$mpls/apply-macro[data/name = 'color']"> <xsl:variable name="color" select="data[name = 'color']/value"/> <xsl:for-each select="$mpls/apply-macro[data/name = 'group-value']"> <xsl:variable name="group-value" select="data[name = 'group-value']/value"/> <transient-change> <protocols> <mpls> <admin-groups> <name> <xsl:value-of select="$color"/> </name> <group-value> <xsl:value-of select="$group-value"/> </group-value> </admin-groups> <xsl:for-each select="data[not(value)]/name"> <label-switched-path> <name> <xsl:value-of select="concat($color, '-lsp-', .)"/> </name> <to><xsl:value-of select="."/></to> <admin-group> <include-any> <xsl:value-of select="$color"/> </include-any> </admin-group> </label-switched-path> </xsl:for-each> </mpls> </protocols> </transient-change> </xsl:for-each> </xsl:for-each> </xsl:template> </xsl:stylesheet>
Sintaxis de 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 { var $mpls = protocols/mpls; for-each ($mpls/apply-macro[data/name = 'color']) { var $color = data[name = 'color']/value; for-each ($mpls/apply-macro[data/name = 'group-value']) { var $group-value = data[name = 'group-value']/value; <transient-change> { <protocols> { <mpls> { <admin-groups> { <name> $color; <group-value> $group-value; } for-each (data[not(value)]/name) { <label-switched-path> { <name> $color _ '-lsp-' _ .; <to> .; <admin-group> { <include-any> $color; } } } } } } } } }
Configuración
Procedimiento
Procedimiento paso a paso
Para descargar, habilitar y probar el script:
Copie el script en un archivo de texto, asigne al archivo el nombre lsp-admin.xsl o lsp-admin.slax según corresponda y cópielo en el directorio /var/db/scripts/commit/ del dispositivo.
Seleccione las siguientes estrofas de configuración de prueba y presione Ctrl + c para copiarlas en el portapapeles.
Si está utilizando la versión SLAX del script, cambie el nombre de archivo en el
[edit system scripts commit file]
nivel de jerarquía a lsp-admin.slax.system { scripts { commit { allow-transients; file lsp-admin.xsl; } } } protocols { mpls { apply-macro blue-type-lsp { 10.1.1.1; 10.2.2.2; 10.3.3.3; 10.4.4.4; color blue; group-value 0; } } }
En el modo de configuración, ejecute el
load merge terminal
comando para combinar las estrofas en la configuración del dispositivo.[edit] user@host# load merge terminal [Type ^D at a new line to end input] ... Paste the contents of the clipboard here ...
En el indicador, pegue el contenido del portapapeles con el mouse y el icono de pegar.
Presione Entrar.
Presione Ctrl+d.
Confirme la configuración.
user@host# commit
Verificación
Verificación de la configuración
Propósito
Compruebe que el script se comporta como se esperaba.
Acción
Emita el comando de modo de configuración y revise el show protocols mpls | display commit-scripts
resultado. Agregar la | display commit-scripts
opción le permite ver las instrucciones de configuración generadas por cambios transitorios.
Con cambios generados por scripts
Al emitir el comando de modo de configuración, aparece el show protocols mpls | display commit-scripts
siguiente resultado:
[edit] user@host# show protocols mpls | display commit-scripts apply-macro blue-type-lsp { 10.1.1.1; 10.2.2.2; 10.3.3.3; 10.4.4.4; color blue; group-value 0; } admin-groups { blue 0; } label-switched-path blue-lsp-10.1.1.1 { to 10.1.1.1; admin-group include-any blue; } label-switched-path blue-lsp-10.2.2.2 { to 10.2.2.2; admin-group include-any blue; } label-switched-path blue-lsp-10.3.3.3 { to 10.3.3.3; admin-group include-any blue; } label-switched-path blue-lsp-10.4.4.4 { to 10.4.4.4; admin-group include-any blue; }
Sin cambios generados por scripts
El resultado del comando de modo de show protocols mpls | display commit-scripts no-transients
configuración excluye las label-switched-path
instrucciones:
[edit] user@host# show protocols mpls | display commit-scripts no-transients apply-macro blue-type-lsp { 10.1.1.1; 10.2.2.2; 10.3.3.3; 10.4.4.4; color blue; group-value 0; }
Cuando emite el comando sin el comando canalizadodisplay commit-scripts no-transients
, verá el show protocols mpls
mismo resultado porque este script no genera ningún cambio persistente:
[edit] user@host# show protocols mpls apply-macro blue-type-lsp { 10.1.1.1; 10.2.2.2; 10.3.3.3; 10.4.4.4; color blue; group-value 0; }