Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Developer Day
Ansible + Packer +
CloudFormation で
らくらく構築・運用
1
H-3
望月 政夫, AWSコンサルティング部
クラスメソッド株式会社
Ⓒ Classmethod, Inc.
2015...
自己紹介
• 望月 政夫
• Twitter: @Canelmo
• @Classmethod 2013.10∼
• AWS環境構築・その他諸々担当
• DeNA Baystars 2007.04∼
2Ⓒ Classmethod, Inc.
おしながき
• 今日話す技術について
• 利用してみた感想
• 今後の展望について
3Ⓒ Classmethod, Inc.
本題
4
Developer Day
Ansible + Packer +
CloudFormation で
らくらく構築・運用
5
A-1
望月 政夫, AWSコンサルティング部
クラスメソッド株式会社
Ⓒ Classmethod, Inc.
2015...
Developer Day
Ansible + Packer +
CloudFormation で
らくらく構築・運用
6
A-1
望月 政夫, AWSコンサルティング部
クラスメソッド株式会社
Ⓒ Classmethod, Inc.
2015...
「らくらく」とは
7
人によって観点はちがう
• 構築が楽
• 自動化
• テスト
• ドキュメント
• 運用が楽
• 障害対応
• 監視
• 定常作業
8Ⓒ Classmethod, Inc.
個人的には
• 楽したいポイントがある
• SSHでログインしたくない
• SSH 管理めんどう
• 何度もManagement Consoleを開きたくない
• アクセスキー管理めんどう
• EC2の設定ミスした時にもう一回同じ操作をしたくな...
個人的な「楽したい」を
満たすための
環境を作ればよい
10
個人的には
• 楽したいポイントがある
• SSHでログインしたくない
• SSH 管理めんどう
• 何度もManagement Consoleを開きたくない
• アクセスキー管理めんどう
• EC2の設定ミスした時にもう一回同じ操作をしたくな...
Ansible
• 構成管理ツール
• Chef, Puppetと同等
• YAMLで管理
• Dynamic Inventory機能による動的ホスト一覧生成
• AutoScaling環境に有用
12Ⓒ Classmethod, Inc.
動的ホスト一覧生成
• インベントリファイル(ホスト一覧)不要
• タグやセキュリティグループで絞り込み可能
• 数百台単位でも利用できる
• https://raw.githubusercontent.com/ansible/ansible/...
Packer
• AMI作成補助ツール
• Vagrant等のHashicorp製
• 新規にEC2を起動し、Ansibleで設定を流し込んだものを

AMI化する
• 常に初期状態からAMIを作ることができる
14Ⓒ Classmethod,...
CloudFormation
• AWSのサービス管理ツール
• 利用するサービスをJSONで定義
• 一度書いたテンプレートファイルは再利用可能
• 他のリージョンでも動く(動くように書いていれば!)
• http://dev.classme...
組み合わせて使う
• CloudFormationでAWSの構築
• Packer + AnsibleでAMI作成
• CloudFormationのパラメータ(AMI ID)を変更
• 変更が入ったらAnsibleを再度適用
• Packer...
活用事例をいくつか
17
とあるイベントのお仕事で
• EC2数百台を利用するアプリケーション基盤の構築
• マルチリージョン
• アプリケーション(node.js)は数種類
• DynamoDB, SNS, S3, Route53…
• CloudFormationで...
Packerの実行時間が長い
• node.jsのコンパイルに時間がかかりストレス
• PackerのAMI作成のプロセスを分離することにした
19Ⓒ Classmethod, Inc.
Amazon Linux Base AMI Golden...
Packerの実行時間が長い
• node.jsのコンパイルに時間がかかりストレス
• PackerのAMI作成のプロセスを分離することにした
20Ⓒ Classmethod, Inc.
Amazon Linux Base AMI Golden...
Packerの実行時間が長い
• node.jsのコンパイルに時間がかかりストレス
• PackerのAMI作成のプロセスを分離することにした
21Ⓒ Classmethod, Inc.
Amazon Linux Base AMI Golden...
AMIが複数作成されると
• AMIが大量に作成されてよくわからないことに…
22Ⓒ Classmethod, Inc.
AMIが複数作成されると
• AMIが大量に作成されてよくわからないことに…
• 方針を変えた
• アプリケーションごとにAMIを作成していたが

それを廃止。AMIを1種類にして

