0

我刚刚开始尝试将我的基础架构转移到 Chef,我想我一定遗漏了一些明显的东西。

我正在使用chef-rvm食谱安装 RVM,我希望它安装 Ruby 1.9.3p125 并将其设置为默认值。

这是我的基本服务器角色:

name "base"
description "Basic configuration for all nodes"
run_list(
  'recipe[git]',
  'recipe[sudo]',
  'recipe[ubuntu]',
  'recipe[rvm]',
  'recipe[postgresql::client]'
)

override_attributes(
  :authorization => {
    :sudo => {
      :users => ["ubuntu"],
      :passwordless => true
    }
  },
  :rvm => {
    :rubies => ["ruby-1.9.3-p125"],
    :default_ruby => "ruby-1.9.3-p125",
    :global_gems => ['bundler', 'rake']
  }
)

这运行没有任何问题,但如果我在完成后 ssh 进入服务器,rvm 不会列出任何已安装的 rubies:

ubuntu@test.server:~$ rvm list

rvm rubies


# No rvm rubies installed yet. Try 'rvm help install'.

这甚至是指定安装某些红宝石的正确方法吗?如果没有,正确的方法是什么?如果是这样,我做错了什么?

4

1 回答 1

3

你的代码没有问题。问题在于您从未告诉 Chef 安装您在角色中定义的 Rubies。

您已包含recipe[rvm]在角色的run_list中,转换为recipe[rvm::default]。查看食谱的文档,你会发现这个食谱:

安装 RVM gem 并初始化 Chef 以使用轻量级资源和提供程序 (LWRP)。 如果您只想访问提供的 LWRP,请明确使用此配方。

recipe[rvm]通过替换以下内容可以最好地实现您想要recipe[rvm::system]run_list

在系统范围内安装 RVM 代码库(即,安装到 /usr/local/rvm)并安装红宝石、全局 gem 和驱动属性元数据的特定 gem。这个配方包括默认和系统_安装。 如果您想在 RVM 系统范围内安装 Ruby 等,请单独使用此配方。

于 2013-08-15T12:54:05.007 回答