Вхождение в lxd шаблонные ошибки с условными операторами - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь создать файл конфигурации 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().

Как мне избавиться от этой ошибки?

...