Capistrano で遊ぶ
RedHat Linux に ruby から入れようとしたら、gem の実行でつまずいてしまう。
$ cd /usr/local/src $ wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p111.tar.bz2 $ tar xzvf ruby-1.8.6-p111.tar.bz2 $ cd ruby-1.8.6-p111 $ ./configure $ make $ su # make install # exit $ make clean $ cd ../ $ wget http://rubyforge.org/frs/download.php/28174/rubygems-0.9.5.tgz $ tar xzvf rubygems-0.9.5.tgz $ cd rubygems-0.9.5 $ su # ruby setup.rb # gem install capistrano ... ERROR: While executing gem ... (Gem::Exception) SSL is not installed on this system
ちょっと調べたら、「libopenssl-ruby」を入れないといけないらしく。
http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/a420e3eced6675f2/1c55a165a9319778
google groups もすげー見やすいスレッドだなぁなどと脱線しそうになりつつ、
libopenssl-ruby を入れる方法を調査するも、 apt-get する方法しか見当たらず…
えー、パッケージ管理ソフト使ってないんですがorz
ソースからビルドしようかなーと思ったけど、openssl のバージョンとかどう気にすれば良いのかわからず。
http://ftp.yz.yamagata-u.ac.jp/debian/pool/main/libo/libopenssl-ruby/
ubuntu と Debian の構築方法が上位にかかってくるから、この際Mac に入れてみようかなと。
とりあえず動くところを見たいだけなので^^;;
で、MacBook で構築してみるテスツ。
http://www.onflow.jp/blog/archives/2007/06/mac_os_xcapistrano.html
MacPort は Rails 入れるときに使ったらしく最初から入ってたけど、管理ソース群が古くなってるポイのでこのさい upgrade。
$ sudo port sync $ sudo port selfupdate $ sudo port -v upgrade installed $ sudo port -v install ruby $ sudo port -v install rb-rubygems $ sudo gem -v install capistrano --include-dependencies $ sudo gem -v install termios $ sudo gem -v install net-ssh --version="1.0.10" $ sudo gem uninstall net-ssh --version="1.1.2" $ sudo gem install capistrano $ cap -h
あっさり終了、さすが Debian!
動作確認は以下を参考に。
http://tech.feedforce.jp/capistrano.html
うーん、デフォルトだとローカルの 23 Port に繋げないらしい…
設定変えるのめんどいので自サバへ ssh 接続できるようにしちゃう。
もう今日は動けば良いや…
- テストスクリプト
set :user, "username" set :password, "password" set :command, "echo Hello, $HOSTNAME >> ~/capistrano_test.log" role :local, "192.168.xxx.xxx" desc "say hello to all hosts" task :hellowello do run hellocommand end
で、実行結果。
$ cap -f sample.rb hellowello * executing `hellowello' * executing "echo Hello, $HOSTNAME >> ~/capistrano_test.log" servers: ["192.168.xxx.xxx"] [192.168.xxx.xxx] executing command command finished $ ssh 192.168.xxx.xxx $ cat ./capistrano_test.log Hello, hostname
うん、とりあえず動いたw
ホストで設定したコマンドがクライアントマシン側で実行されると。
あとはメンテ手順とかより簡素化すれば適用可能かなー
あとは明日で!