在ansible中,我在远程机器上做了一些代码,然后我想使用vars_prompt
的结果再次在不同的主机上。我四处搜索,文档表明我应该使用 {{ hostvars.local_server_name_in_vagrant_group.local_username }}
,使用我下面的示例来设置上下文。但是,它说在引用 hostvars
时字典中的索引不存在。 .相反,如下所示,我只是做了一个 vars_prompt
两次。总的!有小费吗?
顺便说一句,还有关于使用 vars_prompt 是否是一个好主意的讨论。我已经确认,对于我的使用,我确实想使用 vars_prompt。谢谢!
- hosts: vagrant
vars_prompt:
local_username: "enter your desired local username"
... remote task activity using local_username...
- hosts: localhost
connection: local
vars_prompt:
local_username: "enter your desired local username, again (please)
... host task activity, also using local_username ...
最佳答案
正如我在对问题的评论中所说:
您可以使用 set_facts 将您的变量注册为当前主机的事实,并从不同的主机访问它。我不认为标准变量存储在角色/任务之后。
这是一个例子:
- name: First
connection: local
hosts: host1
tasks:
- name: register real root user to localhost facts
set_fact: fact_for_host1="1"
- name: Second
connection: local
hosts: host2
tasks:
- debug: msg="{{ hostvars['host1']['fact_for_host1'] }}"
请注意
connection: local
仅用于本地测试目的。
关于ansible - 如何使用 vars_prompt 在主机之间共享 ansible 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31177635/