Предполагая, что у меня есть шаблон jinja2, используя следующий p
{% macro logging(ltype) %}
{% if ltype == 'fluentd' %}
logging:
driver: 'fluentd'
options:
tag: "{{ app_name }}.{{ '{{' }}.Name{{ '}}' }}"
labels: "mylabel"
{% endif %}
{% endmacro %}
...
{{ logging('fluentd') }}
...
Когда я визуализирую этот шаблон (модуль template
), я получаю
...
logging:
driver: 'fluentd'
options:
tag: "test.{{.Name}}"
labels: "mylabel"
...
Как видите, клавиша driver
сдвинута по неизвестным мне причинам.
Я перепробовал все возможности управления пробелами, ничего не меняет это поведение.
Есть у кого-нибудь идея исправить?
Желаемый результат
...
logging:
driver: 'fluentd'
options:
tag: "test.{{.Name}}"
labels: "mylabel"
...
Точно: ведение журнала точно в нужном месте, но драйвер удалил все пробелы, которые были в макросе
Измените эту часть шаблона на:
...
{{ logging('fluentd') | indent(3,true) }}
...
Ничего не меняет - все по-прежнему с неправильным отступом. (еще три пробела справа)
Вы переместили его полностью влево в шаблоне?
Не на мой взгляд. Все, что делает макрос, - это вставляет этот текст в то место, где вы поместили макрос. Если вы удалите из исходного шаблона часть с надписью {{ logging('fluentd') }}
, а затем выполните копирование и вставку строк макроса в это место (с теми же тремя пробелами слева), вы получите точно такой же результат, который вы получили, когда вы вызвали макрос в этом месте. Макрос - это просто копипаст.
Извините, но здесь немного запутался. Похоже, что сдвигается
logging
, а неdriver
, и ваш вывод, похоже, хочет, чтобы ВСЕ было с отступом больше, чем в шаблоне.