Ответ 1
Добавьте следующую строку в свой шаблон в первой позиции:
#jinja2: trim_blocks:False
Шаблон выглядит следующим образом:
solr.replication.master=
{% if ansible_eth0.ipv4.address == servermaster.eth0 %}
false
{% else %}
true
{% endif %}
solr.replication.slave=false
И результат должен выглядеть следующим образом:
solr.replication.master=true
solr.replication.slave=false
На самом деле я получаю:
solr.replication.master=truesolr.replication.slave=false
Я понимаю, что Jinja2 разделяет пробелы, и эта возможность, вероятно, настраивает это по умолчанию. Но это не похоже на чек -/+ пробелы.
Есть ли способ заставить разрыв строки?
Добавьте следующую строку в свой шаблон в первой позиции:
#jinja2: trim_blocks:False
Google привел меня сюда, так что оставив этот ответ ради процветания.
Как вы упомянули -/+
теги пробелов не выполняются, а также макросы линии (по крайней мере, не %%
или #
или ##
).
trim_blocks
разрешен в недоступном. Единственное, что я обнаружил, что это работает, заключается в том, что trim_blocks
игнорирует только первую новую строку
Для вашего примера достаточно добавить дополнительную строку новой строки
solr.replication.master={% if ansible_eth0.ipv4.address == servermaster.eth0 %}false{% else %}true{% endif %}
solr.replication.slave=false
Похоже, у вас есть force=no
в незанятой пьесе, поэтому файл не будет перезаписан.
Я считаю, что использование фильтра ternary
может помочь.
solr.replication.master={{ (ansible_eth0.ipv4.address == servermaster.eth0) | ternary('false', 'true') }}
solr.replication.slave=false
У меня была такая же проблема. Я решил это, добавив
{{''}}
до конца строки, например:
solr.replication.master={% if ansible_eth0.ipv4.address == servermaster.eth0 %}false{% else %}true{% endif %}{{''}}
Вставляет пустой строковый литерал с побочным эффектом, который не разделяет пробелы.