Fabric でも Capistrano でも
run("echo stop")
run("echo modify")
run("echo start")
っていう感じで書けるんですが、複数サーバで実行する場合の順序が全然違うので要注意です。ロードバランサから外して、更新して、戻すなんてことを考えてると、Capistrano で死にます。
Fabric の場合:
- サーバAをロードバランサから外す
- サーバAを更新する
- サーバAをロードバランサに戻す
- サーバBをロードバランサから外す
- サーバBを更新する
- サーバBをロードバランサに戻す
Capistrano の場合:
- サーバAをロードバランサから外す
- サーバBをロードバランサから外す
- サーバAを更新する
- サーバBを更新する
- サーバAをロードバランサに戻す
- サーバBをロードバランサに戻す
Capistrano で Fabric の実行順序にするきれいな方法があればいいんですが。きれいな、というからには、汚い方法はあって、Can Capistrano Execute Tasks on Hosts Consecutively? - Stack Overflow にいくつかの解決策が示されています。でもなー、これ cap っぽくないよなー、うーん。