我已经设置了一个用户david
谁拥有sudo权限。我可以ssh进入箱子并执行sudo操作,如apt-get install
。当我尝试使用Ansible的“成为特权升级”来做同样的事情时,我得到一个permission denied
错误。因此,一个简单的剧本可能是这样的:Ansible非root sudo用户和“成为”特权升级
simple_playbook.yml:
---
- name: Testing...
hosts: all
become: true
become_user: david
become_method: sudo
tasks:
- name: Just want to install sqlite3 for example...
apt: name=sqlite3 state=present
我跑这个剧本用下面的命令:
ansible-playbook -i inventory simple_playbook.yml --ask-become-pass
这让我输入密码的提示,这是我给,我得到以下错误(略):
fatal: [123.45.67.89]: FAILED! => {...
failed: E: Could not open lock file /var/lib/dpkg/lock - open (13:
Permission denied)\nE: Unable to lock the administration directory
(/var/lib/dpkg/), are you root?\n", ...}
为什么我收到PERMIS锡永否认?
信息
我运行Ansible 2.1.1.0和我针对Ubuntu的16.04盒。如果我使用remote_user
和sudo
选项按Ansible < V1.9,它工作得很好,就像这样: remote_user: david sudo: yes
更新
本地和远程用户名是相同的。为了得到这个工作,我只需要指定become: yes
(参见@ techraf的回答):
什么是用户名,您在使用执行第一ssh连接远程用户? –
我认为成为用户是root,改为root大卫,它会起作用。 –
@helloV - 我也尝试添加'成为真正的'任务,结果是一样的。 – DavB