Хранение нескольких сетевых устройств в YAML и ссылка на него в jinja2 - PullRequest
0 голосов
/ 30 июня 2018

Как создать файл yaml для хранения нескольких сетевых устройств и ссылки на конкретного поставщика / типа из файла jinja2?

Например:

—
ip: 10.10.10.10
hostname: core-fw-domain-location
username: admin
password: password
vendor: cisco
type: firewall
ip: 20.20.20.20
hostname: core-rt-domain-location
username: admin
password: password
vendor: cisco
type: router

Очевидно, что вышесказанное не работает - как мне структурировать его так, чтобы оно было иерархическим?

Как мне ссылаться на мой файл jinja2?

Например:

{% if node.hostname == 'core-fw-domain-location' %}
enable secret {{ node.secret }}
username admin privilege password {{ node.secret }}
{% endif %}

1 Ответ

0 голосов
/ 30 июня 2018

Структурируйте свой YAML в виде списка карт:

- ip: 10.10.10.10
  hostname: core-fw-domain-location
  username: admin
  password: password
  vendor: cisco
  type: firewall
- ip: 20.20.20.20
  hostname: core-rt-domain-location
  username: admin
  password: password
  vendor: cisco
  type: router

Затем в вашем коде Python измените node на nodes при рендеринге шаблона, потому что теперь настроено несколько узлов:

config = baseline.render(nodes = node_object)

И в вашем файле jinja2 выполните цикл nodes соответственно:

{% for node in nodes -%}
{% if node.hostname == 'core-fw-domain-location' %}
enable secret {{ node.password }}
username admin privilege password {{ node.password }}
{% endif %}
{%- endfor %}
...