Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Mapeie as declarações de configuração do Junos OS ao JSON

Uma configuração para um dispositivo que executa o Junos OS é armazenada como uma hierarquia de declarações. A hierarquia da declaração de configuração tem dois tipos de declarações:

  • declarações de contêiner — declarações que contêm outras declarações

  • declarações da leaf — declarações que não contêm outras declarações

Todas as declarações de contêiner e leaf juntas formam a hierarquia de configuração.

A hierarquia de configuração pode ser representada usando o JavaScript Object Notation (JSON), além de texto ASCII formatado, elementos Junos XML e comandos de modo set de configuração. A partir do Junos OS Release 14.2, você pode ver a configuração de um dispositivo que executa o Junos OS em formato JSON executando o show configuration | display json comando na CLI. Além disso, a partir do Junos OS Release 16.1, você pode carregar dados de configuração em formato JSON no dispositivo.

Nota:

A partir do Junos OS Release 16.1, os dispositivos que executam o Junos OS emitem dados de configuração em formato JSON usando uma nova implementação padrão para serialização. Você pode configurar explicitamente o novo padrão, ietfou reverter para o padrão anterior, verboseconfigurando a declaração apropriada no nível de [edit system export-format json] hierarquia. Você pode configurar a declaração a partir do verbose Junos OS Release 16.1R1, mesmo que a declaração não esteja exposta no Junos OS CLI até um lançamento posterior.

Nota:

A partir das versões Junos OS 16.1R4, 16.2R2 e 17.1R1, os inteiros dos dados de configuração do Junos OS emitidos no formato JSON não estão incluídos nas cotações. Em versões anteriores, os inteiros dos dados de configuração JSON são tratados como strings e fechados entre aspas.

As seções a seguir descrevem o mapeamento entre o texto ASCII formatado e o formato padrão usado para declarações de configuração do Junos OS no JSON:

Mapeamento dos níveis de hierarquia e declarações de contêiner

A hierarquia de configuração do Junos OS é representada no JSON por um objeto JSON com um único membro de alto nível, ou par de nome/valor, que tem o nome de campo definido "configuration" e um valor que contém um objeto JSON representando toda a configuração. O configuration membro corresponde ao nível de [edit] hierarquia no modo de configuração CLI. A maioria das declarações nos próximos níveis da hierarquia de configuração são declarações de contêiner.

No JSON, cada declaração de hierarquia ou contêiner do Junos OS é um membro de seu objeto-pai. O membro, ou par de nome/valor, tem um nome de campo correspondente ao nome da hierarquia ou contêiner. Seu valor é um objeto JSON que contém membros representando os contêineres infantis e declarações leaf nesse nível de hierarquia. O objeto também pode conter um membro que detém a lista de atributos, se houver, associados a essa hierarquia.

O exemplo a seguir mostra o mapeamento entre o texto ASCII formatado e o JSON para duas declarações no nível superior da hierarquia de configuração:

Declarações de configuração da CLI

Sintaxe JSON

Mapeamento de objetos que tenham um identificador

Em alguns níveis de hierarquia, o mesmo tipo de objeto de configuração pode ocorrer várias vezes. Cada instância do objeto tem um identificador único para distingui-lo das outras instâncias. Na notação de CLI, a declaração dos pais para esse objeto pode consistir em uma palavra-chave e identificador ou apenas um identificador.

keyword é uma cadeia fixa que indica o tipo de objeto que está sendo definido, e identifier é um nome único para uma instância desse tipo. No exemplo a seguir, user é uma palavra-chave e username é o identificador.

No JSON, todas as instâncias de um objeto de configuração estão contidas em um único par de nome/valor no qual o nome do campo geralmente combina com a keyword cadeia, e o valor é uma matriz de objetos JSON, cada um dos quais é uma instância do objeto de configuração. A sintaxe JSON difere da CLI em seu tratamento do identificador. No JSON, cada instância do objeto de configuração usa um par de nome/valor para o identificador, onde o nome de campo distingue esses dados como o identificador, e o valor é o identificador único real para o objeto. Na maioria das vezes, o nome de campo é apenas name. Alguns objetos têm vários identificadores e podem usar um nome de campo diferente name. Os dados JSON que especificam um identificador estão sempre listados primeiro dentro do objeto correspondente, mas depois de qualquer lista de atributos incluída para esse objeto.

Nota:

O Junos OS reserva o prefixo junos- para os identificadores de grupos de configuração definidos no grupo de junos-defaults configuração. Os identificadores definidos pelo usuário não podem começar com a seqüência junos-.

A configuração para a maioria dos objetos que têm identificadores inclui declarações adicionais do leaf, que representam outras características do objeto. Por exemplo, cada grupo BGP configurado no nível de [edit protocols bgp group] hierarquia tem um nome associado (o identificador) e pode ter declarações leaf para outras características, como tipo, número de sistema autônomo (AS) e endereço vizinho. Para obter informações sobre o mapeamento JSON para declarações da leaf, consulte Mapeamento para declarações de folha de valor único e de forma fixa.

