スポンサードリンク

python boto + Capistranoで変態ちっくなEC2用デプロイスクリプト


EC2用に、ちょっと変態的(?)なデプロイスクリプトを組んだのでGithubに置いてみた。画面キャプチャーと一緒にご紹介します(・ω・)ノ
https://github.com/wgkoro/ec2helper
※各キャプチャクリックで拡大します

このスクリプトでdeployを実行すると
1.指定したNameを持つインスタンスを探して、起動しているかチェック。
Stopしていればたたき起こす。
起こした後、デプロイ実行していいか尋ね、OKであればCapistranoでデプロイ実行。

2.デプロイが終了したらスナップショットを作成。

ということを行います。

Capistranoのrollbackもできます。
1.指定Nameのインスタンスの起動チェック、ロールバック実行。

2.以前作成したスナップショットも一緒に削除(削除実行前に確認アリ)。

※スナップショット作成/削除機能はbotoを使ってEBSをバックアップ(世代管理つき)のスクリプトを使わせてもらいました。

必要な環境

  • Capistrano, Capistrano-extを使ったデプロイができるようになっていること(capコマンドをそのまま利用します)
  • Python2.6 以上
  • botoパッケージがインストールされていること (easy_install boto OR pip install boto)

使う前の準備

  1. Githubから一式をダウンロード
  2. ec2helperの中に入っているconfig.pyを開きます。
    辞書AWS_DATAの’default’欄にAWSアカウントのアクセスキー、シークレットキーを記入します。
    regionは、AWS_DATAの上にある辞書REGIONのキーを入力して下さい。(東京なら”t”)
    複数のアカウントがある場合は、AWS_DATAに追加しておくと便利です(・ω・)ノ
  3. deploy_example.pyを開きます。
    「Edit ===」で囲まれている部分を編集して下さい。

[/crayon]

  1. deploy.rbを編集します。デプロイ先サーバーを動的に変更できるようにします。role定義部分を下記のように書き換えて下さい。(role名は好きにつけてOKです)

使い方

$ python deploy_example.py [本番/開発環境指定] [deployの挙動指定]

環境指定:
・p 本番環境
・d 開発環境

deployの挙動指定: (Capコマンドそのまんまですw)
・deploy
・deploy:rollback
・deploy:cleanup

開発環境へデプロイ
$ python deploy_example.py d deploy

本番環境へデプロイ
$ python deploy_example.py p deploy

開発環境 ロールバック
$ python deploy_example.py d deploy:rollback

開発環境 世代数整理
$ python deploy_example.py d deploy:cleanup

ちなみにスナップショットを取るだけであれば、
ec2helper/snapshot.py実行でOKだったりします。
$ python snapshot.py [snapshot名] -v volume名(vol-xxxxx)

-dオプションをつけると、指定したsnapshot名をもつ、最後に作成したスナップショットを削除(削除前に確認アリ)
$ python snapshot.py [snapshot名] -d

-rオプションをつけるとリージョンを変更して実行
$ python snapshot.py [snapshot名] -v volume名(vol-xxxxx) -r s
※シンガポールリージョンにあるvolumeのスナップショットを作成

何でこんなものを作ったのか

…いや、最初はCapistrano単体でいくつもりだったんです。だけどふと気づいた。
Elastic IPをふっているインスタンスなら確かにcapコマンド単体でOK。けれど、ELBにぶら下げているインスタンスはIPふってない…。しかもたまに入れ替えたりするし。こうなるとホスト名を探して指定するのがめっちゃメンドイ(=ω=)。

ということをモンモンと考えていて、とうとう作ってしまった…。というオチ。

ま、気が向いたら使ってみてくださいませ(・∀・)

Facebookページ / スポンサードリンク
2012-03-22 | Posted in ProgramNo Comments » 
Comment





Comment



スパム対策のため、コメントする際は下記の計算式を埋めてください。 計算式の有効期限が切れました。計算式の隣にある再読み込みボタンを押してください。