簡體   English   中英

如何通過 Chef 配置 Bundler?

[英]How to configure Bundler via Chef?

我們使用 Chef 來設置和執行 Bundler。 我們之前在bash資源中運行bundle install ,並將usergroup屬性設置為target_user (捆綁操作旨在以此用戶身份運行)。

由於一些選項的折舊(即--deployment--path--without ),我們現在需要配置它們通過bundle config

但是,似乎在使用相同的資源配置時,Bundle 無法按預期工作; 我們得到Bundler::SudoNotPermittedError: Bundler requires sudo access to install... ,我想這是因為配置文件沒有存儲在正確的位置,和/或讀取。

execute資源應該如何配置? 目前,它是:

# Simplified version
bash "Install gems" do
  code <<~EOF
    bundle config --local deployment true &&
    bundle config --local path /path/to/gems_dir &&
    bundle install --gemfile=/path/to/Gemfile
  EOF

  user "target_user"
  group "target_user"
end

您將此bash資源作為target_user運行,這就是錯誤的原因。 我認為你在這里有兩個選擇:

  1. 從資源中刪除用戶和組,然后它將以 root 身份運行。
  2. 在每次的管束命令前加sudo code ,並確保TARGET_USER是sudoer,沒有密碼。

事實證明,在設置user / group時,Chef 不會導出環境(變量),因此如果想要擁有完全預設的環境,則需要通過env屬性手動設置一些變量。

完成任務的最低預設如下:

bash "Bundle..." do
  code "bundle ..."
  user "user"
  group "user"
  env({
    "HOME"     => "/home/user",
    "USER"     => "user",
    "USERNAME" => "user",
    "PWD"      => "/home/user",
  })
end

還有其他變量,但我想它們對於絕大多數命令來說並不重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM