2017-03-06 77 views
0

我在内的一些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中,并且查看文档时我找不到哪个变量包含该范围。

回答

1

vars_prompt变量在Play范围内。他们是平等在当前播放的所有主机,并可以通过名字引用:

- debug: var=domain_username 

hostvars持有主机的事实。

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

所以它成为主机的事实,可作为hostvars['some host'].domain_username_fact:如果你需要访问后播放您提示增值经销商,你可以像设置的事实。

+0

感谢您的回答,但这是比我需要的更多的解决方法 – Mene

0

虽然我还没有发现任何文件,我没有找到这个snipped

相关部分是这样的:

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

因此,而不是访问变量为hostvars[inventory_hostname][variable],我可以访问它vars[variable]

+0

您确定这是您需要的吗? '变量[变量]'是一个黑客,并且以这种方式访问​​的变量不是模板化的。访问'vars [variable]'而不是'variable'是什么原因? –

+0

原因是变量包含变量的名称而不是内容,并且在我写的角色中名称是动态的,因为我想在主机上保存变量(类似于facts.d) – Mene

+0

您能否详细说明'变量'是黑客?我只是找不到任何文件。 – Mene