web-dev-qa-db-ja.com

Chef-ServerにUbuntuでRuby 1.9を使用させる方法は?

公式の手順 を使用してUbuntu12.04にChefServerをインストールしました。これは、Ruby 1.8.7)が埋め込まれた「オムニバスインストーラー」を使用します。

knife-windows をインストールしようとしていますが、gem install knife-windowsを実行すると、次のエラーが発生します。

ERROR:  Error installing knife-windows:
        gssapi requires Ruby version >= 1.9.1.

[〜#〜] rvm [〜#〜] と1.9.3をインストールしようとしましたが、このエラーが発生し、元に戻しました。

/opt/vagrant_Ruby/lib/Ruby/site_Ruby/1.8/rubygems.rb:900:in `report_activate_error': Could not find RubyGem chef (>= 0) (Gem::LoadError)
    from /opt/vagrant_Ruby/lib/Ruby/site_Ruby/1.8/rubygems.rb:248:in `activate'
    from /opt/vagrant_Ruby/lib/Ruby/site_Ruby/1.8/rubygems.rb:1276:in `gem'
    from /opt/vagrant_Ruby/bin/knife:18

Ruby 1.9.x?でChefサーバーとナイフをインストールする正しい方法は何ですか?

4
Eric Lathrop

Chef Serverは、Vagrant(/opt/vagrant_Ruby)によって作成された仮想マシンにインストールされているようです。ただし、Chef Server11以降はRubyではなくErlang上に構築されています。 Rubyには付属していますが、直接使用しないでください。 chef-server-ctlでChefサーバーを管理するためにあります。

上記のVagrantボックスにインストールすると、さまざまなRubyバイナリがデフォルトの$ PATHに配置されます。つまり、gem installを使用するとknife-windowsgemがにインストールされます。 Ruby Vagrantによってそこに配置されました。

さらに説明すると、OpscodeがChefとChef Serverに提供するパッケージには、Rubyの独自の個別インストールが含まれています。 ChefとChefServerでサポートされているプラ​​ットフォームはすべて、デフォルトで提供されるRuby)の異なる(古い)バージョンを持っているため、Opscodeはこれを行います。

日常的に、Chef Serverとのほとんどのやり取りは、knife(またはwebui)を使用したAPIを介して行われます。 knifeとそのプラグインは、ローカルラップトップのような「ワークステーション」システムから使用する必要があります。 ChefがRubyをインストールする唯一の理由である場合は、インストールする必要がある Chefパッケージ に埋め込まれたRubyを使用してくださいインストーラーは、Ubuntu、Windows、OS Xなど、ほとんどの主要なプラットフォームで利用できます。プラグインによっては、さまざまな開発ヘッダーとビルドツール(gcc、makeなど)が必要になる場合があります。

ChefServerの現在の「オムニバス」パッケージのRubyのバージョンは1.8.7ではありません。次の場所にあります。

ubuntu@os-9348884648703137:~$ /opt/chef-server/embedded/bin/Ruby --version
Ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-linux]

(この記事の執筆時点での現在のバージョン)

Chefクライアントパッケージで使用されるRubyのバージョンは、クライアント/ワークステーションの使用ニーズがChef Serverよりも速く移動するため、通常、より頻繁に更新されます。組み込みバージョンのRubyは次のとおりです。

% /opt/chef/embedded/bin/Ruby --version
Ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-darwin11.2.0]

Opscodeは次のリリースでこのバージョンを更新する予定であるため、このサイトへの将来の訪問者に表示されるものとは異なる場合があります。また、これはChefServerではなく「ローカルワークステーション」インストールからのものであることに注意してください。

3
jtimberman

Chef-serverの1.9.3インストールにRVMを使用するのは不快です。

たとえば、 Brightbox PPA から1.9.3をインストールします(ここに 詳細な手順 がありますが、基本的にはそのPPAを追加し、1.8を1.9に置き換えます。つまりSudo apt-get install Ruby1.9.3

1.9.3と関連するRubyGemが配置されたら、gem install chefを実行するだけで十分です。これにより、chef-serverはdebパッケージではなくgemとしてインストールされます。

0
cjc