Ansible 剧本中的Vars_提示

Ansible 剧本中的Vars_提示,ansible,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 va

这是我的剧本

---
- 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}}"
以下是我运行剧本时执行流程的步骤

---
- 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}}"
1-提示1(您在哪里工作)

2-任务调试

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

4-任务测试

我有一些问题

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

第二,我在这里放了两个提示

我想在
webserver
主机块中使用提示值
company
。但当我尝试这样做时,它给了我错误

我不能将提示值从一个主机块使用到另一个主机块吗

第三,


如何在角色中使用提示?

vars\u prompt
绑定到特定的剧目,因此不能直接在其他剧目中使用。尽管您可以在第一个播放中使用
set\u fact
为某些主机设置事实,并在以后的播放中通过
hostvars
访问它

提示在每次播放开始时执行,无论您将
vars_prompt
block放置在何处,都是在
tasks
部分之前或之后执行的(毕竟这是一个YAML字典,其中键序列没有任何意义)


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

提示通常最适合于敏感数据,如最好不使用磁盘、命令行参数和环境变量(如果可能)的密码。