2

我簡單ansible劇本執行使用sudo特權任務ansible劇本

- hosts: all 
    remote_user: myusername 
    become: yes 
    become_user: myusername 
    become_method: sudo 
    tasks: 
    - name: Install tmux 
     apt: name=tmux state=present 

我得到下面的錯誤,同時運行的劇本。

TASK: [Install tmux] ********************************************************** 
failed: [104.239.140.237] => {"failed": true} 
stderr: E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied) 
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root? 

我提到http://docs.ansible.com/ansible/become.html升級用戶的特權。

用戶'myusername'屬於sudo組。

$ sudo -l -U myusername 
User myusername may run the following commands on this host: 
    (ALL : ALL) ALL 

我能夠在控制檯上使用以下命令成功安裝tmux。不確定我在執行劇本時是否缺少了什麼。

$ sudo apt-get install tmux 
Reading package lists... Done 
Building dependency tree  
Reading state information... Done 
+0

我認爲,你跑了主機'須藤-l -U myusername'是遠程ansible目標,而不是你正在運行的'ansible-playbook'的人嗎?或者它是同一個主機? –

+0

它是遠程節點。 –

回答

3

我會檢查或修改sudoers文件爲NOPASSWD,你的劇本對我的作品和我看到的唯一區別是:

User myusername may run the following commands on this host: 
    (ALL : ALL) ALL 
    (ALL) NOPASSWD: ALL 

通過Ansible文檔,其狀態確認這是儘可能多:

–become,-b 
run operations with become (no password implied) 

如果你不能改變這個服務器端的配置,你仍然可以使用sudo指令。

http://docs.ansible.com/ansible/become.html