我試圖像/dev/zero
,/dev/null
等使用創建幾個設備下面的代碼:檢查設備是否存在Ansible
- name: mknod devices in default chroot
shell: "mknod -m 0666 {{ item.localdev }} c 1 {{ item.localvalue }}"
args:
creates:{{ item.localdev }}
with_items:
- { localdev: '/var/www/dev/null', localvalue: '3'}
- { localdev: '/var/www/dev/random', localvalue: '8'}
- { localdev: '/var/www/dev/urandom', localvalue: '9'}
- { localdev: '/var/www/dev/zero', localvalue: '5'}
tags: mknod_devices
它,當我執行它的第一次工作,但第二並且每隔一段時間它都會失敗並顯示某個設備已經存在。我檢查另一語法creates
參數和我硬編碼這樣的值:
creates: /var/www/dev/null
現在ansible不失敗,但顯然這不是一個解決方案。有沒有辦法將變量放入creates
參數中?
編輯:要明確,作爲一種解決方法我還可以使用以下shell
語法(測試工作),但我正在尋找一個更簡潔的方案
shell: "if [[ ! -e {{ item.localdev }} ]]; then mknod -m 0666 {{ item.localdev }} c 1 {{ item.localvalue }}; else echo \"{{ item.localdev }} exists, skipping\"; fi"
這個答案錯誤地解釋了pro blem。 ['command'](https://docs.ansible.com/ansible/command_module.html)和['shell'](https://docs.ansible.com/ansible/shell_module.html)都支持'creates''參數。有問題的問題是錯誤的語法沒有錯誤的模塊使用。 – techraf