[英]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.