剧本中的Vars_prompt

时间:2017-07-14 10:12:05

标签: ansible

这是我的剧本,

---
- 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。但是当我尝试这样做时,它给了我错误。

我不能将一个主机块中的提示值用于另一个主机块吗?

第三,

如何在角色中使用提示?

1 个答案:

答案 0 :(得分:7)

vars_prompt绑定到特定播放,因此您无法直接在其他播放中使用它们。虽然您可以在第一次播放中使用set_fact为某些主机设置事实,然后通过hostvars在以后的播放中访问它。

在每次播放开始时执行提示,在vars_prompt部分之前或之后放置tasks块无关紧要(毕竟它是YAML字典,其中键序列并不意味着什么。)

我建议不要使用提示,如果您需要一些外部数据,请通过extra variables传递。