剧本中的Vars_prompt

Luv*_*eet 1 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}}"
Run Code Online (Sandbox Code Playgroud)

以下是我运行playbook时执行流程的步骤,

1 - 提示1(你在哪里工作)

2 - 任务调试

3 - 提示2(你父亲的工作地点)

4 - 任务测试

我有一些问题.

首先,当我运行这个剧本时,首先应该运行"调试"任务,然后提示应该询问公司名称.但是,当我运行这个剧本时,在第一步,它会询问"你在哪里工作?".为什么先提示?我错过了某种我应该通过的参数吗?

其次,我在这里提出2个提示,

我想companywebservers主机块中使用提示值.但是当我尝试这样做时,它给了我错误.

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

第三,

如何在角色中使用提示?

Kon*_*rov 7

vars_prompt必须特定的播放,所以你不能直接在其他播放中使用它们.虽然您可以set_fact在第一个播放中使用为某些主机设置事实,并在以后的播放中访问它hostvars.

提示在每次播放开始时执行,无论你在哪里放置vars_prompt块 - 在tasks节之前或之后(毕竟它是一个YAML字典,其中键序列并不意味着什么).

我建议不要使用提示,如果你需要一些外部数据,通过额外的变量传递它.

  • 提示通常最适用于敏感数据,例如最好不要使用磁盘,命令行参数之外的密码,以及尽可能超出环境变量的密码. (5认同)