отключить `trim_blocks` для модуля` blockinfile` - PullRequest
1 голос
/ 27 апреля 2019

Шаблонный модуль в Ansible 2.7 позволяет отключить установку jinja2 trim_blocks.

Мне нужно отключить этот параметр для модуля blockinfile , но не найти никакой информации об этом. Я даже пытался использовать плагин для поиска шаблонов с любым видом.

Есть ли способ отключить это в игре для blockinfile?

Мне это нужно для дополнительного контроля пробелов. Рассмотрим, например, следующий (упрощенный и урезанный) шаблон для файла конфигурации SSH:

{%- for host in groups.linux %}
{%- set vars = hostvars[host] %}
Host {{ vars.inventory_hostname_short }}
{#- add the fqdn as alias if present #}
{%- if host != vars.inventory_hostname_short %} {{ host }}{% endif %}
Hostname {{ vars.ansible_ssh_host }}
IdentityFile {{ vars.ansible_ssh_private_key_file }}
{% endfor %}

Это позволяет мне контролировать одну пустую строку между записями и добавлять содержимое (в данном случае fqdn) к предыдущей строке. При включенном trim_blocks мне нужно будет объединять строки в переменные, или есть лучший способ добиться чего-то подобного?

1 Ответ

1 голос
/ 27 апреля 2019

Возможно настроить шаблон

> cat my_template.j2
#jinja2: trim_blocks:False
{%- for host in groups.linux %}
(continue)

и используйте его в blockinfile

- blockinfile:
    block: "{{ lookup('template', 'my_template.j2') }}"
  (continue)
...