Это мой Ansible playbook для обновления файла / etc / hosts:
- name: Update /etc/hosts file
hosts: "{{ target_hosts }}"
remote_user: awx
become: yes
become_method: sudo
tasks:
- debug:
msg: 'show me the variable: {{ target_hosts }}'
- name: Update /etc/hosts file
template: src=../../templates/hosts.j2 dest=/etc/hosts
А это шаблон jinja:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
{% for item in groups['"{{ target_hosts }}"'] %}
{{ hostvars[item]['ansible_ssh_host'] }} {{ hostvars[item]['openstack']['name'] }}
{% endfor %}
Все работает нормально, если я установил статическое значениев шаблоне (например, для элемента в группах [' my-server-group ']), но я хотел бы использовать переменную, динамически передаваемую в playbook.
ОшибкаЯ получаю это:
AnsibleUndefinedVariable: 'dict object' has no attribute '\"{{ target_hosts }}\"'"
С сообщением об отладке я уверен, что playbook получает параметр:
> "msg": "show me the variable: my-server-group".
Может быть, шаблон j2 нет?
синтаксис неправильный?Я пробовал оба с кавычками, двойными кавычками и комбинацией двух.