Fabricとは ?
README によると:
Fabric is a Python (2.5-2.7) library and command-line tool for streamlining
the use of SSH for application deployment or systems administration tasks.
もっと具体的に言うと、Fabricとは:
コマンドライン 経由で 任意の Python 関数 を実行するツールです。
(低レベルライブラリの上に構築された)サブルーチンのライブラリで、SSH経
由で 簡単に かつ Python風に シェルコマンドを実行します。
当然、たいていのユーザーはこの2つを組み合わせます。Fabricを使ってPython
の関数もしくは タスク を作成し、実行し、リモートサーバとのやりとりを自動化し
ます
http://fabric-ja.readthedocs.org/ja/latest/tutorial.html による
・Fabric使っていた時のdeployイメージ
・Deployの流れ
・サンプルコード
▼通知(tokenなどの情報はpitで管理)
・チャット通知
・NewRelic通知
・メール通知
Manage Server
DB Server
Web Server
Batch Server
Git Remote Server
・モジュールチェックアウト
・tag作成
・deploy開始時と終了時に通知
・作業PCでコマンドライン実行(例:fab deploy:production)
・他人がdeploy中だったら、それを検知して、deploy中止
・オートスケーリングのインスタントが立ち上げ中の場合、deploy中止
・deploy開始の通知(hipchat, newrelicなど)
・manage server で対象のブランチをチェックアウトして、gitタグを作成して、pushする
・AWSのAPIを叩いて、対象のdeployサーバを自動取得する(hostname命名ルール決める)
※AWS SDK for Python(Boto)を使う(https://aws.amazon.com/jp/sdkforpython/)
・DBサーバを絞り込んで、migrate実行
※データキャッシュした場合、そのキャッシュをクリア
・バッチサーバを絞り込んで、rsyncでモジュールを同期する(同期元:manage server)
※データキャッシュした場合、そのキャッシュをクリア
・モジュール同期完了あとにシンボリックリンクを最新deployしたフォルダに貼り直す
・バッチサーバのcrontab更新、supervisorを使う場合、supervisorのreloadやrestartする
・Webサーバを絞り込んで、rsyncでモジュールを同期する(同期元:manage server)
※Webサーバのキャッシュがある場合、そのキャッシュをクリア
・モジュール同期完了あとにシンボリックリンクを最新deployしたフォルダに貼り直す
・deploy開始の通知(hipchat, newrelicなど)
Fabric
Fabric

Fabric