[英]How to configure Bundler via Chef?
我們使用 Chef 來設置和執行 Bundler。 我們之前在bash
資源中運行bundle install
,並將user
和group
屬性設置為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運行,這就是錯誤的原因。 我認為你在這里有兩個選擇:
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.