Capistrano 入門

第3回 Windows で Capistrano

前回「SSH 公開鍵の設置」では、Linux や Mac OS X で、Capistrano を使うための準備作業について書いた。
今回は、その Windows 編だ。

Capistrano は、Ruby の Net::SSH モジュールを使ってリモートサーバにログインする。したがって、基本的には、ssh クライアントプログラムは必要ない。

あなたのパソコンの適当なフォルダに、次のような内容のファイル Capfile を作る。

task :stamp, :hosts => "alpha.oiax.jp" do
  run "touch /home/kuroda/touched"
end

そして、stamp タスクを実行する。

% cap stamp
  * executing `stamp'
  * executing "touch /home/kuroda/touched"
Password:
    servers: ["alpha.oiax.jp"]
    [alpha.oiax.jp] executing command
    command finished

途中でパスワードを尋ねられる点を除けば、前回の記事と同じである。

Windows で、公開鍵による SSH ログインを実現するには、PuTTY というフリーソフトウェアを利用する。
PuTTY Download Page から putty-x.xx-installer.exe をダウンロードして、インストールする。

まず、puttygen プログラムを起動して、SSH 鍵を作り、秘密鍵を保存し、公開鍵をリモートサーバの authorized_keys ファイルに追加する。詳しくは、PuTTYgen の利用 を参照のこと。ただし、/home/app/.ssh/authorized_keys ファイルにも公開鍵を追加することを忘れないように。

次に pageant プログラムを起動する。このプログラムは常駐型であり、起動するとタスクトレイに帽子をかぶったパソコンのアイコンが現れる。このアイコンをダブルクリックすると、「Pageant Key List」というウィンドウが開くので、[Add Key] ボタンをクリックして、先ほど保存した秘密鍵のファイルを選んで、鍵を pageant に登録する。

この手順を Windows 起動後に一度だけやっておくと、Capistrano 実行時にパスワードを入力しなくても済むようになる。

% cap stamp
  * executing `stamp'
  * executing "touch /home/kuroda/touched"
    servers: ["alpha.oiax.jp"]
    [alpha.oiax.jp] executing command
    command finished

この文章を執筆した当時の Capistrano 2.3.0 では問題が出なかったが、2010年3月30日現在の最新版 Capistrano 2.5.18 は pageant と相性が悪く、can't convert Net::SSH::Authentication::Pageant::Socket into IO (TypeError) というエラーメッセージを表示して止まってしまう。このバグは少なくとも2008年12月には認識されているが、対応される気配はない。Windows ユーザーは pageant を使わないか、古い Capistrano 2.3.0 を使用するか、どちらかを選ぶしか対処方法はなさそうだ。


[改訂] 2008/05/17 ユーザー app でリモートホストにログインする方式に合わせて記述を修正。
[改訂] 2010/03/30 pageant との相性に関する注を追加。

(2008/03/26)

記事に関するご質問は、 hermes@oiax.jp までメールでお送りください。

ウェブサイト構築の発注先を検討されているお客様は、ご相談フォームをご利用ください。