20140315 jaws days 2014 aceに聞け! cloudformation編

Post on 28-Nov-2014

1.687 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

クラスメソッド株式会社 都元ダイスケ

CloudFormation

#jawsdays #ace

自己紹介• 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

works

✦ AWSインフラの コンサル・設計・構築

✦ お客様向けアプリケーションの DevOps

✦ 人間CloudFormer

✦ 気づくと書いてるJSONが1000行越えてます

#jawsdays #ace

Agenda

• CloudFromationの概要

• CloudFormation Helper Scripts

• CFnで実現する Blue-Green Deployment

#jawsdays #ace

‒ D-chan

“SSHしたら負けかなと思っている。”

※ あくまでも心意気の話ですが

#jawsdays #ace

CloudFormation

#jawsdays #ace

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, キー名, ...等

Template

#jawsdays #ace

JSON、ということはインフラを バージョン管理できる\(^o^)/

育てるインフラ

• インフラの構成をTemplateとしてバージョン管理する

• TemplateからStackを作る(構築)

• インフラ構成を追加・編集(そしてバージョン管理)

• 既存Stackを新しいテンプレートで更新する(成長)

#jawsdays #ace

Resource

【S3のバケットを1つ作成する例】 "CacheBucket" がリソース名

"Type" に種類リソースの種類を指定して "Properties" で詳細設定する

Parameter

#jawsdays #ace

Parameter Reference

#jawsdays #ace

Parameter Inputs

#jawsdays #ace

Mapping / Mapping Reference

Output

突然ですがここでCFnの課題

✦ テスタビリティ

✦ 一部作成に対応していないサービス有り(順次)

✦ 一部更新に対応していないサービス有り(順次…)

✦ 自動化コンポーネントを手動で触るとFAILEDステータスとなり、詰む(御法度)

CloudFormtaion Helper Scripts

#jawsdays #ace

user-data

user-data

user-data

自己組織化

user-dataの問題点

✦ 失敗検知ができない

✦ 複雑になると、カオス化する(手順の構造化)

✦ 設定の更新(再実行)ができない

✦ Immutable Infrastructureからは離れるが

#jawsdays #ace

WaitCondition(失敗検知)

cfn-init(手順の構造化)

Metadata AWS::CloudFormation::Init

cfn-hup(更新ヘルパー)

configSets• cfn-init起動時の -c でconfigSetを指定する !

• configSetは、実行するconfigのリストと順序を定義 !

• packages • sources • users • groups • files • commands • services

それぞれの 設定の中で この順序で 実行される

cfn-hupの設定

CloudFormtaionで実現する Blue-Green Deployment

#jawsdays #ace

というテンプレート 書いてみた。

パラメータ(主なもの)

✦ ProductionEnv (“blue” or “green”)

✦ BlueInstanceType / GreenInstanceType

✦ BlueFleetSize / GreenFleetSize

✦ BlueApplication / GreenApplication

#jawsdays #ace

アプリのtgz URL

更新されたらhttpd再起動

PHPの中から

$_SERVER[‘RDS_…’] で参照

デプロイ(開発時)

• 現在Blueが本番だとすると、Greenが開発

• アプリケーションファイルをtar.gzに固める

• S3にアップロードし、そのURLを確認

• GreenのURLを書き換えてStack update

#jawsdays #ace

スワップ(リリース時)• Blueが本番だとすると、Greenが開発

• Greenに次期バージョンをデプロイして動作確認

• OKだったらGreenを増強(インスタンスサイズ↗ 数量↗)

• ProductionEnvをblueからgreenに書き換えてStack update

• 切り替わったらBlueを縮退(インスタンスサイズ↘ 数量↘)

• 以降、Greenが本番で、Blueが開発環境となる

#jawsdays #ace

gist bit.ly/cfn-bgd-php

1000行超えたJSONがここに

#jawsdays #ace

まとめCloudFormationの5要素

Parameter

Condition

Mapping

Resource

Outputs

CFn Helper Scripts

cfn-signal (WaitCond.)

cfn-init

cfn-hup

Blue-Green Deployment

#jawsdays #ace

top related