fabtoolsとcuisineを使うとFabricが分かりやすくなるかも

Share on Facebook5Tweet about this on TwitterShare on Google+0Share on LinkedIn0

こんにちは、kotaです。前回のblogを書いた時期はまだ冬で外も寒かったのですが、次に何を書こうか考えているうちに、あっという間に春も中頃になっていました。
考えた時間と記事のクオリティは比例しないのですが、今回はfabtoolsとcuisineを使ってみた感想を書いてみたいと思います。

まずFabricって何?

簡単に説明すると、Python製のデプロイツールです。リモートのサーバに対してssh経由でpythonの関数を実行できます。
過去にもFabricについての記事があるので、今回は簡単な説明で終わりにします。

fabtoolsとかcuisineって何?

fabtoolsやcuisineはFabricをサポートするライブラリです。Fabricだけだと複雑になる処理もfabtoolsやcuisineを使うとわかりやすく書くことができます。
fabtoolsやcuisineを使った場合と使わない場合の例を紹介します。


mercurialのリポジトリをcloneする処理

  • fabricだけの場合

  • fabtoolsとcuisineを使う場合

あまりいい例ではないので間違い探しみたいですが、この例だとfabtoolsを使うことでhgコマンドを直接書く必要がなくなります。
cuisineを使うことでmkdirコマンドを書かなくても良くなっていますが、dir_ensureはディレクトリがなければ作成、あれば何もしないという判断まで含んでいます。このようにcuisineを使う一番のポイントは_ensureメソッドを使うことで冪等性があるコードが書き易くなる点だと思います。

また、fabtoolsには他にもfabtools.apache, fabtools.cron, fabtools.git, fabtools.mysqlなどのモジュールがあり、それらを使うことでコマンドを直接書かなくてもよくなります。
cuisineにもpackage_ensureやupstart_ensureなどの_ensureメソッドがあるのでそれらを使うとFabricがわかりやすくかけると思います。

使ってみた感想は?

fabtoolsやcuisineを使ってみた感想は、すでにFabricを使っていれば新しく覚えることもほとんどないので、すぐに使えていいなあという感じです。
とは言っても、既に動いているFabricをこれらのパッケージを使って書き直すほどではないかな、という気もするので、新しく書く処理があれば使いたいなと思います。

最後に、それぞれのドキュメントを紹介します。
fabtools: http://fabtools.readthedocs.io/
cuisine: https://github.com/sebastien/cuisine