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