如何使用 Ansible 對執行特定任務的使用者進行身份驗證?

如何使用 Ansible 對執行特定任務的使用者進行身份驗證?

當嘗試使用 apt 與 vagrant 用戶在 playbook 中安裝一些依賴項時,我收到「msg:無法鎖定 apt 進行獨佔操作」。我懷疑它告訴我這一點,因為它在運行任務時無法驗證流浪用戶的身份。

這是我正在使用的角色聲明。

- 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 套件安裝過程中提取這些步驟。

相關內容