如何使用 Ansible 对特定任务的用户进行身份验证?

Hyp*_*cus 2 python configuration ansible

尝试使用 apt 在 playbook 中安装某些依赖项时,我收到“msg:无法锁定 apt 以进行独占操作”,而 vagrant 用户。我怀疑它告诉我这个是因为它在运行任务时无法验证 vagrant 用户。

这是我正在使用的角色声明。

- name: ruby installer
  hosts: all
  sudo: True
  sudo_user: vagrant
  roles:
  - ruby
Run Code Online (Sandbox Code Playgroud)

这是失败的任务:

    - name: Install ruby building dependencies
      apt: name={{ item }} 
           state=installed 
           update_cache=yes

      with_items:
      - dependency
Run Code Online (Sandbox Code Playgroud)

当删除“update_cache=yes”并重新运行剧本时,我得到:E:无法锁定管理目录(/var/lib/dpkg/),你是 root 吗?

显然,当用 root 运行它时它工作得很好,但由于一些 ruby​​(rvm,rbenv 特定)任务,我需要它在不同的用户下运行,而不是 root。

运行我的剧本时如何正确验证流浪用户?有人可以指出我正确的方向吗?

Hyp*_*cus 5

我最终得到了这个角色声明:

- name: ruby installer
  hosts: all
  sudo: True
  user: vagrant
  roles:
  - ruby
Run Code Online (Sandbox Code Playgroud)

这个安装依赖项的任务:

- name: Install ruby building dependencies
  apt: name={{ item }} 
       state=installed 
       update_cache=yes
  sudo_user: root

  with_items:
  -dependency
Run Code Online (Sandbox Code Playgroud)

它现在使用 root 执行 apt 任务,使用 vagrant 执行 playbook 中的其他 ruby​​ 任务。