Провели как 4 часа охоты здесь, пытаясь найти что-то подходящее.Я знаю, что исправление здесь будет своего рода заменой для «| list | join ('\', \ '')», но за всю жизнь я не могу найти похожую справочную страницу.Даже указатель на лучшую справочную страницу будет принята с благодарностью.Мой желаемый вывод: vlans: ["1", "3", "5", "7", "9", "17"]
У меня есть большой файл YAML, который содержит атрибуты / переменные длярасположение стоит список хостов.Сначала я пытаюсь разбить этот файл на множество файлов, которые являются специфичными для хоста, используя JINJA2.При запуске для переменной vlans я получаю: vlans: «1», «3», «5», «7», «9», «17»
Таким образом, вся переменная vlans обрабатывается как одна строка, ачем список строк.Если я удаляю «| list | join ('\', \ '')» из кода JINJA2, то я получаю этот вывод в моем целевом YAML-файле: vlans: «[u'1 ', u'3', u'5', u'7', u'9 ', u'17'] "
Я пробовал несколько вариантов оператора объединения и, похоже, не смог достичь правильной цели.Ваша помощь очень ценится.
Структура выглядит следующим образом:
mg_uplinks:
- { left_border_node: somehostname, left_border_intf: someinterface,
right_border_node: somehostname, right_border_intf: someinterface,
border_ae_intf: someinterface, border_esi: "some value", border_lacp_sys_id: "some value",
mg_node: somehostname, left_mg_intf: someinterface, right_mg_intf: someinterface, mg_ae_intf: someinterface,
link_speed: 10g,
vlans: ["1", "3", "5", "7", "9", "17"]
- { left_border_node: someotherhostname, left_border_intf: someinterface,
right_border_node: someotherhostname, right_border_intf: someinterface,
border_ae_intf: someinterface, border_esi: "some value", border_lacp_sys_id: "some value",
mg_node: someotherhostname, left_mg_intf: someinterface, right_mg_intf: someinterface, mg_ae_intf: someinterface,
link_speed: 10g,
vlans: [all] }
Затем я анализирую эту информацию с помощью этого кода jinja2.
mg_uplinks:
{% for link in mg_uplinks %}
{% if inventory_hostname == link['left_border_node'] %}
- { local_phys_intf: "{{ link['left_border_intf'] }}",
border_ae_intf: "{{ link['border_ae_intf'] }}",
border_esi: "{{ link['border_esi'] }}",
border_lacp_sys_id: "{{ link['border_lacp_sys_id'] }}",
mg_node: "{{ link['mg_node'] }}",
remote_phys_intf: "{{ link['left_mg_intf'] }}",
remote_ae_intf: "{{ link['mg_ae_intf'] }}",
link_speed: "{{ link['link_speed'] }}",
vlans: "{{ link['vlans'] | list | join ('\',\'') }}" }
{% endif %}
{% if inventory_hostname == link['right_border_node'] %}
- { local_phys_intf: "{{ link['right_border_intf'] }}",
border_ae_intf: "{{ link['border_ae_intf'] }}",
border_esi: "{{ link['border_esi'] }}",
border_lacp_sys_id: "{{ link['border_lacp_sys_id'] }}",
mg_node: "{{ link['mg_node'] }}",
remote_phys_intf: "{{ link['right_mg_intf'] }}",
remote_ae_intf: "{{ link['mg_ae_intf'] }}",
link_speed: "{{ link['link_speed'] }}",
vlans: "{{ link['vlans'] | list | join ('\',\'') }}" }
{% endif %}
{% endfor %}