如何使用 Ansible 在特定任务中验证用户身份?

如何使用 Ansible 在特定任务中验证用户身份?

当我尝试使用 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 包安装过程中拉出来。

相关内容