Объединить строки в Jinja?

Я пытаюсь объединить строки в состоянии, и мне не очень повезло. Я видел сообщения, предлагающие использовать (|join), но все мои строки не находятся в одном словаре. Вот мой код:

sshd_content:
  file.line:
{% set admin_groups = '' %}
{% for app in grains['application_groups'] %}
{% for group in pillar['admin_users'][app]['members'] %}
{% set admin_groups = admin_groups ~ ' ' ~ group ~ '@mydomain.com' %}
{% endfor %}
{% endfor %}
    - name: /etc/ssh/sshd_config
    - match: AllowGroups wheel fred
    - mode: replace
    - content: AllowGroups wheel fred bob {{ admin_groups }}

Я тоже безуспешно пытался использовать + вместо ~.

Что я делаю неправильно?

Это состояние работает нормально:

sudoers_asmgroups_content:
  file.append:
    - name: /etc/sudoers.d/mygroups
    - text:
{% for app in grains['application_groups'] %}
  {% for group in pillar['admin_users'][app]['members'] %}
      - '%{{ group }}@mydomain.com ALL=(ALL) ALL'
  {% endfor %}
{% endfor %}

person michmill    schedule 22.01.2018    source источник
comment
Как выглядит результат? Есть ли ошибки в логах мастера/миньона?   -  person dahrens    schedule 22.01.2018
comment
Нет никаких ошибок ни в /var/log/salt/minion на цели, ни в /var/log/salt/master на мастере. {{ admin_groups }} пусто.   -  person michmill    schedule 23.01.2018
comment
Что интересно, так это то, что состояние непосредственно над этим работает нормально. ` sudoers_asmgroups_content: file.append: - имя: /etc/sudoers.d/mygroups - текст: {% для приложения в зернах['application_groups'] %} {% для группы в столбце['admin_users'][приложение][' участников'] %} - '%{{ группа }}@mydomain.com ALL=(ALL) ALL' {% endfor %} {% endfor %} `   -  person michmill    schedule 23.01.2018
comment
Я добавил это к вашему вопросу, форматирование добавленного фрагмента такое же, как в вашем штате?   -  person dahrens    schedule 23.01.2018


Ответы (1)