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
我使用以下命令运行此playbook:
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",...}
为什么我被拒绝了?
附加信息
我正在运行Ansible 2.1.1.0并且我的目标是Ubuntu 16.04.如果我按照Ansible<使用remote_user和sudo选项v1.9,它工作正常,像这样: remote_user:davID
sudo:是的
更新
本地和远程用户名是相同的.为了使这个工作,我只需要指定成为:是(请参阅@ techraf的答案):
解决方法Why am I getting permission denIEd?
因为APT需要root权限(请参阅错误:你是root用户吗?)并且您正在以davID身份运行任务.
根据这些设置:
become: truebecome_user: davIDbecome_method: sudo
Ansible使用sudo方法成为大卫.它基本上使用sudo davID运行其Python脚本.
the user ‘davID’ on the remote Box has sudo privileges.
这意味着davID可以使用sudo-executable执行命令(部分或全部)来更改子进程(命令)的有效用户.如果没有给出用户名,则此进程以root帐户运行.
比较这两个命令的结果:
$sudo whoamiroot$sudo davID whoamidavID
回到APT问题,您(从Cli)以及Ansible(使用您的帐户使用SSH连接)需要运行:
sudo apt-get install sqlite3
不:
sudo davID apt-get install sqlite3
这将失败显示Ansible非常确切的消息.
默认情况下,以下playbook将升级为root用户:
---- name: Testing... hosts: all become: true tasks: - name: Just want to install sqlite3 for example... apt: name=sqlite3 state=present总结
以上是内存溢出为你收集整理的Ansible非root sudo用户和“成为”特权升级全部内容,希望文章能够帮你解决Ansible非root sudo用户和“成为”特权升级所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)