[[FrontPage]]
** wakame 0.5.1 の ubuntu-server 10.04 へのインストール [#a7cb7894]
[[wakameのubuntu用セットアップスクリプト:https://github.com/hansode/wakame-fuel-builder/blob/master/ubuntu/10.04/01_setup-base.sh]]が存在する。
しかしながら、このまま使用したのでは以下の二つのエラーを出してインストールが完了しない。
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を起動できるようにしたパッチを作成。
#blikimore()
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 rabbimq-server defaults 39 42
+ /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を待つか・・・
#blikifooter()