以编程方式从vars_promt访问播放变量

时间:2017-03-06 15:20:43

标签: ansible

我有一个包含一些vars_promt

的剧本
vars_prompt:
  - name: domain_username
    prompt: "Domain username? (firstname.lastname)"
    private: no
  - name: domain_password
    prompt: "Domain password?"
    private: yes
  - name: pref_editor
    prompt: "[A]tom or [V]isual Studio Code?"
    private: no

我现在想以编程方式访问这些变量,例如

hostvars[inventory_hostname][variable]

其中variable例如domain_username

但是vars_prompt中的变量不包含在hostvars中,查看文档时我无法找出哪个变量具有该范围。

2 个答案:

答案 0 :(得分:1)

vars_prompt个变量位于Play范围内。它们对于当前播放中的所有主机是相同的,并且可以通过名称引用:

- debug: var=domain_username

hostvars拥有主持人的事实。如果您需要在以后的播放中访问提示变量,可以设置如下事实:

- set_fact:
    domain_username_fact: "{{ domain_username }}"

因此它成为主持人的事实,并以hostvars['some host'].domain_username_fact提供。

答案 1 :(得分:0)

虽然我还没找到任何文档,但我确实找到了snipped

相关部分是:

Module Variables ("vars"):
--------------------------------
{{ vars | to_nice_json }} 

因此,我可以hostvars[inventory_hostname][variable]

访问该变量而不是vars[variable]