4

我将 puppet 与 Vagrant 一起使用,但在使用 rbenv 设置 Ruby 安装方面存在一些问题。

Ruby 安装良好(我正在使用插件:https ://forge.puppetlabs.com/jdowning/rbenv安装 ruby​​ + gems,如下所示:

rbenv::plugin { 'sstephenson/ruby-build': } ->
rbenv::build { '1.9.3-p392': global => true } ->
rbenv::gem { 'bundler': ruby_version => '1.9.3-p392' } ->

但是,运行此命令后,Puppet 无法在 rbenvs shim 文件夹下找到 bundler 命令。我可以看到 rbenv 重新散列事件并检查插件的清单表明它应该在运行和 gem 安装等之后重新散列二进制文件。

如果我 ssh 到机器,“哪个捆绑器”会找到二进制文件的路径。同样,重新运行 puppet 脚本可以正常工作并安装一切正常。

目前我正在使用以下命令:

exec { "bundle install":
    user => $app_user,
    group => $app_group,
    command => "bundle install",
    path => [ '/bin/', '/sbin/', '/usr/bin/', '/usr/sbin/', "/home/${app_user}/.rbenv/bin/", "/home/${app_user}/.rbenv/shims/" ],
    cwd => $app_root,
} ->

我知道这条路太过分了。

关于下一步我可以尝试什么的任何想法?我没主意了。

4

1 回答 1

0

在您尝试执行捆绑程序之前,请务必确保所有 gem 设置已完成,例如

exec { "bundle install": require => Rbenv::Gem["..."], ... }

否则,rehash 资源可能会在您的 exec 之后被评估。

于 2014-04-04T09:16:53.437 回答