当我尝试使用 apt 以 vagrant 用户身份在剧本中安装某些依赖项时,我收到“消息:无法锁定 apt 以进行独占操作”。我怀疑它告诉我这个是因为它在运行任务时无法验证 vagrant 用户的身份。
这是我正在使用的角色声明。
- name: ruby installer
hosts: all
sudo: True
sudo_user: vagrant
roles:
- ruby
这是失败的任务:
- name: Install ruby building dependencies
apt: name={{ item }}
state=installed
update_cache=yes
with_items:
- dependency
当删除“update_cache=yes”并重新运行剧本时,我收到:E:无法锁定管理目录(/var/lib/dpkg/),您是 root 吗?
显然,当使用 root 运行它时,它可以正常工作,但由于某些 ruby(rvm、rbenv 特定)任务,我需要它在 root 以外的其他用户下运行。
运行剧本时,如何正确验证流浪者用户?有人能给我指出正确的方向吗?
答案1
我最终得到了这个角色宣言:
- name: ruby installer
hosts: all
sudo: True
user: vagrant
roles:
- ruby
这个任务用于安装依赖项:
- name: Install ruby building dependencies
apt: name={{ item }}
state=installed
update_cache=yes
sudo_user: root
with_items:
-dependency
它现在使用 root 执行 apt 任务,并使用 vagrant 执行剧本中的其他 ruby 任务。
答案2
apt
安装系统级软件包,因此使用 apt 需要与 root 同等的权限。
如果您需要以不同的用户身份执行进一步的应用程序部署步骤,则需要将这些步骤从 deb 包安装过程中拉出来。