繁体   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