Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール
-
Upload
- -
Category
Technology
-
view
2.682 -
download
3
description
Transcript of Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール
![Page 1: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール](https://reader030.fdocument.pub/reader030/viewer/2022020122/5553aa67b4c905d9448b47f7/html5/thumbnails/1.jpg)
2013/7/6 JAWSUG-Kobe #2 OpsWorks (Chef) 特集
& fabric & boto & awscliで
AMIの自動作成 & AutoScale
玉川竜司
13年7月6日土曜日
![Page 2: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール](https://reader030.fdocument.pub/reader030/viewer/2022020122/5553aa67b4c905d9448b47f7/html5/thumbnails/2.jpg)
軽く自己紹介
Sky株式会社でいろいろやってます。兼業翻訳やってます。tamagawa_ryuji@twitter / Ryuji Tamagawa@FB
13年7月6日土曜日
![Page 3: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール](https://reader030.fdocument.pub/reader030/viewer/2022020122/5553aa67b4c905d9448b47f7/html5/thumbnails/3.jpg)
今日のお話
✤ コードをコミットしたら
✤ ビルドして
✤ AMIを作成して
✤ AutoScaleのLaunchConfig書き換えて
✤ インスタンスを入れ替えます
ここを完全に自動化します
13年7月6日土曜日
![Page 4: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール](https://reader030.fdocument.pub/reader030/viewer/2022020122/5553aa67b4c905d9448b47f7/html5/thumbnails/4.jpg)
今回のシステム構成と動作
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の自動作成とオートスケール](https://reader030.fdocument.pub/reader030/viewer/2022020122/5553aa67b4c905d9448b47f7/html5/thumbnails/5.jpg)
デモ
13年7月6日土曜日
![Page 6: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール](https://reader030.fdocument.pub/reader030/viewer/2022020122/5553aa67b4c905d9448b47f7/html5/thumbnails/6.jpg)
それでは順番に説明します
13年7月6日土曜日
![Page 7: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール](https://reader030.fdocument.pub/reader030/viewer/2022020122/5553aa67b4c905d9448b47f7/html5/thumbnails/7.jpg)
✤ ご存じ万能執事さん
✤ gitプラグインを入れれば、ちょっとした設定でGitHubのポーリングが可能
✤ GitHubのリポジトリが更新されていたら、中身をとってきてビルド実行
✤ 今回は、fabricを呼び出して処理を行っている
13年7月6日土曜日
![Page 8: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール](https://reader030.fdocument.pub/reader030/viewer/2022020122/5553aa67b4c905d9448b47f7/html5/thumbnails/8.jpg)
今回使った道具
✤ 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の自動作成とオートスケール](https://reader030.fdocument.pub/reader030/viewer/2022020122/5553aa67b4c905d9448b47f7/html5/thumbnails/9.jpg)
fabricのいいところ
✤ fabfile.pyを書いていって、カスタムのコマンドを増やしていく感じ
✤ コマンドを個別に実行できるので、試しながらのスクリプティングが非常に楽ちん
✤ sshやscp、複数サーバーの扱いなど、低レベルのビルディングブロックが提供されている
✤ 要するに「スーパーssh」な感じなので、敷居が低い
13年7月6日土曜日
![Page 10: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール](https://reader030.fdocument.pub/reader030/viewer/2022020122/5553aa67b4c905d9448b47f7/html5/thumbnails/10.jpg)
botoについて
✤ Pythonの人には楽ちん
✤ ドキュメントはちょっとわかりにくい
✤ 薄い本出てます(電子書籍 )
✤ IAM Rolesに対応しているところは高ポイント
13年7月6日土曜日
![Page 11: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール](https://reader030.fdocument.pub/reader030/viewer/2022020122/5553aa67b4c905d9448b47f7/html5/thumbnails/11.jpg)
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の自動作成とオートスケール](https://reader030.fdocument.pub/reader030/viewer/2022020122/5553aa67b4c905d9448b47f7/html5/thumbnails/12.jpg)
awscliと.jq
✤ 軽量な公式コマンドラインツール。ただし、すべてのサービスがカバーされているわけでは(まだ)ない
✤ コマンドのレスポンスがJSONで返される
✤ JSONフィルタのjqを使えば、レスポンスの扱いが楽
13年7月6日土曜日
![Page 13: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール](https://reader030.fdocument.pub/reader030/viewer/2022020122/5553aa67b4c905d9448b47f7/html5/thumbnails/13.jpg)
ローカルで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の自動作成とオートスケール](https://reader030.fdocument.pub/reader030/viewer/2022020122/5553aa67b4c905d9448b47f7/html5/thumbnails/14.jpg)
ここで小市民には大きな問題
デバッグのたびに
「ちゃりーん」という音が聞こえる・・・
13年7月6日土曜日
![Page 15: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール](https://reader030.fdocument.pub/reader030/viewer/2022020122/5553aa67b4c905d9448b47f7/html5/thumbnails/15.jpg)
そこでVagrant
新原さんの話に注目!・・・あと本も出るかも?
13年7月6日土曜日
![Page 16: Jawsug神戸2 jenkinsとfabricでamiの自動作成とオートスケール](https://reader030.fdocument.pub/reader030/viewer/2022020122/5553aa67b4c905d9448b47f7/html5/thumbnails/16.jpg)
Questions?
13年7月6日土曜日