16
2013/7/6 JAWSUG-Kobe #2 OpsWorks (Chef) 特集 & fabric & boto & awscli AMI の自動作成 & AutoScale 玉川竜司 1376日土曜日

Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール

  • Upload
    -

  • View
    2.682

  • Download
    3

Embed Size (px)

DESCRIPTION

JAWSUG神戸第2回で発表したスライドです。

Citation preview

Page 1: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール

2013/7/6 JAWSUG-Kobe #2 OpsWorks (Chef) 特集

& fabric & boto & awscliで

AMIの自動作成 & AutoScale

玉川竜司

13年7月6日土曜日

Page 2: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール

軽く自己紹介

Sky株式会社でいろいろやってます。兼業翻訳やってます。tamagawa_ryuji@twitter / Ryuji Tamagawa@FB

13年7月6日土曜日

Page 3: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール

今日のお話

✤ コードをコミットしたら

✤ ビルドして

✤ AMIを作成して

✤ AutoScaleのLaunchConfig書き換えて

✤ インスタンスを入れ替えます

ここを完全に自動化します

13年7月6日土曜日

Page 4: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール

今回のシステム構成と動作

GitHub

ソースコード

ソースコード

ソースコード

fabric boto

awscli

AutomaticDeployer(t1.micro with IAM Role)

buildworkspace

LaunchConfig

①監視 ②取得してビルド

③インスタンスを作成してsshで中身を設定

④カスタムAMIを作成し、そのAMIを使う

LaunchConfigを作成

⑤インスタンスを入れ替え

Amazon LinuxAMI

13年7月6日土曜日

Page 5: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール

デモ

13年7月6日土曜日

Page 6: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール

それでは順番に説明します

13年7月6日土曜日

Page 7: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール

✤ ご存じ万能執事さん

✤ gitプラグインを入れれば、ちょっとした設定でGitHubのポーリングが可能

✤ GitHubのリポジトリが更新されていたら、中身をとってきてビルド実行

✤ 今回は、fabricを呼び出して処理を行っている

13年7月6日土曜日

Page 8: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール

今回使った道具

✤ fabric(http://docs.fabfile.org/en/1.6/)✤ PythonベースのSSH自動化ツールみたいなもの✤ Pythonっぽくて便利!

✤ boto(http://aws.amazon.com/jp/sdkforpython/)✤ 別名AWS SDK for Python✤ 中の人がAWSに入って公式化(AWS CLIの基盤にもなりました)

✤ AWSCLI(http://aws.amazon.com/jp/cli/)✤ jqと併せて使うと超便利

13年7月6日土曜日

Page 9: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール

fabricのいいところ

✤ fabfile.pyを書いていって、カスタムのコマンドを増やしていく感じ

✤ コマンドを個別に実行できるので、試しながらのスクリプティングが非常に楽ちん

✤ sshやscp、複数サーバーの扱いなど、低レベルのビルディングブロックが提供されている

✤ 要するに「スーパーssh」な感じなので、敷居が低い

13年7月6日土曜日

Page 10: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール

botoについて

✤ Pythonの人には楽ちん

✤ ドキュメントはちょっとわかりにくい

✤ 薄い本出てます(電子書籍 )

✤ IAM Rolesに対応しているところは高ポイント

13年7月6日土曜日

Page 11: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール

IAM Rolesについてちょっと説明

✤ IAM Roles以前はconn = EC2Connection('<aws access key>', '<aws secret key>')

✤ AWS内のインスタンスからAWSのAPIを呼ぶ際に、クレデンシャルの扱いが面倒だった

✤ IAM Roles以降は、ロールが割り当たっていればconn = EC2Connection()だけでOK。クレデンシャルをEC2インスタンスに持たせる必要がない

✤ ライブラリやツールが、http://169.254.169.254/latest/meta-dataあたりを見て、よろしくやってくれる

✤ botoやawscliはばっちり。Javaはまだ?

13年7月6日土曜日

Page 12: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール

awscliと.jq

✤ 軽量な公式コマンドラインツール。ただし、すべてのサービスがカバーされているわけでは(まだ)ない

✤ コマンドのレスポンスがJSONで返される

✤ JSONフィルタのjqを使えば、レスポンスの扱いが楽

13年7月6日土曜日

Page 13: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール

ローカルでPythonの環境構築するなら

✤ virtualenvを使うと、ホストマシン内に独立したPython環境を作れます。いろいろインストールしても、ホストマシンは「汚染」されないので便利

✤ easy_install pipでpip(Pythonのライブラリマネージャ)を入れて、pip install virtualenvでvirtualenvをインストール。

✤ virtualenv devenvとして、cd devenv; source bin/activateでdevenvという環境を使ったセッションに切り替わる。以降、いろいろインストールしても、それはdevenvにローカルな変更になり、ホストそのものには影響しない

13年7月6日土曜日

Page 14: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール

ここで小市民には大きな問題

デバッグのたびに

「ちゃりーん」という音が聞こえる・・・

13年7月6日土曜日

Page 15: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール

そこでVagrant

新原さんの話に注目!・・・あと本も出るかも?

13年7月6日土曜日

Page 16: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール

Questions?

13年7月6日土曜日