Я пытаюсь создать файл конфигурации netplan на лету, передавая кучу переменных для запуска lxc, используя -c "environment.XYZ"
... это хорошо работает для простых случаев, но по какой-то причине lxc
лает в строке 8 , символ 79, заявив, что он будет иметь закрывающую скобку после первого is
...
EROR[04-04|10:02:36] The start hook failed container=test err="Failed to render template: [Error (where: parser) in <string> | Line 8 Col 79 near 'is'] Closing bracket expected after expression"
Вот шаблон.
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: false
dhcp6: false
{% if ( not config_get("environment.IPv4") or config_get("environment.IPv4") is none ) and ( not config_get("environment.IPv6") or config_get("environment.IPv6") is none ) %}
addresses: []
{% else %}
addresses:
{% if config_get("environment.IPv4") is not none %}
- {{ config_get("environment.IPv4", "xxx.yyy.zzz.252") }}/{{ config_get("environment.IPv4netmask", "24") }}
{% endif %}
{% if config_get("environment.IPv6") is not none %}
- {{ config_get("environment.IPv6", "xxx.yyy.zzz::252") }}/{{ config_get("environment.IPv6netmask", "64") }}
{% endif %}
{% endif %}
{% if config_get("environment.IPv4") is not none %}
gateway4: {{ config_get("environment.IPv4gateway", "xxx.yyy.zzz.1") }}
{% endif %}
{% if config_get("environment.IPv6") is not none %}
gateway6: {{ config_get("environment.IPv6gateway", "xxx.yyy.zzz::1") }}
{% endif %}
nameservers:
addresses:
- xxx.yyy.zzz.2
- xxx.yyy.zzz.2
- 1.1.1.1
search:
- internal.example.com
- example.biz
Я передал упрощенную версию этого в Jinja2 live parser , и это показалось мне достаточно счастливым. Упрощенное здесь означает замену конструкций, подобных config_get("environment.IPv6")
, на environment.IPv6
, так как живой синтаксический анализатор ничего не знает о config_get()
.
Как мне избавиться от этой ошибки?