这是我的剧本,
---
- hosts: alpha
vars:
company: vogo
tasks:
- name: debugging
debug:
msg: "{{ansible_hostname}}"
vars_prompt:
- name: "company"
prompt: "Where do you work"
private: no
- hosts: webservers
vars_prompt:
- name: "fathercompany"
prompt: "Where your father works"
private: no
tasks:
- name: test
debug:
msg: just testing "{{company2}}"
以下是我运行playbook时执行流程的步骤,
1 - 提示1(你在哪里工作)
2 - 任务调试
3 - 提示2(你父亲的工作地点)
4 - 任务测试
我有一些问题。
首先,当我运行此剧本时,应首先运行“调试”任务,然后提示应询问公司名称。但是,当我运行这个剧本时,在第一步,它会询问“你在哪里工作?”。 为什么先提示? 我错过了某种我应该通过的参数吗?
其次,我在这里提出了2个提示,
我想在company
主机块中使用提示值webservers
。但是当我尝试这样做时,它给了我错误。
我不能将一个主机块中的提示值用于另一个主机块吗?
第三,
如何在角色中使用提示?
答案 0 :(得分:7)
vars_prompt
绑定到特定播放,因此您无法直接在其他播放中使用它们。虽然您可以在第一次播放中使用set_fact
为某些主机设置事实,然后通过hostvars
在以后的播放中访问它。
在每次播放开始时执行提示,在vars_prompt
部分之前或之后放置tasks
块无关紧要(毕竟它是YAML字典,其中键序列并不意味着什么。)
我建议不要使用提示,如果您需要一些外部数据,请通过extra variables传递。