2016年7月15日金曜日

Fabricを使って、簡単にELB+EC2環境にローリングデプロイ

Python製のプロビジョニングツールであるFabricを使って、ELB + EC2環境にアプリケーションをローリングデプロイします。
ELBから1台ずつEC2インスタンスを切り離して、アプリケーションをデプロイしてリスタート、終わったら、ELBにEC2インスタンスを追加します。
なぜ、Fabricを使ったかというと、ほかのデプロイ自動化ツール、たとえばCapistranoやAnsibleだと、ELBのAPIを叩く処理を書くのがちょっと面倒そうだったからです。Fabricなら使いやすそうなPythonライブラリがあり、簡潔に書けるな、と考えたからです。
以下のFabricスクリプトは、ロールバックやヘルスチェックなどの処理を書いていません。もうちょっと高級なことがしたかったら、他の方法を考えたりするといいと思います。
※ ELBは、Classic load balancerを使っています。

Fabricのインストール
環境:Mac OS X
$ sudo easy_install fabric
$ sudo pip install boto
$ fab --version
Fabric 1.11.1
Paramiko 1.17.1
Fabricスクリプト
実行結果

Top image from msburrows roll