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