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

Preview:

DESCRIPTION

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

Citation preview

HiganWorks合同会社/opsrock 澤登 亨彦

OpsWorks

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

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

2

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

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

3

NOW Printing

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

4

NOW Printing

運営組織

5

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

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

• 導入支援コンサルも

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

6

AWS OpsWorks の概要

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

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

8

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

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

9

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

10

OpsWorks Agent

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

OpsWorksの機能と 関連するAWS達

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

12

Amazon EC2 Auto Scaling Elastic Load Balancing

Amazon S3

CloudWatch IAM Amazon SQS

機能対応表

13

OpsWorks 関連AWS

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

モニタリング CloudWatch

パーミッション IAM

オートスケール ELB, AutoScaling

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

スタックとレイヤ

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

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

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

DB

WebServer

Application

System A

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

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

17

OpsWorksのライフサイクル定義

プラットフォーム部分

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

18

設定情報登録例: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"! }!}

※一部抜粋

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

20

OpsWorksのライフサイクル定義

アプリケーション部分

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

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

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

21

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

22

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

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

23

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

24

OpsWorksの オートスケール

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

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

26

AutoScale(OpsWorks)設定例

27

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

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

監視ビュー

CloudWatchの自動グルーピング

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

29

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

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

30

OpsWorks Ruby on Railsデプロイ

(紙芝居)

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

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

Railsプラットホーム OK

おや、 DBレイヤ(mysql)が

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

とりあえず SQLite3でいいや

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

しばし待つ

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’ もバッチリ

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

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

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

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

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

リカバリ方法は2つ

OpsWorks Ruby on Railsデプロイ

(紙芝居) 完了

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

78

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

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

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

80

おわり。 !

17:00~の Immutable Infrastructureトラック

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

Recommended