Cloud DI を活用
23Ⓒ Classmethod, ...
Cloud DIパターン
• CDPの一つ
• EC2タグの値に応じてふるまいを変える
• Environmentタグ
• production
• dev
• staging
• Roleタグ
• main
• batch…
24Ⓒ Clas...
使ってみた感想
• 設定が秘伝のタレ化することが少なくなった
• だれでもいつでも、どの環境でも再現することができる
• 簡単に手を加えることができる
• 他リージョンへのAMIコピーが容易
• Cloud DIはPackerに関わらずオススメ...
活用事例その2
• 社内で利用するAtlassian環境のリプレース
• Confluence : 情報共有(Wiki)
• JIRA : チケット管理
• Stash : ソースコード共有(Git)
• Crowd : ID管理
• EC2一台...
構成図
27Ⓒ Classmethod, Inc.
DNS管理
特徴
• Auto Healingパターンを採用
• 起動時にData Volumeの自動マウント
• Jenkinsによる簡易CI環境
28Ⓒ Classmethod, Inc.
Auto Healingパターン
• 別名アンデッドパターン
• 詳細は
29Ⓒ Classmethod, Inc.
Auto Healing
• AutoScalingの特殊な形
• min = n
• max = n
• desired = n
• 障害が発生したら
• 一台Stop
• 新しいインスタンスが起動
• もとどおり!
30Ⓒ Classmet...
障害発生時
• AutoScalingで最新のAMIから起動
• 起動後にイメージの初期化処理
• EBSのマウント
• DNSの登録
• 最新アプリケーションのデプロイ
• 各サーバ間での連携登録
31Ⓒ Classmethod, Inc.
EBSの自動マウント
• Atlassian製品はローカルディスクにファイルを作成
する -> AutoScalingには本来不向き
• Root Volumeとは別のEBSに置いておこう
• Cloud DIを活用し、マウントするEBS ID...
Jenkinsによる自動化
• Packer + AnsibleによるAMI作成
• 作成されたイメージのServerspecによるテスト
• AutoScalingのAMI切替
• AMIの世代管理
• etc…
• 定形作業は基本的にお任せ...
AMIの世代管理
• AMIが増えすぎるのを防ぐ
• Jenkinsで、日次で世代数を指定してAMI削除
• AMIにタグ「Persistent」をつけたものは削除されない
• 特定のバージョン・既存LaunchConfigurationのものは...
運用してみた感想
• Auto Healingは本当に楽
• メンテナンスの心配がいらない安心感
• AutoScalingでインスタンスが変わった通知は必要かも
• アプリケーションの制約を知る必要がある
• データがどこに書かれるのか
• ...
今後は
• CloudFormationの実行自動化
• 現状はDry-runができない
• CloudFormationに関するテスト
• ツールを作る・・・?
• CloudFormationのCI
• AMI管理のベストプラクティス確立
...
Developer Day
(サンプル)ご静聴ありがとうございました。
スライドは後日ブログで公開します。
37
A-1
Ⓒ Classmethod, Inc.
#cmdevio2015
Upcoming SlideShare
Loading in …5
×

Ansible + Packer + CloudFormationでらくらく構築・運用

03/29/2015 Developers.IO 2015
http://devio2015.classmethod.jp/
Packer / Ansible / CloudFormation / AWS

  • Login to see the comments

