【问题标题】:Puppet can't find bundler commandPuppet 找不到捆绑程序命令
【发布时间】:2013-07-03 02:46:59
【问题描述】:

我在 Vagrant 中使用 puppet,但在使用 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 rehash 事件并检查插件的清单表明它应该在运行和 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,
} ->

我知道这条路有点矫枉过正。

关于我接下来可以尝试什么的任何想法?我没有想法。

【问题讨论】:

  • 对 rbenv 了解不多。默认 shell 可能是非交互模式下的 sh。 rbenv 是否与 bashrc 或 bash_profile 一起玩?需要获取特定于 rbenv 的脚本吗?在/bin/bash -l ... 中尝试您的命令
  • @Samuel 你找到解决方案了吗?我面临着完全相同的问题,您的问题是热门搜索结果之一。
  • 嘿弗兰克,刚刚看到你的回复。我必须以某种方式修复它,但我不确定我做了什么。我隐约记得 puppet 自动加载的一些命名问题,需要我重命名一些已签出的文件夹。如果有帮助,这是我的工作 Vagrant/Puppet 配置,用于获取 Ruby 设置。 gist.github.com/Rodeoclash/9165217

标签: puppet


【解决方案1】:

在尝试执行 bundler 之前确保所有 gem 设置完成很重要,例如

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

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

【讨论】:

    猜你喜欢
    • 2015-07-08
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2012-12-03
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    相关资源
    最近更新 更多