Я получаю сообщение об ошибке из-за одной из задач, которые выполняет моя книга воспроизведения, и я не могу определить, что не так. Задача воспроизводится около 200 раз, и ошибка появляется только один раз, каждый раз в одном и том же определении. Хост определяется благодаря этой задаче, он только выполняет пересечение между двумя списками, и общие элементы в двух списках удаляются. Хост случайным образом выбирается в окончательный список.
Ansible версия: ansible 2.8.0 Python: python версия = 3.6.8
- name: "test source host reachability"
shell: |
export from_host="{% if groups[definition['from_group']] | intersect(groups[definition['to_group']]) | length > 0 %}{{ lin_poweredon | difference(groups[definition['to_group']]) | intersect(groups[definition['from_group']]) | random }}{% else %}{{ lin_poweredon | intersect(groups[definition['from_group']]) | random }}{% endif %}"
{{ playbook_dir }}/../binaries/nc -vz ${from_host} 22
rc=$?
if [ $rc -eq 0 ]; then
echo ${from_host}
fi
register: nc_source_result
until: nc_source_result.rc == 0
retries: 3
delay: 3
delegate_to: localhost
fatal: [localhost]: FAILED! =>
msg: |-
The task includes an option with an undefined variable. The error was: Unable to look up a name or access an attribute in template string ({%ifgroups[definition['from_group']] | intersect(groups[definition['to_group']]) | length > 0 %}
export from_host="{{ lin_poweredon | difference(groups[definition['to_group']]) | intersect(groups[definition['from_group']]) | random }}"
{%else%}
export from_host="{{ lin_poweredon | intersect(groups[definition['from_group']]) | random }}"
{%endif%}
{{ playbook_dir }}/../binaries/nc -vz ${from_host} 22
rc=$?
if [ $rc -eq 0 ]; then
echo ${from_host}
fi
).
Make sure your variable name does not contain invalid characters like '-': argument of type 'AnsibleUndefined' is not iterable
Это синтаксис неверен в какой-либо момент?