在 Puppet 清单中使用 RVM

在 Puppet 清单中使用 RVM

我目前正在深入研究 Puppet,在处理多个清单时,我遇到了与安装的 ruby​​ 版本或 ruby​​gems 有关的问题。我猜其他人可能也会遇到这样的问题。由于我无法通过 Google 找到正确的指针,我想问一下是否有人有使用 RVM 和 Puppet 并在 RVM 提供的特定 gemset 中运行 Bundler 和 Passenger 的好例子。

我试过puppet-rvm来自 blt04,但它无助于在 RVM gemset 中运行 bundler,而且我找不到有关配置 ruby​​ 应用程序在 RVM 上下文中运行的信息(例如使用项目 .rvmrc)

答案1

class rails::rvm {
    package { [ "autoconf",
                "bison",
                "curl",
                "libreadline-dev",
                "subversion",
                "zlib1g-dev" ]: ensure => installed }

file { "/usr/local/bin/rvm-install-system-wide":
    source => "puppet:///modules/rails/rvm-install-system-wide",
    mode => "700",
}

exec { "install-rvm":
    command => "/usr/local/bin/rvm-install-system-wide",
    creates => "/usr/local/bin/rvm",
    require => [ Package["curl"], Package["subversion"], File["/usr/ local/bin/rvm install-system-wide"] ],
    logoutput => on_failure,
    }

append_if_no_such_line { "setup-rvm-shell-environment":
    file => "/etc/bash.bashrc",
    line => "[[ -s /usr/local/rvm/scripts/rvm ]] && . /usr/local/ rvm/scripts/rvm",
}
}

答案2

我所做的是将需要运行 rvm 的用户添加到 rvm 组,然后在所有可执行文件前面加上前缀rvm do。看看我的gitorious 模块—— 到处都有 rvm 的东西。

相关内容