我正在致力於Ansible playbook以執行我的一些任務。在我的一個任務中,我需要切換到特定的目錄,然後使用sudo執行命令,但是我需要先切換到root用戶來完成所有這些操作,否則它將無法工作。所以一般這是我做的不ansible:通過切換到root用戶執行命令
[email protected]:/tmp/parallel-20140422$ sudo su
[email protected]:/tmp/parallel-20140422# sudo ./configure && make && make install
完成以上步驟之後,我看到GNU並行庫安裝到我的系統正常。但通過使用Ansible的以下步驟,我沒有看到我的GNU庫被安裝。
- name: install gnu parallel
command: chdir=/tmp/parallel-20140422 sudo ./configure && make && make install
現在我的問題是如何切換到root用戶並執行特定的命令。我正在運行Ansible 1.5.4,看起來像我無法升級。我甚至低於嘗試,但它仍然無法正常工作:
- name: install gnu parallel
command: chdir=/tmp/parallel-20140422 sudo ./configure && make && make install
sudo: true
sudo_user: root
我使用下面的命令運行我的劇本:
ansible-playbook -e 'host_key_checking=False' setup.yml -u david --ask-pass --sudo -U root --ask-sudo-pass
我不確定關於1.5.4,但是在Ansible 2.x中,當你想執行任意shell表達式時,你應該使用'shell'而不是'command'。爲什麼在'root'帳戶下使用'sudo',你已經擁有最大的權限? –
是真正的使用sudo如果我已經切換到根。如果我已經切換到root用戶,我可以更改該部分以不再使用sudo。 – john
我知道命令模塊工作正常bcoz我驗證了其他任務,他們工作正常..不知何故這個任務的問題是我需要切換到root用戶,然後只執行該命令。而且我不確定我該如何使用可靠的方法來做到這一點。 – john