fabricつかってみたので、まとめ

Install

正確には途中でpyenv入れたり、ちょっとトラブルもあったけど
その辺はぐぐれば解決策出て来るのでそちらを参照

Hello fabric

fabfile.py

fabコマンドの引数にメソッド名渡すと実行してくれる。

引数を渡す

引数とかもコロンの後ろに書くと渡せる。

デプロイ先のホストを設定する

envという辞書変数を設定することでデプロイ先を指定することができる

公式ドキュメント

色々あるけど、最低限のみ書きます

key_filenamefabfile.pyからのパスを指定する。
SSHの認証方式に合わせてkey_filenamepassword
いずれかを設定する。

hostsは名前の通り、配列で複数指定することができる。

実はこれ書いてるときに、はじめてちゃんとenvのドキュメント
読んだんですが、結構いろいろできるっぽい。
(シェルの指定とか、.ssh/configの置き換えとか)

これで、192.168.0.1に対して実行したいケースでは以下のように
かける

ホスト上でいろいろする

前述のサンプルではprintしてるだけで、設定したenv.hosts上で
何も実行されていないので、実際に何かやってみる

色々あるっぽいけど、最低限以下の3つがあれば、大体のことが
できると思う。

  1. local ローカル(fabricを実行しているマシン)上で何かを行う
  2. put ローカルにあるファイルをenv.hostsに転送する
  3. run env.hosts上でコマンドを実行する

ここまでのサンプルを組み合わせると
特定のホストに対して、決まったコマンド群を実行できるようになる。
これで、以下のような最低限のデプロイスクリプトが書けそう。

関連するメソットはこのあたりに書かれてる

公式ドキュメント

ホストを切り替える

同じスクリプトで別の環境にデプロイしたい、みたいなケースがあれば
settingsを使う

settingsはwithと組み合わせることで、スコープ内の
env辞書を任意の値で上書きする。ので、ここで環境に応じた
ホストを設定している。

以下のように実行できる

引数ひとつで、環境切り替えたいとき、とかはこんなふうでも
よさそう

いいかんじ。

失敗を扱う

ここはチュートリアルをそのまんま、だけど
localrunputは戻り値に結果を返す

abortはエラー出力にエラーを出して、処理を終了する

蛇足だけど、公式チュートリアルでは上記に加えて

を使っていて、これはYes/Noをユーザに入力させるメソッド。
便利そう

その他

  • デフォルトでは、処理は連続してシリアルに実行される。
    • ホストが2つ(A,B)設定されていれば、Aに対する処理が終わったあとにBをはじめる)
    • env.parallel=Trueで並列実行も可能
    • 簡単に時間差つけたいならrun(“sleep xxx”) とかでもいいかな?
  • なくてもいいけど、この辺のUtils便利
  • hostsを設定するだけならsettingsじゃなくてデコレータ使ったほうがよさそう?
    • taskとかも、いろんな人が使うスクリプトならちゃんとつけてあげたほうがいいかもしれない
    • 公式ドキュメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です