狠狠撸

狠狠撸Share a Scribd company logo
よくわかるAWS OpsWorks
AWS OpsWorks概要&アップデート紹介
2015/03/26
アマゾン データ サービス ジャパン株式会社
ソリューションアーキテクト 舟崎 健治
自己紹介
? 名前:舟崎 健治(ふなさき けんじ)
? 所属:アマゾン データ サービスジャパン
? 職種:ソリューションアーキテクト
? 好きなAWSのサービス:AWS OpsWorks
AWS初心者向けWebinarの活動に取り組んでい
ます!
Introduction ~よく頂くご要望~
デプロイを
自動化したい。
運用負荷を
軽減したい。
開発者、または
システム管理者
AWS OpsWorksとは
? アプリケーションのライフサイクル管理サービス
? デプロイを頻繁に、早く、セキュアに実行可能
? スケーラブルで複雑なインフラストラクチャを管理、モデル化、自動化
することが可能
? ビルトイン構成を使って簡単に開始可能
? 追加コストは不要
なぜAWS OpsWorksを使うと良いのでしょうか?
自動化できる領域が多くなる
デプロイ自動化 運用タスクの自動化
運用負荷を軽減できる
EC2インスタンスの構築例
インスタンス起動
ソフトウェアインストール?構
成用のスクリプトを実行
アプリケーションのデプロイ
EC2のAPIで自動化が可能
ユーザー側でインスタンス内部
で起動スクリプト等を使って、
自動化が可能
OpsWorksインスタンスの構築例
インスタンス起動
ソフトウェアインストール?構
成用のChefレシピを実行
アプリケーションのデプロイ用
のChefレシピを実行
OpsWorksのAPIで
自動化が可能
なぜ、OpsWorksでインスタンス内部のChefレシピをリ
モートからOpsWorks APIで実行可能か?
OpsWorksインスタンス内で、
OpsWorksエージェントがインストール?動作
しているため
OpsWorksの基本的な仕組み(1)
EC2インスタンス上の
OpsWorksエージェント
OpsWorks
talks with
OpsWorks エージェントから
OpsWorks エンドポイントに対し
てPolling(アウトバウンド通信)
OpsWorksの基本的な仕組み(2)
OpsWorksによって発行された一連の
コマンドを取得
AgentがChef solo(Chef Zero)で
レシピを実行
EC2インスタンス上の
OpsWorks Agent
Chef 11.10ではChef Client
のlocal modeにて動作
OpsWorksの動作要件
? Amazon LinuxまたはUbuntu 12.04LTS,14.04LTS
ベース
– AMIをカスタマイズ可能
? Chefバージョン0.9, 11.4, 11.10に対応
? VPC対応
– デフォルトVPC, 自作VPC共に利用可能
? ELB、RDS、CloudFormation、CloudTrailに対応
? 起動したインスタンスからOpsWorksサービスエンドポ
イントへアウトバウンド通信が可能であること
OpsWorks利用の流れ
User AWS Management
Console
Stack
OpsWorks利用の流れ
User AWS Management
Console
構成情報
(JSON)
①スタックの作成
Stack
OpsWorks利用の流れ
User AWS Management
Console
Load Balancerレイヤー
App Serverレイヤー
Databaseレイヤー
構成情報
(JSON)
①スタックの作成
②レイヤーの作成
Stack
OpsWorks利用の流れ
User AWS Management
Console
Load Balancerレイヤー
App Serverレイヤー
Databaseレイヤー
レシピ
レシピ
レシピ
構成情報
(JSON)
①スタックの作成
②レイヤーの作成
③レシピの設定(Appの設定)
Stack
OpsWorks利用の流れ
User AWS Management
Console
Load Balancerレイヤー
App Serverレイヤー
Databaseレイヤー
レシピ
レシピ
レシピ
構成情報
(JSON)
①スタックの作成
②レイヤーの作成
③レシピの設定(Appの設定)
④レイヤーに
インスタンス追加?起動
Stack
OpsWorks利用の流れ
User AWS Management
Console
Load Balancerレイヤー
App Serverレイヤー
Databaseレイヤー
レシピ
レシピ
レシピ
DB
Web
/App
LB
①スタックの作成
②レイヤーの作成
③レシピの設定(Appの設定)
④レイヤーに
インスタンス追加?起動
⑤ライフサイクルイベントによ
り、レシピが自動実行される
構成情報
(JSON)
Web
/App
スタックとは
? OpsWorksのトップエンティティ
? 属する全インスタンスの構成を管理
– OSの種類、リージョン、インスタンスのIPアドレスなど
? カスタムレシピを保存する任意のリポジトリを指定可能
? VPC内部に作成可能
? スタックをコピー可能
– リージョン間でも可能
レイヤーとは
? インスタンス構築のための青写真(設計図)
レシピを指定して、パッケージインストール
などの必要な処理を定義
カスタムレシピも定義可能
追加のEBSボリュームの指
定。RAID指定も可能
ビルトインレイヤーの種類
? Load Balancer
– HAProxy
– ELB(各レイヤーに個別
にアタッチ可能)
? App Server
– Static Web Server
– Rails App Server
– PHP App Server
– Node.js App Server
? DB
– MySQL
– RDS
? Other
– Memcached
– Ganglia
– Custom
? ビルトインレイヤー以外にもカスタムレイヤーを使って任意
の役割を持つレイヤーを作成可能(Jenkinsレイヤーなど)
インスタンスとは
? アプリケーションを提供するためのEC2
インスタンスのこと
? 起動時にインスタンスサイズやAZ(VPC
内の場合はサブネット)を指定
? インスタンス内部にOpsWorks Agentが
動作している
インスタンスのスケーリングタイプ
? インスタンスを(自動)追加起動?終了する方法として
以下の3パターンがある
– 24/7 インスタンス
? 常時稼働
– 負荷ベースのインスタンス
– 時間ベースのインスタンス
Appとは
? アプリケーションサーバーにデプロイする
アプリケーションのこと
? 利用可能なアプリケーションの種類(標準
のアプリケーションサーバーレイヤーに相
当する)
– Ruby on Rails / PHP / Node.js(JavaScript) /
Static(HTML) / Java / AWS Flow(Ruby) / Other
? サポートするリポジトリ
– Git / Subversion / HTTP archive / S3 Archive / Other
– GithubやBitBucketも使用可能
OpsWorksの 5 つのライフサイクルイベント
Setup
Configure
Deploy
Undeploy
Shutdown
どのタイミングで
ライフサイクルイベントが
実行されるか?
最初のインスタンスを追加
App
サーバー
Setup Deploy Configure Execute
Recipe
Shutdown
最初のインスタンスを起動すると、Setupが
自動実行されるAppサーバー
の起動
App
サーバー
Setup Deploy Configure Execute
Recipe
Shutdown
Setupが実行された後にDeployが自動実行
されるAppサーバー
の起動
App
サーバー
Setup Deploy Configure Execute
Recipe
Shutdown
インスタンスがonlineになるとConfigure
が自動実行されるAppサーバー
の起動
App
サーバー
Setup Deploy Configure Execute
Recipe
Shutdown
データベースインスタンスの追加
Appサーバー
の起動
App
サーバー
DB
サーバー
Setup Deploy Configure Execute
Recipe
Shutdown
Setup, Deployが自動実行される
Appサーバー
の起動
App
サーバー
DB
サーバー
DBサーバー
の起動
Setup Deploy Configure Execute
Recipe
Shutdown
DBサーバーがonlineになるとスタック内の全イン
スタンスでConfigureが自動実行される
Appサーバー
の起動
App
サーバー
DB
サーバー
DBサーバー
の起動
Setup Deploy Configure Execute
Recipe
Shutdown
さらにインスタンスを追加
Appサーバー
の起動
App
サーバー
DB
サーバー
App
サーバー
DBサーバー
の起動
Setup Deploy Configure Execute
Recipe
Shutdown
Setup、Deployが自動実行される
Appサーバー
の起動
App
サーバー
DB
サーバー
App
サーバー
DBサーバー
の起動
Setup Deploy Configure Execute
Recipe
Shutdown
Appサーバー
の起動
インスタンスがonlineになるとスタック内の全イ
ンスタンスでconfigureが自動実行される
Appサーバー
の起動
App
サーバー
DB
サーバー
App
サーバー
DBサーバー
の起動
Setup Deploy Configure Execute
Recipe
Shutdown
Appサーバー
の起動
手動でデプロイを実行
Appサーバー
の起動
App
サーバー
DB
サーバー
App
サーバー
DBサーバー
の起動
Setup Deploy Configure Execute
Recipe
Shutdown
Appサーバー
の起動
手動で
デプロイを
実行
レシピを手動で実行
Appサーバー
の起動
App
サーバー
DB
サーバー
App
サーバー
DBサーバー
の起動
Setup Deploy Configure Execute
Recipe
Shutdown
Appサーバー
の起動
手動で
デプロイを
実行
レシピ単体を
実行
インスタンスを停止
Appサーバー
の起動
App
サーバー
DB
サーバー
App
サーバー
DBサーバー
の起動
Setup Deploy Configure Execute
Recipe
Shutdown
Appサーバー
の起動
手動で
デプロイを
実行
レシピ単体を
実行
Appサーバーの
シャットダウン
インスタンスがonlineでなくなると、Configure
が自動実行される
Appサーバー
の起動
App
サーバー
DB
サーバー
App
サーバー
DBサーバー
の起動
Setup Deploy Configure Execute
Recipe
Shutdown
Appサーバー
の起動
手動で
デプロイを
実行
レシピ単体を
実行
Appサーバーの
シャットダウン
ライフサイクルイベントに登録するレシピの
例(レイヤー別)
Setup Configure Deploy Undeploy Shutdown
ロードバラン
サーレイヤー
ロードバラ
ンサーをイ
ンストール
アプリケーショ
ンサーバーのIP
をアップデート
コネクション
をDrainする
アプリケー
ションサー
バーレイヤー
アプリケー
ションサー
バーをイン
ストール
DB接続先をアッ
プデートしてリ
スタート
アプリケー
ションコード
をアップデー
トしてリス
タート
アプリケー
ションを削
除してリス
タート
ログを保存
データベース
レイヤー
データベー
スをインス
トール
アプリケーショ
ンサーバーのIP
のACLをアップ
デート
スナップ
ショットの作
成
AWS OpsWorks アップデート
AWS OpsWorksアップデート内容
? 2015/12/8
既存のEC2インスタンスとオンプレミスサーバの
サポート
? 2014/12/15
カスタムシャットダウンとELBのコネクションドレイン機能のサポート
? 2015/3/2
Ruby 2.2サポート
AWSとオンプレミスのハイブリッド構成
? オンプレミス環境の仮想サーバ、あるい
は物理サーバにOpsWorksエージェント
をインストールして、管理可能
? サーバ1台あたり
$0.02/hour
Instance A Instance B Instance C Instance D
オンプレミス環境 AWS Cloud
オンプレミス環境での対応
オペレーティングシステム
? Ubuntu 12.04 LTS
? Ubuntu 14.04 LTS
2015/3/22現在
register an instanceを選択
インスタンスタイプを选択
AWS CLIのインストール
AWS CLIでインスタンス登録コマンドを実行
登録されたインスタンスをレイヤーにアサインする
レイヤーへのアサインを確認
オンプレミスのサーバ
の追加完了
まとめ
まとめ
? AWS OpsWorksを使って、デプロイ?運用タスクを自
動化可能
? ライフサイクルイベントにより、適切なタイミングで
Chefレシピを自動実行可能
? オンプレとAWSのハイブリッド構成が可能
新しいDevOpsソリューションをお試しください!
ご清聴顶きありがとうございました!
Appendix
OpsWorksで実行可能なコマンド
? 以下の2種類がある
? スタックコマンド
? スタック全体の構成を変更?管理するためのコマンド
? AWSマネージメントコンソール、AWS SDK、AWS CLIでリモートから実
行可能
? エージェントコマンド
? デバッグやトラブルシューティングのために利用するコマンド
? それ以外の用途の場合は、スタックコマンドの利用を推奨
? インスタンス内部にログインして実行可能。
? sudoもしくはroot権限が必要
OpsWorksインスタンスに対して
リモートからChefレシピ実行コマンドを発行
実行するスタックコマンドを
選択
実行するCookbook/レシピ名
を選択
実行するインスタンスを選択
スタックコマンドを使ってリモートから任意のタイミング
でインスタンスにコマンドを実行可能
スタックコマンド 内容
Install Dependencies 全てのパッケージをインストールする
Update Dependencies 全てのパッケージをアップデートする
Update Custom
Cookbooks
リポジトリにある更新されたCookbookをそれぞれのインスタンスに展開する
Execute Recipes 指定したレシピを指定したインスタンス上で実行する
Setup Setupのレシピを実行する(Setupを実行するとDeployもその後で実行される)
Configure Configureのレシピを実行する。
AWS Management
Console
管理者
Instances
インスタンスからの
Pollingのタイミング
でExecute Recipes
を実行
OpsWorksエージェ
ントがChefレシピを
実行Execute Recipes
実行リクエスト
レシピを自動で実行させるには?
? Execute Recipesのスタックコマンドをcron等のタスク
スケジューラを使って自動実行
? OpsWorksのライフサイクルイベントにレシピを登録し
て、適切なタイミングで自動実行
さらに、AWS OpsWorksでは
継続的な構成管理が可能です。
構成情報の管理
(途中省略)
"instance": {
"id": "b29e44ed-6245-40a6-9575-eaa97a3a3d49",
"hostname": "custom12",
"instance_type": "t2.micro",
"public_dns_name": "ec2-54-65-253-240.ap-northeast-1.co
"private_dns_name": "ip-10-0-0-15.ap-northeast-1.comput
"ip": "54.65.253.240",
"private_ip": "10.0.0.15",
"architecture": "x86_64",
"layers": [
"custom1",
"php-app"
], (以下省略)
OpsWorks
構成情報をキャッシュ
として保持
構成情報
(JSON)
スタック内の
インスタンス
構成情報をJSON形式で保持
ホスト名
IP
レイヤー等
構成情報(JSON)内のパラメータをChefレシピから
取得する例
"deploy": {
“appname": {
(途中省略)
"database": {
"host": “xxx.ap-northeast-1.rds.amazonaws.com",
"database": "test",
"port": 3306,
"username": "awsuser",
"password": "mypassword",
"reconnect": true,
"data_source_provider": "rds",
"type": "mysql"
},
(以下省略)
dbname = node[:deploy][:appname][:database][:database]
dbuser = node[:deploy][:appname][:database][:username]
dbpass = node[:deploy][:appname][:database][:password]
dbhost = node[:deploy][:appname][:database][:host]
deploy JSONの例
Chefレシピから取得する例
取得した値をApp Serverインスタンスのローカル
にDB接続用の設定ファイルとして保持しておく。
configureが実行されるたびに上記値を更新する
ElastiCacheとの連携例
スタック
App Serverレイヤー
ElastiCache Redis
構成情報
(JSON)
{
"deploy": {
"elasticacheredisexample": {
"redis": {
"host": "mycluster.XXX.amazonaws.com",
"port": "6379"
}
}
}
}
ElastiCache
Redisを事前
に作成
Chefレシピから上記パラメータを取得する
詳細
http://aws.amazon.com/blogs/aws/using-aws-
elasticache-for-redis-with-aws-opsworks/
ElastiCache以外のデータストアを利用する場合も
上記方法と同様に連携が可能
? OpsWorksではElastiCacheは未サポートだが、スタック
JSONに接続情報を追加することで連携可能
プライベートサブネット内にOpsWorksインスタンス
を配置可能
VPC Public Subnet
VPC Private Subnet
Internet
Gateway
NAT
App Code
Repository
? OpsWorksにより起動された
インスタンスはOpsWorks
サービスエンドポイントと接
続が必須
(Privateサブネット利用時は
NAT必須)
? プライベートサブネット内の
コードリポジトリを利用可能
OpsWorks
instances
アウトバウンド
通信が必要

More Related Content

よくわかるAWS OpsWorks: AWS OpsWorksの概要&アップデート紹介