EN ESTA PÁGINA
Ejemplo: Configurar la automatización de plantillas de servicio
En este ejemplo, se muestra cómo usar la automatización de plantillas de servicio para aprovisionar servicios en plataformas similares que ejecutan Junos OS.
Requisitos
Dos dispositivos serie MX que ejecutan Junos OS versión 12.3 o posterior.
Visión general
En este ejemplo, se utiliza la automatización de plantillas de servicio para aprovisionar servicios en un enrutador serie MX. Para utilizar la secuencia de comandos service-builder.slax de automatización de plantilla de servicio, primero debe copiar la secuencia de comandos en el directorio /var/db/scripts/op o /config/scripts/op y habilitar la secuencia de comandos en el dispositivo.
En el siguiente proceso se describe cómo usar la automatización de plantillas de servicio para aprovisionar servicios:
Cree una definición de plantilla de servicio.
Ejecute el script service-builder.slax y defina parámetros de instancia específicos del servicio.
Generar la interfaz de servicio.
Habilite la interfaz de servicio en cada dispositivo en el que se requiere el servicio.
Aprovisione sistemas invocando la interfaz de servicio mediante NETCONF y suministrando los valores de parámetros de servicio.
En este ejemplo, se crea una nueva interfaz de servicio VPN en un dispositivo de la serie MX que ejecuta Junos OS versión 12.3 y se aprovisiona el servicio en un segundo dispositivo de la serie MX que ejecuta Junos OS versión 12.3. Configure definiciones de plantilla de servicio en el [edit groups] nivel de jerarquía. En este ejemplo, el nombre del servicio es vpn-servicey el nombre del grupo de plantillas es vpn-service-template-group. El load merge terminal comando de modo de configuración carga las jerarquías de configuración de la plantilla de servicio en la configuración candidata, que luego se confirma.
Una vez que cree la plantilla de servicio inicial, ejecute el script service-builder.slax . La secuencia de comandos solicita el nombre del servicio y el nombre del grupo de plantillas y, a continuación, lee la configuración de la plantilla de servicio desde la configuración confirmada.
La interfaz de script service-builder.slax consta de dos menús: Main Menu y Hierarchies Menu. Dentro de , Main Menupuede revisar las variables definidas en la configuración de la plantilla de servicio, o puede crear o habilitar la API de servicio. La opción de Build Service API menú muestra el Hierarchies Menu, que le guiará por la parametrización de las variables. El valor predeterminado es parametrizar cada variable, o puede elegir parametrizar las variables seleccionadas. Si debe salir de la secuencia de comandos service-builder.slax mientras crea la API de servicio, debe terminar de configurar todos los parámetros de la jerarquía actual para guardar esa configuración de jerarquía cuando salga con la Quit opción. A continuación, puede terminar de configurar cualquier jerarquía incompleta en un momento posterior. En este ejemplo, se parametrizan dos variables: el nombre de interfaz y la descripción de la interfaz. Después de especificar los parámetros, la secuencia de comandos del creador de servicios genera la secuencia de comandos del servicio.
La opción de Enable Service API menú habilita la secuencia de comandos de servicio en el dispositivo local. Para habilitar la secuencia de comandos de servicio en el segundo dispositivo de la serie MX, la secuencia de comandos de servicio generada se copia en el directorio /var/db/scripts/op del segundo dispositivo y la secuencia de comandos está habilitada en la configuración. Si la load-scripts-from-flash instrucción está configurada, la secuencia de comandos debe copiarse en el directorio correspondiente de la unidad flash.
NETCONF se utiliza para aprovisionar el servicio en el dispositivo remoto de la serie MX. La acción de llamada a procedimiento remoto NETCONF (RPC) depende de si el servicio es un servicio nuevo o un servicio existente. Las acciones admitidas incluyen create, update, y delete. En este ejemplo, se crea un nuevo servicio. Si el servicio dado ya está aprovisionado en el dispositivo y está actualizando o eliminando los parámetros del servicio, puede modificar la RPC para realizar estas acciones.
Configuración
- Almacenamiento y habilitación del script del creador de servicios
- Configuración de la definición de plantilla de servicio
- Configuración y generación de la interfaz de servicio
- Verificar la interfaz de servicio
- Habilitación de la interfaz de servicio
- Aprovisionamiento del servicio mediante NETCONF
- Actualización o eliminación de servicios mediante NETCONF
Almacenamiento y habilitación del script del creador de servicios
Procedimiento paso a paso
La instalación de Junos OS incluye el script service-builder.slax , que se almacena en el directorio /usr/libexec/scripts/op/ del dispositivo. Para usar la secuencia de comandos service-builder.slax , primero debe copiarla en el directorio de scripts operativos y habilitarla en la configuración. Solo los usuarios de la clase de inicio de sesión de superusuario junos OS pueden acceder y editar archivos en estos directorios.
Copie el script service-builder.slax en el directorio /var/db/scripts/op del disco duro o en el directorio /config/scripts/op de la unidad flash.
user@host> file copy /usr/libexec/scripts/op/service-builder.slax /var/db/scripts/op
Compruebe que la secuencia de comandos se encuentra en el directorio correcto mediante el comando del
file listmodo operativo.user@host> file list /var/db/scripts/op /var/db/scripts/op: service-builder.slax*
Habilite la secuencia de comandos en la configuración.
[edit] user@host# set system scripts op file service-builder.slax
Si almacena scripts y los carga desde flash, configure la
load-scripts-from-flashinstrucción si aún no está configurada.[edit] user@host# set system scripts load-scripts-from-flash
Confirme la configuración.
[edit] user@host# commit
Configuración de la definición de plantilla de servicio
Procedimiento paso a paso
Para crear una nueva plantilla de servicio en un dispositivo que ejecute Junos OS:
Seleccione un nombre de servicio.
En este ejemplo se usa
vpn-service.En el modo de configuración, cree un nuevo grupo que contendrá las jerarquías del servicio real que se va a aprovisionar.
[edit] user@host# set groups vpn-service-template-group
Configure las jerarquías para el servicio.
En este ejemplo, las jerarquías de configuración pre-construidas se cargan en la configuración candidata mediante el
load merge terminalcomando.[edit] user@host# load merge terminal groups { vpn-service-template-group { interfaces { ge-2/2/6 { description "connected to customer3-site-1"; unit 0 { family bridge { interface-mode access; vlan-id 300; } } } } protocols { rstp { interface ge-2/3/0; } mvrp { interface ge-2/3/0; } } bridge-domains { bd { vlan-id-list 100; } } } } [Ctrl+D]Compruebe que la sintaxis de configuración sea correcta.
[edit] user@host# commit check configuration check succeeds
Confirme la configuración.
[edit] user@host# commit
Configuración y generación de la interfaz de servicio
Procedimiento paso a paso
Para configurar y generar la interfaz de servicio:
En el modo operativo, ejecute el script service-builder.slax , que inicia una sesión interactiva de Service Builder.
user@host> op service-builder Welcome to Service Builder Script: (v1.0) - Enter the service name :
Escriba el nombre de servicio que se definió en Configurar la definición de plantilla de servicio.
Enter the service name : vpn-service
Escriba el nombre del grupo en el que se configuran las jerarquías de servicio.
En este ejemplo, se utiliza el nombre
vpn-service-template-groupdel grupo . La secuencia de comandos lee la configuración especificada en lavpn-service-template-groupjerarquía y, a continuación, muestra el menú principal.Enter the group name : vpn-service-template-group .. reading [edit group vpn-service-template-group] .. [Op Script Builder - Main Menu] ----------------------------------- 1. Show Variables 2. Build Service API 3. Enable Service API Q. Quit ----------------------------------- Enter Selection:>
(Opcional) Para revisar las variables de plantilla de servicio que puede parametrizar, seleccione la
Show Variablesopción.La secuencia de comandos traduce la definición de plantilla en la configuración del candidato en una lista de parámetros general agrupada por nivel jerárquico.
[Op Script Builder - Main Menu] ----------------------------------- 1. Show Variables 2. Build Service API 3. Enable Service API Q. Quit ----------------------------------- Enter Selection:> 1 List of variables under each hierarchy to parameterize: - 1. [ edit groups vpn-service-template-group interfaces ] 1.1. interface/name 1.2. interface/description 1.3. interface/unit/name 1.4. interface/unit/family/bridge/interface-mode 1.5. interface/unit/family/bridge/vlan-id - 2. [ edit groups vpn-service-template-group protocols ] 2.1. rstp/interface/name 2.2. mvrp/interface/name - 3. [ edit groups vpn-service-template-group bridge-domains ] 3.1. domain/name 3.2. domain/vlan-id-list -
Para crear la API de servicio, seleccione la
Build Service APIopción.[Op Script Builder - Main Menu] ----------------------------------- 1. Show Variables 2. Build Service API 3. Enable Service API Q. Quit ----------------------------------- Enter Selection:> 2
Desde el
Hierarchies Menu, ingrese las selecciones de menú para las jerarquías que tengan variables que desea parametrizar, o presione Intro para seleccionar todas las jerarquías.[Op Script Builder - Hierarchies Menu] ----------------------------------- 1. interfaces 2. protocols 3. bridge-domains Q. Quit ----------------------------------- Please enter multiple selections separated by a comma (,) only. ----------------------------------- Enter Selection:> [default:all] 1
En la lista de variables, ingrese las selecciones de menú para las variables que desea parametrizar para la interfaz de servicio, o presione Intro para parametrizar todas las variables dentro de esa jerarquía.
List of variables to parameterize: ... [ edit groups vpn-service-template-group interfaces ] ----------------------------------- 1. interfaces/interface/name 2. interfaces/interface/description 3. interfaces/interface/unit/name 4. interfaces/interface/unit/family/bridge/interface-mode 5. interfaces/interface/unit/family/bridge/vlan-id Q. Quit Please enter multiple selections separated by a comma (,) only. ----------------------------------- Enter Selection:> [default:all] 1,2
Configure los parámetros seleccionados.
El sistema solicita la información necesaria. En este ejemplo, se configura el parámetro de nombre de interfaz como
ifnamey el parámetro de descripción de interfaz comoifdesc.Enter parameter name for: 1.interfaces/interface/name **************************** [ edit groups vpn-service-template-group interfaces ] Name for this parameter? ifname Do you want to revise 'ifname'? (yes/no)[no]: no Enter parameter name for: 2.interfaces/interface/description **************************** [ edit groups vpn-service-template-group interfaces ] Name for this parameter? ifdesc Do you want to revise 'ifdesc'? (yes/no)[no]: no
Configure los parámetros seleccionados en cada nivel jerárquico.
La secuencia de comandos itera sobre cada jerarquía seleccionada y los parámetros especificados. Si debe salir de la secuencia de comandos service-builder.slax mientras crea la API de servicio, debe terminar de configurar todos los parámetros de la jerarquía actual para guardar esa configuración de jerarquía cuando salga con la
Quitopción.Genere la interfaz de servicio, que crea la secuencia de comandos del servicio.
Una vez configurados todos los parámetros, la secuencia de comandos le solicita automáticamente que genere la interfaz de servicio. Presione Intro o escriba sí para generar la interfaz de servicio.
Do you want to commit the previously selected options to create vpn-service script? (yes/no)[yes]: yes Created service script: /var/db/scripts/op/vpn-service.slax
Verificar la interfaz de servicio
Propósito
Compruebe la creación de la secuencia de comandos de servicio. Si se configura la load-scripts-from-flash instrucción, el archivo generado se almacena en memoria flash. De lo contrario, el archivo generado se almacena en el disco duro.
Acción
Ejecute el comando del file list modo operativo. En este ejemplo, la secuencia de comandos vpn-service.slax debe estar presente en el directorio /var/db/scripts/op . El script service-builder.slax también genera el script utility.slax en el directorio /var/db/scripts/op y el archivo vpn-service-builder-info.xml en el directorio /var/db/scripts/lib . El script service-builder.slax utiliza estos archivos y no se deben eliminar.
user@host> file list /var/db/scripts/op /var/db/scripts/op: service-builder.slax utility.slax vpn-service.slax user@host> file list /var/db/scripts/lib /var/db/scripts/lib: vpn-service-builder-info.xml
Habilitación de la interfaz de servicio
Procedimiento paso a paso
Para habilitar la interfaz de servicio en un dispositivo remoto:
Copie la secuencia de comandos de servicio generada en el dispositivo en el que está aprovisionamiento del nuevo servicio.
Si la
load-scripts-from-flashinstrucción no está configurada, copie la secuencia de comandos del servicio en el directorio /var/db/scripts/op del segundo dispositivo. De lo contrario, la secuencia de comandos debe copiarse en el directorio correspondiente de la unidad flash.Habilite la secuencia de comandos op en la configuración.
[edit] user@host2# set system scripts op file vpn-service.slax
Confirme la configuración.
[edit] user@host2# commit commit complete
En el modo operativo, compruebe que la secuencia de comandos está habilitada y que los parámetros del servicio se muestran como argumentos para la secuencia de comandos.
user@host2> op vpn-service ? Possible completions: <[Enter]> Execute this command <name> Argument name action Please enter either create/delete/update detail Display detailed output ifdesc Text description of interface ifname Name of interface service-id Service Name | Pipe through a command
Aprovisionamiento del servicio mediante NETCONF
Procedimiento paso a paso
Para aprovisionar el servicio:
Si aún no está configurado, configure el servicio NETCONF a través de SSH en cualquier dispositivo en el que esté aprovisionamiento del nuevo servicio.
[edit] user@host2# set system services netconf ssh user@host2# commit
Desde un servidor de administración de configuración, establezca una sesión NETCONF con el dispositivo en el que está aprovisionamiento del servicio.
%ssh -p 830 -s user@host2 netconf user@host2's password: <!-- user user, class super-user --> <hello> <capabilities> <capability>urn:ietf:params:xml:ns:netconf:base:1.0</capability> <capability> urn:ietf:params:xml:ns:netconf:capability:candidate:1.0 </capability> <capability> urn:ietf:params:xml:ns:netconf:capability:confirmed-commit:1.0 </capability> <capability> urn:ietf:params:xml:ns:netconf:capability:validate:1.0 </capability> <capability> urn:ietf:params:xml:ns:netconf:capability:url:1.0?protocol=http,ftp,file </capability> <capability>http://xml.juniper.net/netconf/junos/1.0</capability> <capability>http://xml.juniper.net/dmi/system/1.0</capability> </capabilities> <session-id>28898</session-id> </hello> ]]>]]>Si está aprovisionamiento de un servicio nuevo en el dispositivo, escriba una llamada a procedimiento remoto (RPC) que llame al script de operación de servicio mediante la
createacción e incluya valores para todos los parámetros que requieren configuración.El valor del
service-idparámetro debe ser idéntico al nombre del servicio.<rpc> <op-script> <script>vpn-service</script> <action>create</action> <service-id>vpn-service</service-id> <ifname>ge-2/0/5,ge-2/0/6</ifname> <ifdesc>connected to customer1-site-1,connected to customer3-site-2</ifdesc> </op-script> </rpc>
Actualización o eliminación de servicios mediante NETCONF
Procedimiento paso a paso
Para actualizar o eliminar un servicio existente:
Si aún no está configurado, configure el servicio NETCONF a través de SSH en cualquier dispositivo en el que esté actualizando o eliminando el servicio.
[edit] user@host2# set system services netconf ssh user@host2# commit
Desde un servidor de administración de configuración, establezca una sesión NETCONF con el dispositivo en el que está aprovisionamiento del servicio.
%ssh -p 830 -s user@host2 netconf user@host2's password: <!-- user user, class super-user --> <hello> <capabilities> <capability>urn:ietf:params:xml:ns:netconf:base:1.0</capability> <capability> urn:ietf:params:xml:ns:netconf:capability:candidate:1.0 </capability> <capability> urn:ietf:params:xml:ns:netconf:capability:confirmed-commit:1.0 </capability> <capability> urn:ietf:params:xml:ns:netconf:capability:validate:1.0 </capability> <capability> urn:ietf:params:xml:ns:netconf:capability:url:1.0?protocol=http,ftp,file </capability> <capability>http://xml.juniper.net/netconf/junos/1.0</capability> <capability>http://xml.juniper.net/dmi/system/1.0</capability> </capabilities> <session-id>28898</session-id> </hello> ]]>]]>Si el servicio dado ya está aprovisionado en el dispositivo y está actualizando el servicio, escriba una RPC que llame al script de operación de servicio mediante la
updateacción e incluya valores para todos los parámetros que requieren actualización.<rpc> <op-script> <script>vpn-service</script> <action>update</action> <service-id>vpn-service</service-id> <ifname>ge-2/0/5</ifname> <ifdesc>connected to customer1-site-2</ifdesc> </op-script> </rpc>Si el servicio dado ya está aprovisionado en el dispositivo y va a eliminar algunos o todos los parámetros del servicio, escriba una RPC que llame a la secuencia de comandos de operación de servicio mediante la
deleteacción e incluya los parámetros que se deben eliminar.<rpc> <op-script> <script>vpn-service</script> <action>update</action> <service-id>vpn-service</service-id> <ifname>ge-2/0/6</ifname> </op-script> </rpc>
Verificación
Confirme que la configuración está actualizada.
Verificar la confirmación
Propósito
Compruebe que la confirmación se haya realizado correctamente.
Acción
Ejecute el comando del show system commit modo operativo para ver las confirmaciones recientes. La entrada de confirmación más reciente muestra que una confirmación se realizó a través del servidor NETCONF por user.
user@host2> show system commit 0 2012-05-21 12:15:08 PDT by user via junoscript 1 2012-05-18 09:47:40 PDT by user via other ...
Verificar la configuración del servicio
Propósito
Compruebe que la configuración del servicio está presente en la configuración activa.
Acción
Ejecute el comando del show configuration | compare rollback num modo operativo para ver los cambios de configuración.
user@host2> show configuration | compare rollback 1
[edit interfaces]
+ ge-2/0/5 {
+ description "connected to customer1-site-1";
+ }
+ ge-2/0/6 {
+ description "connected to customer3-site-2";
+ }
Significado
Una comparación de la configuración actual con la configuración anterior muestra que las interfaces y las descripciones de interfaz se agregaron a la configuración.
Solución de problemas
- Solución de problemas de una confirmación fallida
- Solución de problemas de un intento fallido de eliminar parámetros de servicio
Solución de problemas de una confirmación fallida
Problema
Aparece el siguiente mensaje al crear, actualizar o eliminar un servicio en un dispositivo mediante una sesión NETCONF:
<output> configuration database modified </output>
La configuración tiene cambios no confirmados anteriormente y el script de servicio no puede confirmar los cambios de configuración del servicio.
Solución
Confirme los cambios anteriores o revierta la configuración según corresponda y, a continuación, vuelva a enviar los cambios de configuración del servicio.
Solución de problemas de un intento fallido de eliminar parámetros de servicio
Problema
Aparece el siguiente mensaje al eliminar un parámetro de servicio en un dispositivo mediante NETCONF:
<xnm:error xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm">
<source-daemon>
op-script
</source-daemon>
<message>
xsl:attribute: Cannot add attributes to an element if children have been already added to the element.
</message>
</xnm:error>
Solución
La RPC puede incluir tanto el parámetro como un elemento secundario. Quite el elemento secundario de la RPC.