2017-09-30 38 views
1

我在項目上使用Vagrant + Ansible。我想讓用戶可選擇提供一個名爲「工作空間」的角色,該角色將包含在配置中。這允許用戶設置自己的首選提示,編輯等是否可以忽略Ansible中的缺失角色?

如果在劇本中指定了一個不存在的角色,整個事情崩潰,

錯誤!沒有找到角色'工作區'...

我想簡單地忽略它並繼續前進。我試着加入failed_when: false,但毫不奇怪它沒有效果。有可能制定一個when: ...條件來檢查角色是否存在?或者有另一種方法可以很好地解決這個問題嗎?

回答

0

查看關於Conditionals的可靠文檔,我不認爲可以直接檢查角色是否存在。

通過檢查該角色的目錄是否存在將變得有點棘手,因爲有多個地方可以搜索角色,有些則基於當前平臺,環境或配置。

這就是說,我嘗試了一下看起來有點不同的方法:不要堅持預定義的角色名稱,而是可以通過一個可變變量來請求角色名稱。然後你可以像這樣包含這個角色:

- name: Minimal playbook example 
    hosts: localhost 
    connection: local 
    vars: 
    role_name: "" 
    roles: 
    - role: "{{ role_name }}" 
     when: role_name != "" 

當用戶沒有提供它自己的角色名稱時,這個角色不包括在內。還要注意,爲了這個工作,你需要爲角色名變量指定一個默認值,否則這個負責人會在未定義的變量上失敗(添加is defined檢查when子句不起作用)。

相關問題