wakame/wakame-0.5.1 on Ubuntu-server 10.04 LTS Lucid Lynx http://www.ark-web.jp/sandbox/wiki/8357.html

FrontPage

[edit]

wakame 0.5.1 の ubuntu-server 10.04 へのインストール

wakameのubuntu用セットアップスクリプトが存在する。

しかしながら、このまま使用したのでは以下の二つのエラーを出してインストールが完了しない。

ERROR:  Error installing multi_json:
        multi_json requires RubyGems version >= 1.3.6
ERROR:  Error installing jeweler:
        bundler requires RubyGems version >= 1.3.6

両者ともにgemのversion1.3.6を要求する。
apt-getで提供されるgemはrubygems1.8 rubygems1.9 rubygems1.9.1であり、全てversionが1.3.5である。

wakameとの依存性により以下のパッケージが使用する。
multi_json を rubigen が使用
bundler を jeweler が使用

解決するためにwakameを入れる前にmulti_jsonに依存しないversionのrubigenとbundlerに依存しないversionのjewelerをインストールしておく。

/usr/bin/gem install rubigen --version 1.5.5 --no-rdoc --no-ri
/usr/bin/gem install jeweler --version 1.4.0 --no-rdoc --no-ri

この後で

/usr/bin/gem install wakame --no-rdoc --no-ri

とすればwakameのインストールが完了する。(最後にbundlerが無いというエラーが出るがwakame自体はインストールされている)

パッチとしては以下のようになる。
(ec2_ami_toolsは手動でインストールしたので除外してある)
(aptのリポジトリのmultiverse追加はしないのでコメントアウト)
(まだテスト状況なので/etc/init.dには登録しない)
(gemコマンドをフルパスで使用しているのはruby1.9.2とgem1.3.7が入っており、それが優先されてしまうため)

