Возможная проблема: Ошибка преобразования строк списка в верхний регистр [объект генератора do_map at] - PullRequest
0 голосов
/ 25 сентября 2019

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

Переменные :

container_group: sistemas
container_name:
  - template-01
  - template-02

Содержание роли :

- name: Create sudoer file for tomcat container management
  template:
  src: sistemas.j2
  dest: /etc/sudoers.d/sistemas
  owner: root
  group: root
  mode: 0440
  validate: visudo -c -f %s

Шаблон Jinja :

#{{ ansible_managed }}

{% for instance in container_name %}
Cmnd_Alias {{ instance | upper }} = /usr/bin/systemctl restart tomcat@{{ instance }}, /usr/bin/systemctl stop tomcat@{{ instance }}, /usr/bin/systemctl start tomcat@{{ instance }}
{% endfor %}

%{{ container_group }} ALL=(ALL) NOPASSWD: {{ container_name | map('upper') | join (', ') }}

Ожидаемый результат:

Cmnd_Alias TEMPLATE-01 = /usr/bin/systemctl restart tomcat@template-01, /usr/bin/systemctl stop tomcat@template-01, /usr/bin/systemctl start tomcat@template-01

Cmnd_Alias TEMPLATE-02 = /usr/bin/systemctl restart tomcat@template-02, /usr/bin/systemctl stop tomcat@template-02, /usr/bin/systemctl start tomcat@template-02

%sistemas ALL=(ALL) NOPASSWD: TEMPLATE-01, TEMPLATE-02

Реальный результат:

Cmnd_Alias <generator object do_map at 0x7fac65dd70d0> = /usr/bin/systemctl restart tomcat@template-01, /usr/bin/systemctl stop tomcat@template-01, /usr/bin/systemctl start tomcat@template-01

Cmnd_Alias <generator object do_map at 0x7fac65dd70d0> = /usr/bin/systemctl restart tomcat@template-02, /usr/bin/systemctl stop tomcat@template-02, /usr/bin/systemctl start tomcat@template-02

%sistemas ALL=(ALL) NOPASSWD: TEMPLATE-01, TEMPLATE-02

2019/09/29 - Обновление:

Я добавил отладку впоказать выходные данные шаблона при получении значений переменных.

Однако возникает ошибка проверки.

- name: Exibe o resultado do template jinja
  debug:
    msg: "{{ lookup('template', 'sistemas.j2') }}"

Изображение, показывающее наиболее подробную ошибку

...