远程服务器上的ansible特权问题

时间:2016-10-10 14:36:34

标签: ansible ansible-playbook ansible-2.x

我正在运行以下任务,使用Ansible 2.1在ubuntu 14操作系统上运行debian软件包,但是下面复制了异常。远程用户在远程计算机上具有sudo权限。

- name: run dpkg
  shell: dpkg -i {{ debian_build.stdout }}
  become: true
  become_user: ubuntu 
  become_method: sudo

错误

fatal: [testserver]: FAILED! => {"changed": true, "cmd": "dpkg -i /home/ubuntu/test-server_0.1.0-7c47d103f8da21045e3ee817529eb84a0aa79723_all.deb", "delta": "0:00:00.002444", "end": "2016-10-10 14:33:32.014887", "failed": true, "rc": 2, "start": "2016-10-10 14:33:32.012443", "stderr": "dpkg: error: requested operation requires superuser privilege", "stdout": "", "stdout_lines": [], "warnings": []}

1 个答案:

答案 0 :(得分:2)

因为这个;

become: true
become_user: ubuntu 
become_method: sudo

是否在shell上执行此操作:

myuser$ sudo su ubuntu
ubuntu$

您正在使用sudo切换到非特权用户帐户。 " Ubuntu的"没有调用sudo就没有运行dpkg的权限,这就是为什么你的playbook在你的shell命令中放置sudo的原因。

根据Ansible最佳做法,您也不应该使用“转换为非特权用户”: http://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user

例如,您应该使用remote_user作为正确的用户运行此playbook。