Deploy ツール Stretcher で Rollback する
Stretcher を使うと、Consul と連携して、所謂 Pull 型の Deploy ができるようになります。
Consul と連携させる場合は、
$ consul event -name deploy s3://xxx-stretcher-files/deploy-20151112-193139.yml
のように、consul event
で Manifest の path を指定してイベントを送ると、
YAML に書いてある path(s3, http, file) から tar.gz を取得して展開してくれます。
Stretcher は Rollback するのも簡単で、
Rollback したいバージョンの Manifest の path を指定して consul event
を実行するだけです。
S3 に置いている場合、都度 aws s3 ls
などして Manifest の path を調べて consul event
を実行するのは面倒です。
そこで、以下の様なスクリプトを用意しておくと Rollback が楽になります。
aws s3 ls
の結果から最新の Manifest を除いて、
bash の select で番号で選択できるようにしています。
実行すると以下のようになります。
$ ./rollback_stretcher.sh 1) deploy-20151112-191452.yml 14) deploy-20151029-215027.yml 2) deploy-20151112-191236.yml 15) deploy-20151028-182546.yml 3) deploy-20151112-190934.yml 16) deploy-20151028-175655.yml 4) deploy-20151112-190820.yml 17) deploy-20151028-175201.yml 5) deploy-20151112-190421.yml 18) deploy-20151028-174909.yml 6) deploy-20151112-190254.yml 19) deploy-20151028-174155.yml 7) deploy-20151112-190127.yml 20) deploy-20151028-171838.yml 8) deploy-20151112-190018.yml 21) deploy-20151022-191616.yml 9) deploy-20151112-185832.yml 22) deploy-20151022-143736.yml 10) deploy-20151112-185441.yml 23) deploy-20151022-143011.yml 11) deploy-20151112-185341.yml 24) deploy-20151022-142645.yml 12) deploy-20151112-185242.yml 25) deploy-20151022-141728.yml 13) deploy-20151110-162450.yml 26) deploy-20151022-140614.yml Select manifest (quit q or Ctrl-C) : 1 Event ID: 7a5e80c5-27aa-973e-3328-b7093a91439f
Rollback するスクリプトを用意しておくと、
障害発生時にも落ち着いて作業ができるので良いですね。
※前提条件として、Manifest のファイル名に timestamp を含めて sort できるようにしておく必要があります。