Как ввести данные для рендеринга шаблона конфигурации, используя файл вместо предоставления данных в скрипте
В настоящее время я использую это, но это означает, что мне нужно прикасаться к сценарию каждый раз, когда я хочу изменить данные:
from jinja2 import Environment, FileSystemLoader
file_loader = FileSystemLoader('.')
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=file_loader)
template = env.get_template('bgp_template.j2')
output = template.render(local_asn='1111', bgp_neighbor='192.168.1.1', remote_asn='2222')
print(output)
Вместо этого я хочу создать новый файл данных (например, bgp_data1.txt, bgp_data2.txt) и обратиться к ним в скрипте
заменить вышеуказанную строку в коде на что-то вроде:
output = template.render(open(bgp_data1.txt))
при следующем запуске:
output = template.render(open(bgp_data2.txt))
и т.д.
Я попытался создать bgp_data1.txt как
local_asn='1111', bgp_neighbor='192.168.1.1', remote_asn='2222'
но получил эту ошибку:
$ python jinja_play3.py
Traceback (most recent call last):
File "jinja_play3.py", line 8, in <module>
output = template.render(open('bgp_data1.txt'))
File "/Library/Python/2.7/site-packages/jinja2/environment.py", line 1003, in render
vars = dict(*args, **kwargs)
ValueError: dictionary update sequence element #0 has length 64; 2 is required