Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Crie sintaxe de configuração personalizada com macros de script commit

Confirmar macros de script permite que você crie sintaxe de configuração personalizada e expanda-a para declarações de configuração padrão do Junos OS. Sua sintaxe personalizada serve como entrada para um script de compromisso. A saída do script de compromisso é a sintaxe padrão de configuração do Junos OS, como mostrado na Figura 1. As declarações padrão do Junos OS são adicionadas à configuração para causar suas alterações operacionais pretendidas.

Figura 1: Entrada e saída Macro Input and Output macro

As macros usam elementos de mudança persistentes ou transitórios para expandir sua sintaxe personalizada em declarações de configuração padrão do Junos OS. Se você usar mudanças persistentes, tanto a sintaxe personalizada quanto a sintaxe padrão do Junos OS aparecem na configuração do candidato. Se você usar alterações transitórias, a sintaxe personalizada aparece na configuração do candidato, e a sintaxe padrão do Junos OS é copiada apenas para a configuração de checkout.

Esta seção discute os seguintes tópicos:

Criando uma sintaxe personalizada

As macros funcionam localizando apply-macro declarações na configuração do candidato e usando os valores especificados na apply-macro declaração como parâmetros para um conjunto de instruções definidas em um script de compromisso. Na verdade, sua sintaxe de configuração personalizada serve a um propósito duplo. A sintaxe permite que você simplifique suas tarefas de configuração, e fornece ao script os dados necessários para gerar uma configuração complexa.

Para inserir sintaxe personalizada, você inclui a apply-macro declaração em qualquer nível de hierarquia e especifica os dados que quiser dentro da apply-macro declaração, por exemplo:

Você pode incluir a apply-macro declaração em qualquer nível da hierarquia de configuração. Nesse sentido, a apply-macro declaração é semelhante à apply-groups declaração. Cada apply-macro declaração deve ser nomeada com exclusividade, em relação a outras apply-macro declarações no mesmo nível de hierarquia.

Uma apply-macro declaração pode conter um conjunto de parâmetros com valores opcionais. O script de compromisso correspondente pode se referir ao nome macro, seus parâmetros ou aos valores dos parâmetros. Quando o script inspeciona a configuração e encontra os dados, o script executa as ações especificadas pela mudança persistente ou transitória correspondente.

Por exemplo, dada a seguinte estrofe de configuração, você pode escrever instruções de script para gerar uma configuração padrão com base no nome do parâmetro:

A instrução de programação a seguir <xsl:for-each> encontra apply-macro declarações no nível de [edit protocols mpls] hierarquia que contêm um parâmetro chamado color:

A instrução a seguir cria uma variável nomeada color e atribui à variável o valor do color parâmetro, que neste caso é blue:

A instrução a seguir adiciona a admin-groups declaração à configuração e atribui o color valor da variável ao nome do grupo:

As declarações de configuração resultantes são as seguintes:

elemento <data>

Na renderização XML da sintaxe personalizada em uma declaração apply-macro , parâmetros e seus valores estão contidos e <name> <value> elementos, respectivamente. Os <name> elementos são <value> filhos irmãos do <data> elemento. Por exemplo, a apply-macro blue-type-lsp declaração contém seis parâmetros, da seguinte forma:

Os parâmetros e valores são renderizados nos elementos de tag Junos XML da seguinte forma:

Quando você escreve macros de script commit, você pode extrair e manipular os parâmetros contidos nas apply-macro declarações, referindo-se aos <data>elementos e <value> aos <name>elementos.

No exemplo a seguir, a select expressão XPath do atributo extrai o texto contido no <value> elemento que é uma criança de um <data> elemento que também contém um <name> elemento infantil com o texto color. A declaração variável atribui o texto do elemento a <value> uma variável nomeada color.

O equivalente ao SLAX é:

O equivalente Python, que pressupõe ter element selecionado um apply-macro elemento, é:

Expandindo a sintaxe personalizada

No script de compromisso correspondente, você inclui uma ou mais instruções de programação que inspecionam a configuração para a apply-macro declaração em um nível de hierarquia especificado. Opcionalmente, você pode usar a data/name expressão para selecionar um parâmetro na apply-macro declaração.

Por exemplo, a seguinte instrução de programação XSLT seleciona cada apply-macro declaração que contém o color parâmetro e que aparece no nível de [edit protocols mpls] hierarquia:

O equivalente ao SLAX é:

O equivalente Python, que abrange várias linhas para leitura, é:

Ao expandir macros, uma instrução de programação especialmente útil em scripts XSLT é a <xsl:value-of> instrução. Esta instrução seleciona um valor de parâmetro e o usa para criar valores de opção para as declarações do Junos OS. Por exemplo, a instrução a seguir concatena o valor da color variável, do texto -lsp-e do nó de contexto atual (representado por " ." ) para criar um nome para um LSP.

O SLAX usa o sublinhado (_) para condensar valores.

Quando o script inclui instruções para encontrar os dados necessários, você pode fornecer conteúdo para uma mudança persistente ou transitória que usa os dados para construir uma configuração padrão do Junos OS.

A mudança transitória a seguir cria um grupo de administração e adiciona a label-switched-path declaração à configuração. O caminho comutado por rótulos é atribuído a um nome que concatena o valor da color variável, do texto -lsp-e do endereço IP atualmente selecionado representado pelo período ("."). A mudança transitória também adiciona a to declaração e atribui o endereço IP selecionado atualmente. Por fim, a mudança transitória adiciona a admin-group include-any declaração e atribui o valor da color variável.

O equivalente ao SLAX é:

Da mesma forma em Python:

Nota:

O exemplo aqui mostrado é parcial. Para um exemplo completo, veja exemplo: criação de sintaxe de configuração personalizada com macros de script commit.

Depois de comprometer a configuração, o script é executado e a configuração completa resultante se parece com isso:

O exemplo anterior demonstra como você pode usar uma sintaxe personalizada simplificada para configurar caminhos comutados por rótulos (LSPs). Se seu projeto de rede exigir que um grande número de LSPs seja configurado, usar uma macro de script de compromisso pode economizar tempo, garantir consistência e evitar erros de configuração.

Outras maneiras de usar macros

O exemplo discutido na criação de uma sintaxe personalizada mostra uma macro que usa mudanças transitórias para criar o impacto operacional pretendido. Alternativamente, você pode criar um script de compromisso que usa mudanças persistentes para adicionar as declarações padrão do Junos OS à configuração do candidato e excluir totalmente sua sintaxe personalizada. Dessa forma, um operador de rede que talvez não esteja familiarizado com sua sintaxe personalizada pode visualizar o arquivo de configuração e ver a configuração completa renderizada como declarações padrão do Junos OS. Ainda assim, como a macro de script commit permanece em vigor, você pode criar uma configuração complexa com rapidez e facilidade usando sua sintaxe personalizada.

Além do tipo de aplicativo discutido na criação de uma sintaxe personalizada, você também pode usar macros para impedir que um script de compromisso realize uma tarefa. Por exemplo, um script de compromisso básico que adiciona automaticamente a configuração MPLS às interfaces pode fazer uma exceção para interfaces que você marca explicitamente como não exigindo MPLS, testando a presença de uma declaração apply-macro nomeada no-mpls. Para um exemplo desse uso de macros, veja Exemplo: Configuração de LDP de controle.

Você pode usar a apply-macro declaração como um lugar para armazenar dados externos. O script de compromisso não inspeciona a apply-macro declaração, portanto, a apply-macro declaração não tem impacto operacional no dispositivo, mas os dados podem ser transportados no arquivo de configuração a ser usado por aplicativos externos.