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 はインストールされている ruby​​ を一覧表示しません。

ubuntu@test.server:~$ rvm list

rvm rubies


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

これは、特定の ruby​​ をインストールすることを指定する正しい方法ですか? そうでない場合、正しい方法は何ですか?もしそうなら、私は何を間違っていますか?

4

1 に答える 1

3

コードに問題はありません。問題は、ロールで定義した Ruby をインストールするよう Chef に指示しなかったことにあります。

あなたはrecipe[rvm]役割のrun_listに含まれています。これは に変換されrecipe[rvm::default]ます。クックブックのドキュメントを調べると、次のレシピが見つかります。

RVM gem をインストールし、軽量リソースとプロバイダー (LWRP) を使用するように Chef を初期化します。 提供された LWRP へのアクセスのみが必要な場合は、このレシピを明示的に使用してください。

あなたが望むものは、次のように置き換えることで最もよく達成できrecipe[rvm]ます:recipe[rvm::system]run_list

RVM コードベースをシステム全体 (つまり、/usr/local/rvm) にインストールし、Rubie、グローバル gem、および属性メタデータから駆動される特定の gem をインストールします。このレシピには、default と system_install が含まれています Ruby がインストールされたシステム全体で RVM が必要な場合などは、このレシピを単独で使用してください。

于 2013-08-15T12:54:05.007 に答える