--- 01_setup-base.sh   2011-10-09 00:49:54.752028837 +0900
+++ wakame-setup-base.sh       2011-10-09 04:26:13.302028366 +0900
 @@ -11,12 +11,11 @@
   ruby ruby1.8-dev rdoc1.8 ri1.8 rubygems1.8
   rabbitmq-server
   make g++ libopenssl-ruby libsqlite3-dev
 - ec2-ami-tools
  "
  
 -[ -f /etc/apt/sources.list ] && {
 -  perl -pi -e 's, multiverse,,g; s,$, multiverse,' /etc/apt/sources.list
 -}
 +#[ -f /etc/apt/sources.list ] && {
 +#  perl -pi -e 's, multiverse,,g; s,$, multiverse,' /etc/apt/sources.list
 +#}
  apt-get update
  apt-get -y install ${pkgs}
  
 @@ -31,9 +30,11 @@
  # wakame installation
  echo "#Setting up wakame ..."
  su - wakame -c "
 -  gem list | grep -q -w wakame || {
 +  /usr/bin/gem list | grep -q -w wakame || {
      #gem install /tmp/wakame-0.5.1.gem --no-rdoc --no-ri
 -    gem install wakame --no-rdoc --no-ri
 +    /usr/bin/gem install rubigen --version 1.5.5 --no-rdoc --no-ri
 +    /usr/bin/gem install jeweler --version 1.4.0 --no-rdoc --no-ri
 +    /usr/bin/gem install wakame --no-rdoc --no-ri
    }
 "
  [ -d /home/wakame/wakame.proj ] || {
 @@ -57,14 +58,14 @@
  EOS
  
  # add service
 -[ -L /etc/init.d/wakame-master ] || {
 -  ln -s /home/wakame/wakame.proj/config/init.d/wakame-master /etc/init.d/
 -  /usr/sbin/update-rc.d wakame-master defaults 40
 -}
 -[ -L /etc/init.d/wakame-agent ] || {
 -  ln -s /home/wakame/wakame.proj/config/init.d/wakame-agent /etc/init.d/
 -  /usr/sbin/update-rc.d wakame-agent  defaults 41
 -}
 +#[ -L /etc/init.d/wakame-master ] || {
 +#  ln -s /home/wakame/wakame.proj/config/init.d/wakame-master /etc/init.d/
 +#  /usr/sbin/update-rc.d wakame-master defaults 40
 +#}
 +#[ -L /etc/init.d/wakame-agent ] || {
 +#  ln -s /home/wakame/wakame.proj/config/init.d/wakame-agent /etc/init.d/
 +#  /usr/sbin/update-rc.d wakame-agent  defaults 41
 +#}
  
  # ssh key pair
  [ -d /home/wakame/config ] || {

しかしこのままではwakame-masterもwakame-agentも起動しない。
どちらもrabbitmq-serverが起動していないと動かないらしい。
とりあえずwakame-masterとwakame-agentを起動できるようにしたパッチを作成。

ec2-ami-toolsは手動で入れたので除外(multiverseならaptで入る)
apparmorは消さない(通信に影響が出たら消す)
環境を変えたのでgemがフルパスである必要はなくなった。
rabbitmq-serverの起動順はwakame-master(40)の前(39)、終了順はwakame-agent(41)の後(42)

--- 01_setup-base.sh    2011-10-09 00:49:54.752028837 +0900
+++ wakame-setup-base.sh        2011-11-09 18:50:14.526578001 +0900
@@ -11,12 +11,8 @@
  ruby ruby1.8-dev rdoc1.8 ri1.8 rubygems1.8
  rabbitmq-server
  make g++ libopenssl-ruby libsqlite3-dev
- ec2-ami-tools
 "
 
-[ -f /etc/apt/sources.list ] && {
-  perl -pi -e 's, multiverse,,g; s,$, multiverse,' /etc/apt/sources.list
-}
 apt-get update
 apt-get -y install ${pkgs}
 
@@ -32,7 +28,8 @@
 echo "#Setting up wakame ..."
 su - wakame -c "
   gem list | grep -q -w wakame || {
-    #gem install /tmp/wakame-0.5.1.gem --no-rdoc --no-ri
+    gem install rubigen --version 1.5.5 --no-rdoc --no-ri
+    gem install jeweler --version 1.4.0 --no-rdoc --no-ri
     gem install wakame --no-rdoc --no-ri
   }
 "
@@ -83,17 +80,17 @@
   cat /home/wakame/config/root.id_rsa.pub >> /root/.ssh/authorized_keys
 }
 
-# disable apparmor
-[ -x /etc/init.d/apparmor ] && {
-  /etc/init.d/apparmor stop
-  /usr/sbin/update-rc.d -f apparmor remove
-}
-
-# disable apparmor
+# disable rabbitmq
 [ -x /etc/init.d/rabbitmq-server ] && {
   /etc/init.d/rabbitmq-server stop
   /usr/sbin/update-rc.d -f rabbitmq-server remove
+  # starts before wakame and stop after wakame
+  /usr/sbin/update-rc.d rabbitmq-server defaults 39 42
 }
 [ -d /var/lib/rabbitmq/mnesia ] && {
   rm -rf /var/lib/rabbitmq/mnesia
 }
+
+# enable rabbitmq
+/etc/init.d/rabbitmq-server start
+

どうもデフォルトではus-eastしか対応していないらしい。
Tokyoに対応させるために以下の変更を加えた。

/home/wakame/wakame.proj/config/environments/ec2.rb:4:
config.aws_endpoint='https://ap-northeast-1.ec2.amazonaws.com/'
/home/wakame/.gem/ruby/1.8/gems/wakame-0.5.1/lib/wakame/master_managers/cluster_manager.rb:130:
  ec2 = RightAws::Ec2.new(Wakame.config.aws_access_key, Wakame.config.aws_secret_key, {:endpoint_url=>Wakame.config.aws_endpoint})
/home/wakame/.gem/ruby/1.8/gems/wakame-0.5.1/lib/wakame/service.rb:133:
  ec2 = RightAws::Ec2.new(Wakame.config.aws_access_key, Wakame.config.aws_secret_key, {:endpoint_url=>Wakame.config.aws_endpoint})
/home/wakame/.gem/ruby/1.8/gems/wakame-0.5.1/lib/wakame/actions/shutdown_vm.rb:43:
  ec2 = RightAws::Ec2.new(Wakame.config.aws_access_key, Wakame.config.aws_secret_key, {:cache=>false, :endpoint_url=>Wakame.config.aws_endpoint})
/home/wakame/.gem/ruby/1.8/gems/wakame-0.5.1/lib/wakame/actions/launch_vm.rb:16:
  ec2 = RightAws::Ec2.new(Wakame.config.aws_access_key, Wakame.config.aws_secret_key, {:cache=>false, :endpoint_url=>Wakame.config.aws_endpoint})

これでwakameadm statusでwakame-agentが認識されるようになった。
ただし、service(apacheとか)の起動や新インスタンスのlaunchなどはできなかった。
もっとソースをチェックするかwakameのupdateを待つか・・・

パーマリンク

| append.gif

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-11-13 (日) 10:45:15 (2085d)

アークウェブのサービスやソリューションはこちら