Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

81
HiganWorks 合同会社/opsrock 澤登 亨彦 OpsWorks

description

JAWSDAYS 2014 ACEに聞けで使用した、OpsWorksの概要です

Transcript of Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

Page 1: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

HiganWorks合同会社/opsrock 澤登 亨彦

OpsWorks

Page 2: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

ご案内:このセッションは 昨年発表内容の再構成です

• 大阪のAWS全サービス紹介 • 神戸のChef特集 • 最新の機能は補足での紹介です、ご了承ください

2

Page 3: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

Chefの本を書きました• 来月、4/12(土)発売予定 • 「Chef活用ガイド ~ コードではじめる構成管理」

• Infrastructure as Codeを実践しよう! • 日本公式代理店のクリエーションラインさんと共著

3

NOW Printing

Page 4: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

『Chef活用ガイド』について• 注意:すぐ使える!とかではない模様 • 公式Docsの流れを踏襲し、さらに詳しく記述 • 解説部分の元ネタは大体ソースコード • Chef本体から離れる話は少なめ • 付録 • 今日のセッションみたいなコラム • Enterpriseアドオン • 全リソース和訳

4

NOW Printing

Page 5: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

運営組織

5

• 代表社員をつとめる合同会社 • アプリケーションのためのプラットフォーム構築/運用自動化をテーマに活動

• http://opsrock.in 共同開発・運営 • Chef関連を主に取り扱うソリューションを提供

• 導入支援コンサルも

Page 6: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

本日の内容• AWS OpsWorks の概要 • OpsWorksの機能と関連するAWS達 • スタックとレイヤ • アプリケーションライフサイクルとデプロイ • OpsWorksのオートスケール • OpsWorks Ruby on Railsデプロイ

6

Page 7: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

AWS OpsWorks の概要

Page 8: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

AWS OpsWorksとは?• アプリケーションのライフサイクル管理を一本化するために作られたソリューション

• プラットフォームの自動構築 • アプリケーションのdeploy(undeploy)

8

Page 9: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

プラットフォームの自動構築• アプリケーションが動作するプラットフォームとは?

• ネットワーク環境の構築 • サーバ(インスタンス)の調達 • ミドルウェアの設定

9

Page 10: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

アプリケーションのdeploy• アプリケーション≒ソースコード(リポジトリ) • git, svn, zip(http, s3) + 何らかの配布/ビルドの仕組み

10

OpsWorks Agent

タスク実行 タスク実行管理

Page 11: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

OpsWorksの機能と 関連するAWS達

Page 12: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

関連AWSは大体こいつらです

12

Amazon EC2 Auto Scaling Elastic Load Balancing

Amazon S3

CloudWatch IAM Amazon SQS

Page 13: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

機能対応表

13

OpsWorks 関連AWS

サーバインスタンス提供 EC2, S3

モニタリング CloudWatch

パーミッション IAM

オートスケール ELB, AutoScaling

オートヒール CloudWatch, EC2※発表者独自の見解を含みます

Page 14: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

スタックとレイヤ

Page 15: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

『スタック』 1システムをまとめた単位

アプリケーションのプラットホーム全体

『レイヤ』 役割別インスタンスの集合

DB

WebServer

Application

System A

Page 16: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

アプリケーション ライフサイクルと デプロイ

Page 17: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

1.Setup 2.Configure 3.Deploy 4.UnDeploy 5.Shutdown

17

OpsWorksのライフサイクル定義

プラットフォーム部分

Page 18: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

プラットフォーム部分• Setup • インスタンスの起動 • 関連パッケージのインストール • Configure (構成変更時にも自動実行) • ミドルウェアの設定 • OpsWorksメタデータへの情報登録

18

Page 19: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

設定情報登録例:Mysql

19

