cm re growth-reinvent-app304-kaji

Post on 13-Aug-2015

877 Views

Category:

Engineering

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Ⓒ Classmethod, Inc.

re:Invent 2014「APP304 - AWS CloudFormation ベストプラクティス」 のレポート

1

DEVIO MTUP11-SAPPORO-002

梶 浩幸 AWSコンサルティング部2014年12月12日

Ⓒ Classmethod, Inc.

自己紹介梶 浩幸(かじ ひろゆき) AWSコンサルティング部 ソリューションアーキテクト

Twitter ID:

@cocacola917

2

ブログ http://dev.classmethod.jp/author/kaji-hiroyuki/

Ⓒ Classmethod, Inc.

自己紹介• ネットワーク屋出身 • 某ネットワーク機器メーカSE • 某セキュリティ系会社のシステム運用者 • クラスメソッド(今ココ)

• コカコーラが好きなITインフラエンジニア

• 好きなAWSサービス=VPC

3

“勉強会でのお話は初めてです。優しい目で見てください。”

Ⓒ Classmethod, Inc.

Agenda• CloudFormationとは • re:Invent2014 • APP304 CloudFormation ベストプラクティスレポート

5

CloudFormationとは

6

Ⓒ Classmethod, Inc.

CloudFormationとはEC2、RDS、ELBなとを使ったAWSサービスのシステム構築を、設定ファイル(テンプレート)を元に行えるサービスです。

7

Ⓒ Classmethod, Inc.

特徴JSONフォーマットのテキストファイル CloudFormationは無料で利用できる。 構築した各サービスで課金。

8

Ⓒ Classmethod, Inc.

何ができるのか?テンプレートを作成すると同じ構成を作れる。サンプルテンプレートもある。 開発環境と本番環境を同じ構成で構築。 DB(RDS)の接続先(エンドポイント)をサーバ(EC2)へ渡せます。

9

APP304 CloudFormation ベストプラクティスレポート

10

Ⓒ Classmethod, Inc.

まえおき• 40分の内容のため抜粋版。 • 英語苦手&なまりあって聞き取れず、理解不足あるかも。 • 解釈に誤りがあれば「こっそり」コメントください。

• 元の資料のリンク • AWS re:Invent2014【保存版】全セッションを網羅!非公式まとめ

• http://dev.classmethod.jp/cloud/aws/aws-reinvent2014/

11

Ⓒ Classmethod, Inc.

スタックをどう計画するのか?

12

Ⓒ Classmethod, Inc.

レイヤーや環境ごとに整理

13

Ⓒ Classmethod, Inc.

サービス指向アーキテクチャの適用

14

Ⓒ Classmethod, Inc.

サービス指向アーキテクチャの適用

15

Ⓒ Classmethod, Inc.

再利用性·専門化のためのネストされたスタック

16

Ⓒ Classmethod, Inc.

どのようにエラーの無いスタックの作成できるのか?

17

Ⓒ Classmethod, Inc.

テンプレートを検証しましょう

18

Ⓒ Classmethod, Inc.

検証(Validate)• awscliを事前にインストールしてください。 • 以下のスクリプトでテンプレートファイルを指定し実行

• チェックの結果、エラーなしの場合はParameter一覧が出力されます。

19

$cat check.sh #!/bin/sh FILE=$1 cat $FILE | xargs -0 aws cloudformation validate-template ̶template-body $./check.sh <ファイル名>

awscli(Python版)でCloudFormationテンプレートをValidateする http://dev.classmethod.jp/cloud/aws/awscli-cfn-validate/

Ⓒ Classmethod, Inc.

パラメータタイプが使える

20

Ⓒ Classmethod, Inc.

どうやってソフトウェアやデータをデプロイするのか?

21

Ⓒ Classmethod, Inc.

AWS::CloudFormation::Initを使う

22

Ⓒ Classmethod, Inc.

AWS::CloudFormation::Initを使う

23

Ⓒ Classmethod, Inc.

AWS::CloudFormation::Initを使う

24

Ⓒ Classmethod, Inc.

AWS::CloudFormation::Initを使う

25

Ⓒ Classmethod, Inc.

CloudWatch Logsを使ってデバック

26

Ⓒ Classmethod, Inc.

CloudWatch Logsを使ってデバック

27

Ⓒ Classmethod, Inc.

予想通りスタックが実行されていることを確認するには?

28

Ⓒ Classmethod, Inc.

IAMを使って保護

29

Ⓒ Classmethod, Inc.

CloudFormationでのみUpdateする

30

Ⓒ Classmethod, Inc.

IAMとタグでリソースを保護

31

Ⓒ Classmethod, Inc.

コメントを追記する

32

Ⓒ Classmethod, Inc.

安全にスタックするには?

33

Ⓒ Classmethod, Inc.

選べるアップデートスタイル

34

Ⓒ Classmethod, Inc.

スタックアップデートチェックリスト

35

何をアップデートするのかレビュー • 新旧テキストの差分 • 関連リソースへの更新を「Refs and Fn::GetAtts」

で予想

更新が実行されるかを確認します • リソースタイプと特性を更新するには、更新が「いいえ中断'、'いくつかの中断'、'交換'でするかどうかを決定

リソースの更新とロールバックを行うには十分なIAMの権限を確認します。

スタックは、そのテンプレートからドリフトしていないことを確認します。

Ⓒ Classmethod, Inc.

ガードレールとしてスタックポリシーを使用

36

Ⓒ Classmethod, Inc.

ダウンタイム0のためのローリングアップデートを使う

37

Ⓒ Classmethod, Inc.

CloudFormationをどう拡張するのか?

38

Ⓒ Classmethod, Inc.

カスタムリソースを拡張

39

Ⓒ Classmethod, Inc.

スタックを監査するにはどうするか?

40

Ⓒ Classmethod, Inc.

監査

41

Ⓒ Classmethod, Inc.

作成したスタックのコストを確認するには?

42

Ⓒ Classmethod, Inc.

AWS Cost Explorerでタグでフィルタ

43

Ⓒ Classmethod, Inc.

全体的なDevOpsのパイプラインは次のようになります。

44

Ⓒ Classmethod, Inc.

DevOpsパイプラインで

45

Ⓒ Classmethod, Inc.

まとめ1.CloudFormationテンプレートを作成する際、レイヤーやフェイズ毎に分割する。 2.ValidateやParameterをリストから選択し、エラー無く実行。 3.アップデート行う際は、チェックリストに基づいたレビュー、IAMやStackPolicyなどで保護して実行。

また、ローリングアップデートでのゼロダウンタイム等、知らない使い方がありました。さらに深堀していきたいと思います。

46

Ⓒ Classmethod, Inc.

#cmdevio

ご静聴ありがとうございました。 スライドは後日ブログで公開します。

47

DevIO MTUP11-SAPPORO-002

top related