我有一本设置 web 服务器的剧本。在这个剧本中,我想知道数据库服务器的本地网络 ip 地址。
所有这些服务器都在我的库存文件中。
我怎样才能做到这一点?
我尝试使用 hostvars,但它们只有本地服务器事实。
答案1
主机变量和远程变量
可以使用 hostvars 引用远程服务器上的变量。例如,假设您正在 web-servers 组中的服务器上运行一个剧本。您可以在剧本中引用 db-server 上的变量,如下所示:
{{ hostvars['db-server.example.com']['ansible_default_ipv4']['address'] }}
请注意,要使此功能正常工作,您必须已经在当前剧本或剧本中更高级别的剧本中与 db-server.example.com 进行了对话。 Ansible 1.8(在撰写本文时仍在开发中)将通过实现可选的事实缓存,这将允许您在剧本运行之间保存事实。