我在項目上使用Vagrant + Ansible。我想讓用戶可選擇提供一個名爲「工作空間」的角色,該角色將包含在配置中。這允許用戶設置自己的首選提示,編輯等是否可以忽略Ansible中的缺失角色?
如果在劇本中指定了一個不存在的角色,整個事情崩潰,
錯誤!沒有找到角色'工作區'...
我想簡單地忽略它並繼續前進。我試着加入failed_when: false
,但毫不奇怪它沒有效果。有可能制定一個when: ...
條件來檢查角色是否存在?或者有另一種方法可以很好地解決這個問題嗎?
我在項目上使用Vagrant + Ansible。我想讓用戶可選擇提供一個名爲「工作空間」的角色,該角色將包含在配置中。這允許用戶設置自己的首選提示,編輯等是否可以忽略Ansible中的缺失角色?
如果在劇本中指定了一個不存在的角色,整個事情崩潰,
錯誤!沒有找到角色'工作區'...
我想簡單地忽略它並繼續前進。我試着加入failed_when: false
,但毫不奇怪它沒有效果。有可能制定一個when: ...
條件來檢查角色是否存在?或者有另一種方法可以很好地解決這個問題嗎?
查看關於Conditionals的可靠文檔,我不認爲可以直接檢查角色是否存在。
通過檢查該角色的目錄是否存在將變得有點棘手,因爲有多個地方可以搜索角色,有些則基於當前平臺,環境或配置。
這就是說,我嘗試了一下看起來有點不同的方法:不要堅持預定義的角色名稱,而是可以通過一個可變變量來請求角色名稱。然後你可以像這樣包含這個角色:
- name: Minimal playbook example
hosts: localhost
connection: local
vars:
role_name: ""
roles:
- role: "{{ role_name }}"
when: role_name != ""
當用戶沒有提供它自己的角色名稱時,這個角色不包括在內。還要注意,爲了這個工作,你需要爲角色名變量指定一個默認值,否則這個負責人會在未定義的變量上失敗(添加is defined
檢查when子句不起作用)。