Modelos de configuração (Projeto Freeform)
Recomendamos que você se familiarize com o Jinja Template Designer antes de trabalhar com modelos de configuração.
Vários modelos de configuração predefinidos estão incluídos com o produto Apstra. Para se familiarizar com a sintaxe e como o config Jinja é usado em modelos de configuração. confira as seções abaixo.
Um modelo de configuração simples
Vamos dar uma olhada no modelo junos_protocols.jinja
de configuração , que é fornecido com o software Apstra.
protocols { lldp { port-id-subtype interface-name; port-description-type interface-description; neighbour-port-info-display port-id; interface all; } }
Este modelo simples não inclui nenhuma variável ou outras condições. Ele está aninhado dentro do modelo junos_configuration.jinja
de configuração, um dos outros modelos de configuração predefinidos. Você poderia criar seu próprio modelo de configuração e aninhar este básico nele também.
Modelo de configuração com variável
Vamos analisar junos_system.jinja
outro modelo de configuração predefinido.
{% if hostname %} system { host-name {{hostname}}; } {% endif %}
Este modelo inclui uma declaração se-então e a variável hostname
. Quando a configuração é renderizada, se o contexto do dispositivo do sistema incluir um valor para hostname
, então a configuração renderizada inclui esse valor.
Modelo de configuração e conjuntos de propriedades
Um exemplo de uso de conjuntos de propriedades é com servidores NTP. A configuração para NTP pode ser consistente em todos os dispositivos da empresa, exceto para fontes de tempo ou estratos por geografia. Você pode construir um modelo de configuração com uma variável, nomeada ntp
por exemplo, no lugar do endereço IP real. A configuração será gerada com o valor da ntp
propriedade em um conjunto de propriedades. Você importaria o mesmo modelo de configuração em todos os modelos, mas para projetos em execução na região leste você importaria o conjunto de propriedades "EAST", e para o projeto em execução na região oeste você importaria o conjunto de propriedades "WEST". Os conjuntos de propriedades são globais, ou seja, são de todo o modelo.
O modelo de configuração pode ser assim.
{% if property_sets.get('ntp') %} system { ntp { server {{property_sets['ntp']['ntp_server']}}; } } {% endif %}
O exemplo abaixo mostra a sintaxe do conjunto ntp
de propriedades que contém o endereço IP.
ntp_server = '1.2.3.4'