Alterar a configuração usando scripts SLAX e XSLT
Scripts de op e eventos SLAX e XSLT podem usar o jcs:load-configuration
modelo para fazer alterações estruturadas na configuração do Junos OS. Usuários experientes, familiarizados com o Junos OS, podem escrever scripts que solicitam as informações de configuração relevantes e modificar a configuração de acordo. Isso permite que usuários que tenham menos experiência com o Junos OS modifiquem a configuração com segurança usando o script.
Este tópico discute como usar o jcs:load-configuration
modelo para modificar a configuração.
jcs:Visão geral do modelo de configuração de carga
O jcs:load-configuration
modelo está incluído no arquivo de importação junos.xsl . O modelo pode:
Carregue os dados de configuração do Junos XML na configuração do candidato usando um
load merge
,load replace
ouload override
operação e comprometa as alteraçõesReverta a configuração ativa para uma configuração previamente comprometida
Carregue e comprometa a configuração de resgate
Quando chamado, o jcs:load-configuration
modelo executa as seguintes ações no dispositivo alvo:
Bloqueia o banco de dados de configuração
Carrega as mudanças de configuração
Confirma a configuração
Desbloqueia o banco de dados de configuração
O jcs:load-configuration
modelo faz alterações na configuração no configure exclusive
modo. Nesse modo, o Junos OS bloqueia a configuração global do candidato enquanto o script acessa o banco de dados compartilhado e faz alterações na configuração. A chamada de modelo pode falhar se o banco de dados de configuração já estiver bloqueado ou se houver alterações não comprometidas existentes na configuração do candidato quando o modelo for chamado. Se o modelo carregar com sucesso os dados de configuração, mas o commit falhar, o Junos OS descarta as alterações não comprometidas quando o banco de dados é desbloqueado.
A sintaxe do modelo SLAX é:
call jcs:load-configuration($action="(merge | override | replace)", $commit-options=node-set, $configuration=configuration-data, $connection=connection-handle, $rescue="rescue", $rollback=number);
A sintaxe do modelo XSLT é:
<xsl:call-template name="jcs:load-configuration"> <xsl:with-param name="action" select="(merge | override | replace)"/> <xsl:with-param name="commit-options" select="node-set"/> <xsl:with-param name="configuration" select="configuration-data"/> <xsl:with-param name="connection" select="connection-handle"/> <xsl:with-param name="rescue" select=""rescue""/> <xsl:with-param name="rollback" select="number"/> </xsl:call-template>
Você fornece argumentos ao jcs:load-configuration
modelo para especificar:
a alça de conexão com o dispositivo no qual as mudanças serão feitas
as mudanças a serem feitas na configuração
a ação de carga que define como integrar as mudanças na configuração existente
opções de confirmação opcionais
Você deve estabelecer uma conexão com o dispositivo-alvo antes de chamar o jcs:load-configuration
modelo. Para se conectar a um dispositivo, ligue para a jcs:open()
função com os argumentos necessários. Em seguida, defina o jcs:load-configuration
connection
parâmetro para a alça devolvida pela jcs:open()
função.
O código de amostra a seguir se conecta ao dispositivo local e modifica a configuração:
var $conn = jcs:open(); var $results := { call jcs:load-configuration($configuration=$config-changes, $connection=$conn); } var $close-results = jcs:close($conn);
Quando você liga para o jcs:load-configuration
modelo, você pode incluir o configuration
parâmetro para carregar novos dados de configuração em um dispositivo, você pode especificar o rollback
parâmetro para reverter a configuração para uma configuração previamente comprometida, ou você pode especificar o rescue
parâmetro para carregar e comprometer a configuração de resgate.
Dados de configuração de carregamento e comprometimento
Os scripts SLAX e XSLT podem chamar o jcs:load-configuration
modelo para modificar a configuração. O configuration
parâmetro define os dados de configuração do Junos XML para carregar, e o action
parâmetro especifica como carregar os dados. O commit-options
parâmetro define as opções a serem usadas durante a operação de confirmação.
O script de op de amostra a seguir chama o jcs:load-configuration
modelo de modificar a configuração para desabilitar uma interface. Todos os valores necessários para o jcs:load-configuration
modelo são definidos como variáveis, que são então passados para o modelo como argumentos.
O :=
operador copia os resultados da chamada do jcs:load-configuration
modelo para uma variável temporária e executa a node-set
função nessa variável. O :=
operador garante que a disable-results
variável seja um conjunto de nós em vez de um fragmento de árvore de resultado para que o script possa acessar o conteúdo.
Sintaxe SLAX:
version 1.2; 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"; ns ext = "http://xmlsoft.org/XSLT/namespace"; import "../import/junos.xsl"; match / { <op-script-results> { var $interface = jcs:get-input("Enter interface to disable: "); var $config-changes = { <configuration> { <interfaces> { <interface> { <name> $interface; <disable>; } } } } var $load-action = "merge"; var $options := { <commit-options> { <synchronize>; <log> "disabling interface " _ $interface; } } var $conn = jcs:open(); var $results := { call jcs:load-configuration($action=$load-action, $commit-options=$options, $configuration=$config-changes, $connection=$conn); } if ($results//xnm:error) { for-each ($results//xnm:error) { <output> message; } } var $close-results = jcs:close($conn); } }
Para obter informações detalhadas sobre este script, veja Exemplo: altere a configuração usando scripts de op SLAX e XSLT.
O código XSLT equivalente para a chamada ao jcs:load-configuration
modelo é:
<xsl:variable name="disable-results-temp"> <xsl:call-template name="jcs:load-configuration"> <xsl:with-param name="action" select="$load-action"/> <xsl:with-param name="commit-options" select="$options"/> <xsl:with-param name="configuration" select="$disable"/> <xsl:with-param name="connection" select="$conn"/> </xsl:call-template> </xsl:variable> <xsl:variable xmlns ext="http:xmlsoft.org/XSLT/namespace" \ name="disable-results" select="ext:node-set($disable-results-temp)"/>
Carregamento e comprometimento da configuração de resgate
Uma configuração de resgate permite que você defina uma configuração de trabalho conhecida ou uma configuração com um estado conhecido que você pode restaurar a qualquer momento. Os scripts SLAX e XSLT podem chamar o jcs:load-configuration
modelo com o rescue
parâmetro para carregar a configuração de resgate, se houver um.
O script op SLAX a seguir carrega e compromete a configuração de resgate existente.
version 1.2; 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 "/var/db/scripts/import/junos.xsl"; match / { <op-script-results> { /* Open the connection */ var $conn = jcs:open(); /* Load and commit the rescue configuration */ var $results = { call jcs:load-configuration($connection=$conn, $rescue="rescue"); } expr jcs:output($results); /* Close the connection */ expr jcs:close($conn); } }
O script XSLT equivalente é:
<?xml version="1.0" standalone="yes"?> <xsl:stylesheet 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" version="1.0"> <xsl:import href="/var/db/scripts/import/junos.xsl"/> <xsl:template match="/"> <op-script-results> <!-- Open the connection --> <xsl:variable name="conn" select="jcs:open()"/> <!-- Load and commit the rescue configuration --> <xsl:variable name="results"> <xsl:call-template name="jcs:load-configuration"> <xsl:with-param name="connection" select="$conn"/> <xsl:with-param name="rescue" select=""rescue""/> </xsl:call-template> </xsl:variable> <xsl:value-of select="jcs:output($results)"/> <!-- Close the connection --> <xsl:value-of select="jcs:close($conn)"/> </op-script-results> </xsl:template> </xsl:stylesheet>
Reversão da configuração
Os scripts SLAX e XSLT podem chamar o jcs:load-configuration
modelo com o rollback
parâmetro para reverter a configuração para uma configuração previamente comprometida. O script de operações SLAX a seguir solicita o número de reversão e, em seguida, carrega a configuração de reversão solicitada e a compromete.
version 1.2; 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 / { <op-script-results> { var $rollback_id = jcs:get-input("Rollback id: "); /* Open the connection */ var $conn = jcs:open(); /* Roll back the configuration and commit it */ var $results = { call jcs:load-configuration($connection=$conn, $rollback=$rollback_id); } /* Close the connection */ expr jcs:close($conn); } }
user@host> op load-rollback Rollback id: 1