你能在运行ansible的机器上设置变量,而不是在主机上吗?

Can you set variables on the machine that runs ansible, not the host?

(预先警告:新手问题如下):

我目前正在调试创建两个新主机的剧本,从负载均衡器中删除两个旧主机,然后将两个新主机添加到负载均衡器。我们已将其中许多剧本分离到它们自己的剧本文件中,并将它们包含在顶级剧本中。

我希望能够在一次播放中更早地设置两个新主机的列表,并将其保留在机器上 运行在这些嵌套播放之间保持稳定,以便稍后我可以 运行 一个抓取当前在负载均衡器中的旧主机列表的play,然后使用我之前设置的新主机列表将它们添加到LB,然后使用旧主机列表将它们从LB中删除.据我所知,这是最好的方法,因为 Rackspace 的 rax_clb_nodes 模块从本地主机对负载均衡器进行更改。

A.) 这是实现此目标的最佳方法吗?

B.) 最好的方法是什么?

set_fact 设定的事实在 Play 之间保持不变。
因此,您可以为 localhost 设置事实,然后稍后将其用作 {{ hostvars['localhost']['my_custom_fact'] }}.

请阅读 Magic Variables – 例如如果您将新主机放入单独的清单组中,则可以遍历该组。