我有一些任务需要分配给delegate_to
一些主机(最终我想将它们列在某个 var 中,而不是使用清单中的组)。对于这个问题,让我们将其简化为(我做了同样的事情,希望它能帮助我找出问题所在):
- name Foo
tamplate:
dest=/path/to/file
src=template.j2
delegate_to: "{{ item }}"
with_items:
- some.host.in.my.domain
这将引发异常:
Exception: host not found: {{ item }}
知道为什么这不起作用吗?如果您需要更多详细信息,请告诉我。提前感谢您的帮助。
答案1
这是某种漏洞在 ansible 1.8.2 中。我在升级之前在其他地方遇到了同样的问题,这些地方都运行正常。
答案2
假设可以使用 with_items 值指定 delegate_to 主机 - 而我不明白为什么它不起作用 - 问题是您不能委托给不存在的主机。
但并非一切都失败了;这里的技巧是在委托给主机之前动态添加主机。尝试使用添加主机将主机添加到 ansible play 中的操作。然后,您就可以委托给他们了。