20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
-
Upload
daisuke-miyamoto -
Category
Technology
-
view
1.686 -
download
0
description
Transcript of 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
![Page 1: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/1.jpg)
クラスメソッド株式会社 都元ダイスケ
CloudFormation
#jawsdays #ace
![Page 2: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/2.jpg)
自己紹介• Webアプリ屋 出身のAWS屋
• Classmethod所属
• AWS歴 2.5年
• @daisuke_m
CloudFormationEC2S3
Glacier
ElasticMapReduce
AutoScaling
ELB
CloudFrontRDS
DynamoDBElastiCache
RedShift
IAM
CloudWatch
BeanstalkData Pipeline
OpsWorks
CloudHSM
CloudSearch
SWF
SQS
SNSSES Transcoder
Route53VPCDirectConnect
StorageGateway
Mechanical Turk
CloudTrail
AppStream
Kinesis
#jawsdays #ace
![Page 3: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/3.jpg)
works
✦ AWSインフラの コンサル・設計・構築
✦ お客様向けアプリケーションの DevOps
✦ 人間CloudFormer
✦ 気づくと書いてるJSONが1000行越えてます
#jawsdays #ace
![Page 4: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/4.jpg)
Agenda
• CloudFromationの概要
• CloudFormation Helper Scripts
• CFnで実現する Blue-Green Deployment
#jawsdays #ace
![Page 5: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/5.jpg)
‒ D-chan
“SSHしたら負けかなと思っている。”
※ あくまでも心意気の話ですが
#jawsdays #ace
![Page 6: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/6.jpg)
CloudFormation
#jawsdays #ace
![Page 7: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/7.jpg)
CloudFormation
Template
+Parameter
Parameter
Stack
Bucket withObjects
DynamoDB Table
ELB
Instances Auto Scaling Amazon CloudFront
基本的システム構成 S3, DynamoDB, EC2,
IAM, AutoScaling, SecurityGroup, ELB, CloudFront
Instance Type, クラスタの台数,
SSH接続元IP, キー名, ...等
![Page 8: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/8.jpg)
Template
#jawsdays #ace
JSON、ということはインフラを バージョン管理できる\(^o^)/
![Page 9: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/9.jpg)
育てるインフラ
• インフラの構成をTemplateとしてバージョン管理する
• TemplateからStackを作る(構築)
• インフラ構成を追加・編集(そしてバージョン管理)
• 既存Stackを新しいテンプレートで更新する(成長)
#jawsdays #ace
![Page 10: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/10.jpg)
Resource
【S3のバケットを1つ作成する例】 "CacheBucket" がリソース名
"Type" に種類リソースの種類を指定して "Properties" で詳細設定する
![Page 11: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/11.jpg)
Parameter
#jawsdays #ace
![Page 12: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/12.jpg)
Parameter Reference
#jawsdays #ace
![Page 13: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/13.jpg)
Parameter Inputs
#jawsdays #ace
![Page 14: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/14.jpg)
Mapping / Mapping Reference
![Page 15: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/15.jpg)
Output
![Page 16: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/16.jpg)
突然ですがここでCFnの課題
✦ テスタビリティ
✦ 一部作成に対応していないサービス有り(順次)
✦ 一部更新に対応していないサービス有り(順次…)
✦ 自動化コンポーネントを手動で触るとFAILEDステータスとなり、詰む(御法度)
![Page 17: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/17.jpg)
CloudFormtaion Helper Scripts
#jawsdays #ace
![Page 18: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/18.jpg)
user-data
![Page 19: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/19.jpg)
user-data
![Page 20: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/20.jpg)
user-data
自己組織化
![Page 21: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/21.jpg)
user-dataの問題点
✦ 失敗検知ができない
✦ 複雑になると、カオス化する(手順の構造化)
✦ 設定の更新(再実行)ができない
✦ Immutable Infrastructureからは離れるが
#jawsdays #ace
![Page 22: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/22.jpg)
WaitCondition(失敗検知)
![Page 23: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/23.jpg)
cfn-init(手順の構造化)
![Page 24: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/24.jpg)
Metadata AWS::CloudFormation::Init
![Page 25: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/25.jpg)
![Page 26: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/26.jpg)
cfn-hup(更新ヘルパー)
![Page 27: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/27.jpg)
configSets• cfn-init起動時の -c でconfigSetを指定する !
• configSetは、実行するconfigのリストと順序を定義 !
• packages • sources • users • groups • files • commands • services
それぞれの 設定の中で この順序で 実行される
![Page 28: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/28.jpg)
cfn-hupの設定
![Page 29: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/29.jpg)
CloudFormtaionで実現する Blue-Green Deployment
#jawsdays #ace
![Page 30: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/30.jpg)
![Page 31: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/31.jpg)
![Page 32: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/32.jpg)
というテンプレート 書いてみた。
![Page 33: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/33.jpg)
パラメータ(主なもの)
✦ ProductionEnv (“blue” or “green”)
✦ BlueInstanceType / GreenInstanceType
✦ BlueFleetSize / GreenFleetSize
✦ BlueApplication / GreenApplication
#jawsdays #ace
![Page 34: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/34.jpg)
アプリのtgz URL
更新されたらhttpd再起動
PHPの中から
$_SERVER[‘RDS_…’] で参照
![Page 35: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/35.jpg)
![Page 36: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/36.jpg)
デプロイ(開発時)
• 現在Blueが本番だとすると、Greenが開発
• アプリケーションファイルをtar.gzに固める
• S3にアップロードし、そのURLを確認
• GreenのURLを書き換えてStack update
#jawsdays #ace
![Page 37: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/37.jpg)
スワップ(リリース時)• Blueが本番だとすると、Greenが開発
• Greenに次期バージョンをデプロイして動作確認
• OKだったらGreenを増強(インスタンスサイズ↗ 数量↗)
• ProductionEnvをblueからgreenに書き換えてStack update
• 切り替わったらBlueを縮退(インスタンスサイズ↘ 数量↘)
• 以降、Greenが本番で、Blueが開発環境となる
#jawsdays #ace
![Page 39: 20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編](https://reader034.fdocument.pub/reader034/viewer/2022052522/548074cdb4af9fc9158b5de0/html5/thumbnails/39.jpg)
まとめCloudFormationの5要素
Parameter
Condition
Mapping
Resource
Outputs
CFn Helper Scripts
cfn-signal (WaitCond.)
cfn-init
cfn-hup
Blue-Green Deployment
#jawsdays #ace