ansible 2.1.2.0Ansible - 有條件時沒有劇本水平vars_prompt工作
我有一個情況這裏,我正在努力檢查和大家看到,如果解決方案甚至可以與Ansible vars_prompt
功能和when
有條件。
Ansible有這個功能叫:vars_prompt,我想俱樂部這與when條件(when: ...
我們通常在任務使用在任務或劇本一級的行動)
PS:我的問題是不是不同這篇文章:Ansible to Conditionally Prompt for a Variable?即我的vars:
變量不依賴於任何機器的OS ENV變量,在我的情況下,我只有一個簡單的硬編碼值vars:
變量。我還在主要劇本級別(而不是在任務級別)運行when條件。
我想要做的就是向用戶提示用於輸入變量的值,只要在命令行中,用戶名爲ansible-playbook install_tool.yml ... ...
與--extra-vars "install_tool=true"
在工作區/ ansible /install_tool.yml我有:
- hosts: all
become: true
gather_facts: false
vars:
instance: test
#install_tool: false
company_api_url: DUMMY_INVALID_URL
vars_prompt:
- name: "company_api_url"
prompt: "Enter Company API URL: "
default: "https://{{ instance }}.company.com"
private: no
when: install_tool == "true" and company_api_url == "DUMMY_INVALID_URL"
# or
#when: ("{{ install_tool }}" == "true" and "{{ company_api_url }}" == "DUMMY_INVALID_URL")
pre_tasks:
- debug: msg="install_tool = {{ install_tool }} and instance = {{ instance }}"
when: install_tool == "true"
我的問題:
我怎樣才能得到上面的條件提示工作(憑有效取代default
值舞會pt變量)和也跳過以提示用戶完全取決於install_tool
變量的值?
我的理解: 在頂層劇本文件(install_tool.yml),我定義一個變量instance
與價值test
。爲何要在vars_prompt部分default
值沒有接test
,當它在劇本關卡的定義(--OR如果什麼用戶通過在命令行instance
變量前取代它的價值:--extra-vars "instance=qa"
在這種情況下,我想要默認值爲[https://qa.company.com]
,我該怎麼做)?我在運行任何語法時都看不到任何錯誤。
我得到下面的輸出(不過我期待一個替代URL值,如:[https://test.company.com]
):
運行:
和時install_tool
設置或者在命令行通過爲
false
它仍然提示甚至
$ ansible-playbook -i "localhost," --connection=local install_tool.yml --extra-vars "install_tool=false instance=qa"
或
$ ansible-playbook -i inventory -l localhost install_tool.yml --extra-vars "install_tool=false"
...
.....some lines here
...
PLAYBOOK: install_tool.yml *******************************************
1 plays in install_tool.yml
Enter Company API URL: [https://{{ instance }}.company.com]:
作爲使用when: ("{{ install_tool }}" == "true" and ...)
條件在vars_prompt
部分,在/爲- name: company_api_url
變量,它沒有錯誤的任何語法問題或等(這意味着,Ansible不認爲這是錯誤的),然後爲什麼,Ansible仍然提示我進入vars_prompts
以上變量,即使我通過--extra-vars "install_tool=false"
- 或 -如果我取消註釋行:install_tool: false
在vars:
部分?
PS:when: ...
條件成功合作時install_tool是真正的pre_tasks
部分,即,它顯示了這些2個變量的值,當install_tool設置爲false,那麼它不運行- debug
一步,並跳過它(這是預期的)。
感謝。
把它歸結爲一個單一的問題,並提出一個可重複的例子。 – ceving
@ceving我改變了我的帖子,這有幫助嗎?我想詳細提供一些解釋。上述install_tool.yml是否在您的最後顯示替代的'default'值,並且當'install_tool'設置爲false時跳過了提示部分? –
https://github.com/ansible/ansible/issues/19777 –