我一直在尝试在 Atlas 上构建我的 Vagrant 配置。我还使用 ansible 进行配置,并且遇到了一些 sudo 问题。
在尝试在 Atlas 上运行 ansible playbook 时设置 VM 后,出现此错误:
virtualbox-iso: failed: [127.0.0.1] => {"failed": true, "item": ""}
virtualbox-iso: msg: Failed to lock apt for exclusive operation
所以我在网上发现 sudo 权限可能是问题所在。在我的主剧本文件中,权限设置为:
sudo: true
remote_user: vagrant
运行 playbook 后,当我需要 sudo 权限时,整个事情就中断了,在 playbook 中的这个 cmd 上:
-name: Update apt
sudo: yes
apt: update_cache=yes
有人知道如何解决这种情况吗?如何修复 ansible 上的 sudo 权限?
注意。当我尝试在本地构建这台机器时,它运行良好,但当我在 Atlas 上运行它时,我遇到了问题。
更新:我相信 sudo 访问是一个真正的问题,我已经删除了该部分配置,但它在需要 sudo 的其他部分仍然失败。
virtualbox-iso: failed: [127.0.0.1] => (item=curl,wget,python-software- properties) => {"failed": true, "item": "curl,wget,python-software-properties"}
virtualbox-iso: stderr: E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
virtualbox-iso: E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
答案1
Failed to lock apt for exclusive operation
意味着其他应用程序正在持有 apt 锁。也许系统上正在运行其他安装进程?
检查ps aux | grep apt
输出中是否存在可疑进程。
错误消息也可能是由于权限不足造成的。您可能需要检查 Ansible 用户是否通过 sudo 获得完全 root 访问权限。要检查,请使用 打开主机上的 sudoers visudo
。您应该看到类似这样的一行
ansible_user ALL=(ALL) NOPASSWD: ALL