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 replaceouload overrideoperaçã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