Ansible + Packer + CloudFormationでらくらく構築・運用

  1. 1. Developer Day Ansible + Packer + CloudFormation で らくらく構築・運用 1 H-3 望月 政夫, AWSコンサルティング部 クラスメソッド株式会社 Ⓒ Classmethod, Inc. 2015年03月29日 #cmdevioH
  2. 2. 自己紹介 • 望月 政夫 • Twitter: @Canelmo • @Classmethod 2013.10∼ • AWS環境構築・その他諸々担当 • DeNA Baystars 2007.04∼ 2Ⓒ Classmethod, Inc.
  3. 3. おしながき • 今日話す技術について • 利用してみた感想 • 今後の展望について 3Ⓒ Classmethod, Inc.
  4. 4. 本題 4
  5. 5. Developer Day Ansible + Packer + CloudFormation で らくらく構築・運用 5 A-1 望月 政夫, AWSコンサルティング部 クラスメソッド株式会社 Ⓒ Classmethod, Inc. 2015年03月29日
  6. 6. Developer Day Ansible + Packer + CloudFormation で らくらく構築・運用 6 A-1 望月 政夫, AWSコンサルティング部 クラスメソッド株式会社 Ⓒ Classmethod, Inc. 2015年03月29日
  7. 7. 「らくらく」とは 7
  8. 8. 人によって観点はちがう • 構築が楽 • 自動化 • テスト • ドキュメント • 運用が楽 • 障害対応 • 監視 • 定常作業 8Ⓒ Classmethod, Inc.
  9. 9. 個人的には • 楽したいポイントがある • SSHでログインしたくない • SSH 管理めんどう • 何度もManagement Consoleを開きたくない • アクセスキー管理めんどう • EC2の設定ミスした時にもう一回同じ操作をしたくない 9Ⓒ Classmethod, Inc.
  10. 10. 個人的な「楽したい」を 満たすための 環境を作ればよい 10
  11. 11. 個人的には • 楽したいポイントがある • SSHでログインしたくない • SSH 管理めんどう • 何度もManagement Consoleを開きたくない • アクセスキー管理めんどう • EC2の設定ミスした時にもう一回同じ操作をしたくない 11Ⓒ Classmethod, Inc.
  12. 12. Ansible • 構成管理ツール • Chef, Puppetと同等 • YAMLで管理 • Dynamic Inventory機能による動的ホスト一覧生成 • AutoScaling環境に有用 12Ⓒ Classmethod, Inc.
  13. 13. 動的ホスト一覧生成 • インベントリファイル(ホスト一覧)不要 • タグやセキュリティグループで絞り込み可能 • 数百台単位でも利用できる • https://raw.githubusercontent.com/ansible/ansible/devel/plugins/inventory/ec2.py 13Ⓒ Classmethod, Inc.
  14. 14. Packer • AMI作成補助ツール • Vagrant等のHashicorp製 • 新規にEC2を起動し、Ansibleで設定を流し込んだものを
 AMI化する • 常に初期状態からAMIを作ることができる 14Ⓒ Classmethod, Inc.
  15. 15. CloudFormation • AWSのサービス管理ツール • 利用するサービスをJSONで定義 • 一度書いたテンプレートファイルは再利用可能 • 他のリージョンでも動く(動くように書いていれば!) • http://dev.classmethod.jp/tag/cloudformation/ • 便利に使うためのツールもある • kumogata(https://github.com/winebarrel/kumogata) 15Ⓒ Classmethod, Inc.
  16. 16. 組み合わせて使う • CloudFormationでAWSの構築 • Packer + AnsibleでAMI作成 • CloudFormationのパラメータ(AMI ID)を変更 • 変更が入ったらAnsibleを再度適用 • PackerでAMIの作成 • それぞれ違ったレイヤでの活用 • CloudFormation: AWS部分 • Ansible: AWSに依存しないOS上設定 • Packer: AWSに依存しない仮想イメージ 16Ⓒ Classmethod, Inc.
  17. 17. 活用事例をいくつか 17
  18. 18. とあるイベントのお仕事で • EC2数百台を利用するアプリケーション基盤の構築 • マルチリージョン • アプリケーション(node.js)は数種類 • DynamoDB, SNS, S3, Route53… • CloudFormationで一発構築・削除 • AMIのコピー(Packerの機能) 18Ⓒ Classmethod, Inc.
  19. 19. Packerの実行時間が長い • node.jsのコンパイルに時間がかかりストレス • PackerのAMI作成のプロセスを分離することにした 19Ⓒ Classmethod, Inc. Amazon Linux Base AMI Golden AMI ・App配備 ・App設定変更 ・OS基本設定 ・ミドルインストール
  20. 20. Packerの実行時間が長い • node.jsのコンパイルに時間がかかりストレス • PackerのAMI作成のプロセスを分離することにした 20Ⓒ Classmethod, Inc. Amazon Linux Base AMI Golden AMI ・App配備 ・App設定変更 ・OS基本設定 ・ミドルインストール ・AMI作成時間の短縮 ・変更箇所の局所化
  21. 21. Packerの実行時間が長い • node.jsのコンパイルに時間がかかりストレス • PackerのAMI作成のプロセスを分離することにした 21Ⓒ Classmethod, Inc. Amazon Linux Base AMI Golden AMI ・App配備 ・App設定変更 ・OS基本設定 ・ミドルインストール ・AMI作成時間の短縮 ・変更箇所の局所化
  22. 22. AMIが複数作成されると • AMIが大量に作成されてよくわからないことに… 22Ⓒ Classmethod, Inc.
  23. 23. AMIが複数作成されると • AMIが大量に作成されてよくわからないことに… • 方針を変えた • アプリケーションごとにAMIを作成していたが
 それを廃止。AMIを1種類にして
 Cloud DI を活用 23Ⓒ Classmethod, Inc.
  24. 24. Cloud DIパターン • CDPの一つ • EC2タグの値に応じてふるまいを変える • Environmentタグ • production • dev • staging • Roleタグ • main • batch… 24Ⓒ Classmethod, Inc.
  25. 25. 使ってみた感想 • 設定が秘伝のタレ化することが少なくなった • だれでもいつでも、どの環境でも再現することができる • 簡単に手を加えることができる • 他リージョンへのAMIコピーが容易 • Cloud DIはPackerに関わらずオススメ • AMIの作成はそれなりに時間が掛かる • 時間がかかるプロセス(e.g. ミドルウェアのコンパイル)と
 アプリケーションのビルドは別段階にしたほうがよい 25Ⓒ Classmethod, Inc.
  26. 26. 活用事例その2 • 社内で利用するAtlassian環境のリプレース • Confluence : 情報共有(Wiki) • JIRA : チケット管理 • Stash : ソースコード共有(Git) • Crowd : ID管理 • EC2一台で稼働 • 抱えていた問題点 • EC2障害発生時の手動対応 • バージョンアップ時の対応 26Ⓒ Classmethod, Inc.
  27. 27. 構成図 27Ⓒ Classmethod, Inc. DNS管理
  28. 28. 特徴 • Auto Healingパターンを採用 • 起動時にData Volumeの自動マウント • Jenkinsによる簡易CI環境 28Ⓒ Classmethod, Inc.
  29. 29. Auto Healingパターン • 別名アンデッドパターン • 詳細は 29Ⓒ Classmethod, Inc.
  30. 30. Auto Healing • AutoScalingの特殊な形 • min = n • max = n • desired = n • 障害が発生したら • 一台Stop • 新しいインスタンスが起動 • もとどおり! 30Ⓒ Classmethod, Inc.
  31. 31. 障害発生時 • AutoScalingで最新のAMIから起動 • 起動後にイメージの初期化処理 • EBSのマウント • DNSの登録 • 最新アプリケーションのデプロイ • 各サーバ間での連携登録 31Ⓒ Classmethod, Inc.
  32. 32. EBSの自動マウント • Atlassian製品はローカルディスクにファイルを作成 する -> AutoScalingには本来不向き • Root Volumeとは別のEBSに置いておこう • Cloud DIを活用し、マウントするEBS IDをタグに記 載 • CloudFormationでEBSも作成する 32Ⓒ Classmethod, Inc.
  33. 33. Jenkinsによる自動化 • Packer + AnsibleによるAMI作成 • 作成されたイメージのServerspecによるテスト • AutoScalingのAMI切替 • AMIの世代管理 • etc… • 定形作業は基本的にお任せします 33Ⓒ Classmethod, Inc.
  34. 34. AMIの世代管理 • AMIが増えすぎるのを防ぐ • Jenkinsで、日次で世代数を指定してAMI削除 • AMIにタグ「Persistent」をつけたものは削除されない • 特定のバージョン・既存LaunchConfigurationのものは残す 34Ⓒ Classmethod, Inc.
  35. 35. 運用してみた感想 • Auto Healingは本当に楽 • メンテナンスの心配がいらない安心感 • AutoScalingでインスタンスが変わった通知は必要かも • アプリケーションの制約を知る必要がある • データがどこに書かれるのか • アプリケーションの起動時にどのような処理が走るか 35Ⓒ Classmethod, Inc.
  36. 36. 今後は • CloudFormationの実行自動化 • 現状はDry-runができない • CloudFormationに関するテスト • ツールを作る・・・? • CloudFormationのCI • AMI管理のベストプラクティス確立 • CloudFormation -> Terraform? 36Ⓒ Classmethod, Inc.
  37. 37. Developer Day (サンプル)ご静聴ありがとうございました。 スライドは後日ブログで公開します。 37 A-1 Ⓒ Classmethod, Inc. #cmdevio2015

×