2016-07-28 45 views
1

我試圖在Ansible中使用vars_prompt,默認值取自事實(或其他先前定義的變量)。該劇本旨在用作初始配置的特別配置。在Ansible的vars_prompt中使用變量作爲默認值

我的劇本:

--- 
- hosts: server01 
    gather_facts: True 
    vars_prompt: 
    - name: new_hostname 
     prompt: please enter the name for the target 
     default: "{{ ansible_hostname }}" 
     private: no 
    tasks: 
    - debug: msg="{{ new_hostname }}" 

當前的結果:

please enter the name for the target [{{ ansible_hostname }}]: 
ERROR! 'ansible_hostname' is undefined 

預期的結果(假設ansible_hostname=server01

please enter the name for the target [server01]: 

是否有可能在Ansible實現

+0

我敢打賭,你在這裏運氣不好。在這個階段沒有主機變量 - 在任何主機完成任何任務(包括設置)之前,提示都是完整的並提出問題。可能是'{{new_hostname |默認(ansible_hostname)}}並且''new'hostname'和'-e'傳遞是一個解決方案。 –

+0

「*在這個階段沒有宿主變量*」 - 問題是:在這個階段是否有任何變量被解釋(似乎任何變量都被視爲一個字符串)。除此之外,我開始懷疑我是否可以在本地創建一個來自j2模板的動態劇本並將其包含在內。 – techraf

+0

快速查看代碼,提示此部分劇本不是模板化的。 –

回答

0

這可以使用pause module

--- 
- hosts: server01 
    gather_facts: True 
    tasks: 
    - pause: 
     prompt: please enter the name for the target [{{ ansible_hostname }}] 
     register: prompt 

    - debug: 
     msg: "{{ prompt.user_input if prompt.user_input else ansible_hostname }}"