Ubuntu
目前使用者在 ansible 上無法寫入目標目錄(/etc)
我
Ansible-2.0
在 linux 機器上使用,我希望使用 ansible 在遠端機器上更改 DNS,如下所示:--- # tasks file for test - name: Change dns become: yes become_user: admin replace: dest: /etc/resolv.conf regexp: '192.168.1.24' replace: '8.8.8.8'
輸出:
$ ansible-playbook -i "mn," test.yml TASK [test : Change dns] ******************************************************* fatal: [mn]: FAILED! => {"changed": false, "failed": true, "msg": "The destination directory (/etc) is not writable by the current user."} PLAY RECAP ********************************************************************* mn : ok=1 changed=0 unreachable=0 failed=1
在遠端機器上,管理員是 sudo 使用者,在這裡我不想更改
sudo
遠端機器上的設置,是否有任何方法可以使用任務(腳本)傳遞密碼,而不是使用命令行。
您應該配置
admin
為remote_user
,而不是become_user
。該become_user
選項設置您su
要執行某些任務的使用者。換句話說,你的劇本應該是這樣的:--- - hosts: somehosts remote_user: admin roles: .... #tasks file --- # tasks file for test - name: Change dns become: yes replace: dest: /etc/resolv.conf regexp: '192.168.1.24' replace: '8.8.8.8'
這樣,管理員使用者將用於建立您的 ssh 會話,但對於
Change dns
任務將使用sudo
.此外,如果
admin
需要 sudo 的密碼,您將必須像這樣執行您的劇本:ansible-playbook -i mn test.yml -K
開關將
-K
提示您輸入 sudo 密碼admin
。