O exemplo a seguir mostra o mapeamento do texto ascii formatado à JSON para declarações de configuração que definem dois grupos BGP chamados G1 e G2. Na sintaxe JSON, o group valor do membro é um array que contém um objeto JSON separado para cada grupo BGP.

Declarações de configuração da CLI

Sintaxe JSON

Mapeamento para declarações do Leaf de valor único e de forma fixa

Uma declaração leaf é uma declaração de configuração de CLI que não contém nenhuma outra declaração. A maioria das declarações do leaf define um valor para uma característica de um objeto de configuração e tem a seguinte forma:

As declarações do Junos OS leaf são mapeadas em pares de nome/valor no JSON. Em geral, o nome de campo é o mesmo que a keyword string, e o valor é o mesmo que a value string.

O exemplo a seguir mostra o mapeamento JSON para duas declarações da leaf que têm uma palavra-chave e um valor: a message declaração no nível de [edit system login] hierarquia e a preference declaração no nível de [edit protocols ospf] hierarquia .

Declarações de configuração da CLI

Sintaxe JSON

Algumas declarações da leaf consistem apenas em uma palavra-chave de forma fixa, sem um valor de forma variável associado. O Junos OS representa tais declarações no JSON definindo o valor no par de nome/valor para [null]. O exemplo a seguir mostra o mapeamento JSON para a disable declaração no nível de [edit forwarding-options sampling] hierarquia.

Declarações de configuração da CLI

Sintaxe JSON

Mapeamento de declarações do Leaf com vários valores

Algumas declarações do Junos OS leaf aceitam vários valores, que podem ser definidos pelo usuário ou extraídos de um conjunto de valores predefinidos. A notação de CLI usa suportes quadrados para incluir todos os valores em uma única declaração, como no exemplo a seguir:

Conforme discutido no Mapeamento para Declarações de Folha de Valor Único e Forma Fixa, as declarações da leaf são mapeadas em pares de nome/valor no JSON, onde o nome de campo é o mesmo que a keyword cadeia. Para representar vários valores, a porção de valor dos dados JSON usa uma variedade de strings separados por vírgula.

O exemplo a seguir mostra o mapeamento JSON para uma declaração de CLI com vários valores definidos pelo usuário. A import declaração importa duas políticas de roteamento definidas em outros lugares da configuração. O texto ASCII formatado usa uma lista de valores separada por espaço, enquanto os dados JSON usam um array com uma lista de strings separada por vírgula.

Declarações de configuração da CLI

Sintaxe JSON

O exemplo a seguir mostra o mapeamento JSON para uma declaração de CLI com vários valores predefinidos. A permissions declaração concede três permissões predefinidas aos membros da user-accounts classe de login.

Declarações de configuração da CLI

Sintaxe JSON

Mapeamento de várias opções em uma ou mais linhas

Para alguns objetos de configuração do Junos OS, a sintaxe padrão de CLI coloca várias opções em uma única linha, geralmente para maior legibilidade e concisidade. Na maioria desses casos, a primeira opção identifica o objeto e não tem uma palavra-chave, mas opções posteriores são palavras-chave e valores emparelhados.

No JSON, o mesmo objeto de configuração mapeia um par de nome/valor. O nome de campo é o mesmo que o nome do objeto, e o valor é um objeto JSON contendo as opções, que são representadas por pares de nome/valor. Se a primeira opção não tiver nenhuma palavra-chave na declaração de CLI, o mapeamento JSON atribui um nome, que é equivalente ao nome de opção definido no esquema e usado para o nome de tag Junos XML correspondente.

O exemplo a seguir mostra o mapeamento JSON para uma declaração de configuração de CLI com várias opções em uma única linha. A representação JSON da [edit system backup-router] declaração usa pares de nome/valor para ambas as opções e atribui o nome address de campo para a primeira opção (10.0.0.1), que não tem palavra-chave CLI.

Declarações de configuração da CLI

Sintaxe JSON

A sintaxe para alguns objetos de configuração inclui mais de uma linha multi-opção. No JSON, o objeto de configuração mapeia um par de nome/valor, como no caso anterior. O nome de campo é o mesmo que o nome do objeto, e o valor é um objeto JSON contendo as opções, que são representadas por pares de nome/valor. Para cada opção, o nome de campo é o mesmo que o nome da opção, e o valor é uma estrutura de dados JSON que representa adequadamente os dados de configuração para essa opção. Quando uma opção usa a mesma palavra-chave, mas abrange várias linhas, a representação JSON combina as opções em um único par de nome/valor. Nesse caso, o valor é uma variedade de objetos JSON em que cada opção é mapeada em um objeto separado.

O exemplo a seguir mostra o mapeamento JSON para a traceoptions declaração no nível de [edit protocols isis] hierarquia. A traceoptions declaração tem três declarações de filhos, cada uma com várias opções. A notação de CLI exibe as opções individuais flag em linhas separadas, mas a representação JSON combina os flag detalhes em um único par de nome/valor. O valor é uma variedade de objetos onde cada objeto contém os detalhes de uma bandeira.