"opsworks": {! "stack": {! "name": "sample_stack"! },! "layers": {! "db-master": {! "id": "e554fc61-25f0-4cde-ab21-0fb890f586b6",! "name": "MySQL Master",! "instances": {! "db-master1": {! "public_dns_name": "ec2-54-250-66-243.xxx",! "ip": "54.250.66.243",! "private_ip": "10.154.17.254",! "private_dns_name": "ip-10-154-17-254.xxx"! }! }! }! "mysql": {! "server_root_password": "root_password"! }!}

※一部抜粋

Page 20: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

1.Setup 2.Configure 3.Deploy 4.UnDeploy 5.Shutdown

20

OpsWorksのライフサイクル定義

アプリケーション部分

Page 21: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

アプリケーション部分 1/2• Deploy • デプロイツール※風のタスクを実行 ※Capistrano/Chef::Deploy

• レイヤ情報に基づいてアプリケーションコンフィグの設定

• アプリケーションの起動 • ELB/HAProxy等のバックエンドに参加

21

Page 22: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

アプリケーション部分 2/2• UnDeploy • ELB/HAProxy等のバックエンドから除外 • アプリケーションの停止

22

Page 23: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

その他任意に実行可能な小タスク

• os package管理系 • update_dependencies • install_dependencies • Chef関連系 • update_custom_cookbooks • execute_recipes

23

Page 24: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

Shutdown• 後片付け • ミドルウェアの安全な停止 • OpsWorksAgentの安全な停止 • ステータス更新&削除

24

Page 25: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

OpsWorksの オートスケール

Page 26: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

選べるオートスケール• CloudWatch、AutoScalingと連携 • TimeBased instance • 1時間単位でインスタンスの起動・停止状態をスケジュールできます。

• LoadBased instance • レイヤの平均負荷状況に応じてインスタンスを起動・停止します。

26

Page 27: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

AutoScale(OpsWorks)設定例

27

http://qiita.com/sawanoboly@github/items/2aa556fc4376a1695654

WEBの情報をご参照お願いします

Page 28: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

監視ビュー

Page 29: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

CloudWatchの自動グルーピング

• レイヤ単位でのリソース状況を一覧

29

http://aws.typepad.com/aws_japan/2013/05/aws-opsworks-update-elastic-load-balancing-monitoring-view-more-instance-types.html

Page 30: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

ここ半年のUpdates• カスタムAMIが使用可に • (要OpsWorks Agent) • VPCに対応 • IAMでリソース単位のパーミッション制御 • Chef Version 11.4 • コマンドラインツール/APIの強化 • Javaアプリケーションサポートの追加

30

Page 31: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

OpsWorks Ruby on Railsデプロイ

(紙芝居)

Page 32: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 33: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 34: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 35: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 36: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 37: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 38: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 39: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 40: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 41: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 42: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 43: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 44: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

あ、依存パッケージ 忘れてた

Page 45: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

インスタンス 起動してもうたし...

Page 46: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 47: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 48: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 49: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 50: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

Railsプラットホーム OK

Page 51: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 52: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 53: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 54: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 55: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 56: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

おや、 DBレイヤ(mysql)が

ないよ?注) 演出上の都合です、 プリセットのMySQLレイヤなら 悩まずデプロイできます

Page 57: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

とりあえず SQLite3でいいや

Page 58: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 59: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 60: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

{      "deploy":  {          "books":  {              "database":  {                  "adapter":  "sqlite3"              }          }      }  }

Page 61: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 62: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 63: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 64: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

しばし待つ

Page 65: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 66: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 67: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

rails-app1:~$ sudo cat \ /srv/www/books/current/config/database.yml !development: -- snip- !production: adapter: "sqlite3" database: "books" encoding: utf8 host: "" username: "root" password: "" reconnect: true

‘database.yml’ もバッチリ

Page 68: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

このレイヤに インスタンスを 追加してみる

Page 69: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 70: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

インスタンス起動時に 登録済みアプリは

とりあえずデプロイされます

Page 71: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 72: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

production: adapter: "mysql2" database: "books" encoding: utf8 host: "" username: "root" password: "" reconnect: true

DB接続がデフォルトなので当然こけます

リカバリ方法は2つ

Page 73: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 74: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 75: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 76: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]
Page 77: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

OpsWorks Ruby on Railsデプロイ

(紙芝居) 完了

Page 78: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

最後にCloudFormation,Elastic Beanstalk, OpsWorks... あとOpscode Chef、 結局どれをつかえばいいの?

78

Page 79: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

目的が達成できるならなんでもいいと思

います。...それでもやっぱりお悩みなら

Page 80: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

相談するのがよいでしょう OpsRock.in

80

Page 81: Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

おわり。 !

17:00~の Immutable Infrastructureトラック

パネルディスカッションも どうぞよろしく