2012-05-23

Capistrano使うときの初歩的な注意事項二つ

  1. ホスト名はみんなが引ける名前をつける
    • 自分だけなら ssh_config で付けられる alias でも接続できるけど、それは共有できない
  2. deploy を実行する機械の時計は正確に合わせておく
    • releases/ 以下のディレクトリは capistrano を叩いた機械の時計をもとにディレクトリを作成するので、未来すぎたり過去すぎたりするとうまく deploy できなかったり次の deploy に支障が出たりする

時間の方は最近こういうのでガードするようにした。これはたまたま LAN 内の NTP サーバに HTTPD も起きていたので、そこから時間を取得して cap 叩いた機械の時計と比較している。

require "open-uri"
NTP_SERVER = xxxx
ntp_time = Time.parse(URI("http://#{NTP_SERVER}").read.meta['date'])
local_time = Time.now
if ( (local_time.to_i - ntp_time.to_i).abs > 5 )
abort "Your machine is wrong !\nIs it #{local_time} now ?\n"
end
view raw cap_guard.rb hosted with ❤ by GitHub

まぁ cap 叩く機械を統一して Webistrano でやりますっていうんならこういうのは要らない。人数が増えて上のようなミスを減らそうと思ったら Webistrano 入れるといいのかも。認証通さないといけないし、deploy のログも残る。

GUI が必要ないなら ssh の proxy とかで同じようなことができるんじゃないかなぁと思ってるんだけど、できるかどうかよく分からないし、そこまで考えるなら Webistrano の方が楽かな。ブラウザでポチポチするのがちょっとダルいけど。

About

例によって個人のなんちゃらです