Declarações de configuração da CLI

Sintaxe JSON

Mapeamento de atributos

A hierarquia de configuração do Junos OS pode conter tags que modificam uma hierarquia ou declaração. Por exemplo, se você emitir o deactivate comando para desativar uma declaração na configuração, a inactive: tag está pré-configurada para o item na configuração para indicar essa propriedade. A API Junos XML representa essa propriedade como um atributo na tag de abertura do elemento XML.

A representação JSON da configuração do Junos OS usa anotações de metadados para representar essas propriedades. As anotações de metadados são codificadas como membros de um único objeto JSON e incluem o símbolo "@" como ou dentro do nome.

O objeto de metadados que representa a lista de atributos para uma declaração de contêiner é adicionado como um novo membro desse objeto. O objeto de metadados é colocado diretamente dentro do objeto de contêiner que modifica e usa um único símbolo "@" como nome do membro. O objeto de metadados que representa a lista de atributos para uma declaração da leaf é adicionado como um par de nome/valor de irmão que é colocado diretamente após a declaração que modifica e que tem um nome de membro que é a concatenação do símbolo "@" e o nome da declaração. O valor do objeto de metadados em ambos os casos é um objeto que contém pares de nome/valor que descrevem cada um dos atributos associados a essa declaração de contêiner ou folha.

Nos exemplos a seguir, tanto a [edit commit] hierarquia quanto a persist-groups-inheritance declaração foram desativadas. Na CLI, as declarações são precedidas pela inactive: tag. A representação do Junos XML inclui o inactive="inactive" atributo em cada uma das tags de abertura para esses elementos. O mapeamento JSON armazena os atributos em uma lista de atributos. A lista de atributos para a [edit commit] hierarquia é indicada com "@", porque é uma declaração de contêiner. A lista de atributos para a persist-groups-inheritance declaração é indicada usando "@persist-grupos-herança", porque é uma declaração leaf.

Declarações de configuração da CLI

Sintaxe XML

Sintaxe JSON

A lista de atributos para uma instância específica de um objeto é semelhante à lista de atributos de um contêiner na medida em que é um par de nome/valor onde o nome do campo é um único símbolo "@", e o valor é um objeto contendo pares de nome/valor que descreve cada um dos atributos. A lista de atributos está fechada dentro do objeto JSON que identifica essa instância e é o primeiro membro do objeto, seguido pelo identificador do objeto.

No exemplo a seguir, a interface ge-0/0/0 está protegida. Na CLI, o objeto é precedido pela protect: tag. A representação do Junos XML inclui o protect="protect" atributo na tag de abertura para esse objeto. O mapeamento JSON armazena o "protect" : true atributo em uma lista de atributos incluída no objeto JSON que identifica essa interface específica.

Declarações de configuração da CLI

Sintaxe XML

Sintaxe JSON

Mapeamento para comentários de configuração

Uma configuração do Junos OS pode incluir comentários que descrevem declarações na configuração. Os dados de configuração formatados usando texto ASCII ou elementos Junos XML exibem comentários sobre a linha anterior à declaração que o comentário modifica. No formato Junos XML, a cadeia de comentários é fechada em um <junos:comment> elemento.

Os comentários são indicados usando um dos dois delimiters: as cordas /* emparelhadas e */ o comentário fechado, ou o # personagem que precede o comentário. Você pode usar qualquer delimiter na cadeia de comentários quando inserir comentários na configuração. Se você omitir o delimiter, o Junos OS insere /* automaticamente e */.

Nota:

O Junos OS preserva qualquer espaço branco incluído no comentário.

Os dados de configuração do Junos OS formatados usando o JSON mapeiam um comentário para um par de nome/valor que é armazenado como um atributo da declaração que ele modifica. O nome de campo está definido para "comment", e o valor é a seqüência de texto do comentário. A sequência de texto de comentários pode incluir qualquer um dos dois delimiters que indicam um comentário. Se você omitir o delimiter da cadeia de texto de comentários quando carregar os dados de configuração JSON, o Junos OS adiciona automaticamente os /* e */ delimiters ao comentário. Você também pode criar comentários multiline nos dados de configuração JSON inserindo o personagem newline (\n) na cadeia de comentários.

O exemplo a seguir mostra a configuração ASCII formatada e a sintaxe JSON correspondente para três comentários. O exemplo associa um comentário a uma hierarquia, outro comentário com um objeto que tem um identificador e um terceiro comentário com uma declaração da leaf.

Declarações de configuração da CLI

Sintaxe JSON

Tabela de histórico de lançamento
Lançamento
Descrição
16.1R4
A partir das versões Junos OS 16.1R4, 16.2R2 e 17.1R1, os inteiros dos dados de configuração do Junos OS emitidos no formato JSON não estão incluídos nas cotações. Em versões anteriores, os inteiros dos dados de configuração JSON são tratados como strings e fechados entre aspas.
16.1
A partir do Junos OS Release 16.1, os dispositivos que executam o Junos OS emitem dados de configuração em formato JSON usando uma nova implementação padrão para serialização.