Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

2,008 views

Published on

JAWSDAYS 2014 ACEに聞けで使用した、OpsWorksの概要です

Aws OpsWorks [JAWSDAYS 2014 ACEに聞けトラック]

  1. 1. HiganWorks合同会社/opsrock 澤登 亨彦 OpsWorks
  2. 2. ご案内:このセッションは 昨年発表内容の再構成です • 大阪のAWS全サービス紹介 • 神戸のChef特集 • 最新の機能は補足での紹介です、ご了承くだ さい 2
  3. 3. Chefの本を書きました • 来月、4/12(土)発売予定 • 「Chef活用ガイド ∼ コードではじめる構成 管理」 • Infrastructure as Codeを実践しよう! • 日本公式代理店の
 クリエーションラインさんと
 共著 3 NOW Printing
  4. 4. 『Chef活用ガイド』について • 注意:すぐ使える!とかではない模様 • 公式Docsの流れを踏襲し、さらに詳しく記述 • 解説部分の元ネタは大体ソースコード • Chef本体から離れる話は少なめ • 付録 • 今日のセッションみたいなコラム • Enterpriseアドオン • 全リソース和訳 4 NOW Printing
  5. 5. 運営組織 5 • 代表社員をつとめる合同会社 • アプリケーションのためのプラットフォーム構築/運 用自動化をテーマに活動 • http://opsrock.in 共同開発・運営 • Chef関連を主に取り扱うソリューションを 提供 • 導入支援コンサルも
  6. 6. 本日の内容 • AWS OpsWorks の概要 • OpsWorksの機能と関連するAWS達 • スタックとレイヤ • アプリケーションライフサイクルとデプロイ • OpsWorksのオートスケール • OpsWorks Ruby on Railsデプロイ 6
  7. 7. AWS OpsWorks の 概要
  8. 8. AWS OpsWorksとは? • アプリケーションのライフサイクル管理を一 本化するために作られたソリューション • プラットフォームの自動構築 • アプリケーションのdeploy(undeploy) 8
  9. 9. プラットフォームの自動構築 • アプリケーションが動作する
 プラットフォームとは? • ネットワーク環境の構築 • サーバ(インスタンス)の調達 • ミドルウェアの設定 9
  10. 10. アプリケーションのdeploy • アプリケーション ソースコード(リポジトリ) • git, svn, zip(http, s3) + 何らかの配布/ビルドの仕組み 10 OpsWorks Agent タスク実行 タスク実行管理
  11. 11. OpsWorksの機能と 関連するAWS達
  12. 12. 関連AWSは大体こいつらです 12 Amazon EC2 Auto Scaling Elastic Load Balancing Amazon S3 CloudWatch IAM Amazon SQS
  13. 13. 機能対応表 13 OpsWorks 関連AWS サーバインスタンス提供 EC2, S3 モニタリング CloudWatch パーミッション IAM オートスケール ELB, AutoScaling オートヒール CloudWatch, EC2 ※発表者独自の見解を含みます
  14. 14. スタックとレイヤ
  15. 15. 『スタック』 1システムをまとめた単位 アプリケーションのプラットホーム全体 『レイヤ』 役割別インスタンスの集合 DB WebServer Application System A
  16. 16. アプリケーション ライフサイクルと デプロイ
  17. 17. 1.Setup 2.Configure 3.Deploy 4.UnDeploy 5.Shutdown 17 OpsWorksのライフサイクル定義 プラットフォーム部分
  18. 18. プラットフォーム部分 • Setup • インスタンスの起動 • 関連パッケージのインストール • Configure (構成変更時にも自動実行) • ミドルウェアの設定 • OpsWorksメタデータへの情報登録 18
  19. 19. 設定情報登録例:Mysql 19 "opsworks": {! "stack": {! "name": "sample_stack"! },! "layers": {! "db-master": {! "id": "e554fc61-25f0-4cde-ab21-0fb890f586b6",! "name": "MySQL Master",! "instances": {! "db-master1": {! "public_dns_name": "ec2-54-250-66-243.xxx",! "ip": "54.250.66.243",! "private_ip": "10.154.17.254",! "private_dns_name": "ip-10-154-17-254.xxx"! }! }! }! "mysql": {! "server_root_password": "root_password"! }! } ※一部抜粋
  20. 20. 1.Setup 2.Configure 3.Deploy 4.UnDeploy 5.Shutdown 20 OpsWorksのライフサイクル定義 アプリケーション部分
  21. 21. アプリケーション部分 1/2 • Deploy • デプロイツール※風のタスクを実行
 ※Capistrano/Chef::Deploy • レイヤ情報に基づいてアプリケーションコ ンフィグの設定 • アプリケーションの起動 • ELB/HAProxy等のバックエンドに参加 21
  22. 22. アプリケーション部分 2/2 • UnDeploy • ELB/HAProxy等のバックエンドから除外 • アプリケーションの停止 22
  23. 23. その他任意に実行可能な小タスク • os package管理系 • update_dependencies • install_dependencies • Chef関連系 • update_custom_cookbooks • execute_recipes 23
  24. 24. Shutdown • 後片付け • ミドルウェアの安全な停止 • OpsWorksAgentの安全な停止 • ステータス更新&削除 24
  25. 25. OpsWorksの オートスケール
  26. 26. 選べるオートスケール • CloudWatch、AutoScalingと連携 • TimeBased instance • 1時間単位でインスタンスの起動・停止状 態をスケジュールできます。 • LoadBased instance • レイヤの平均負荷状況に応じてインスタン スを起動・停止します。 26
  27. 27. AutoScale(OpsWorks)設定例 27 http://qiita.com/sawanoboly@github/items/2aa556fc4376a1695654 WEBの情報をご参照お願いします
  28. 28. 監視ビュー
  29. 29. CloudWatchの自動グルーピング • レイヤ単位でのリソース状況を一覧 29 http://aws.typepad.com/aws_japan/2013/05/aws-opsworks-update-elastic-load-balancing-monitoring-view-more-instance-types.html
  30. 30. ここ半年のUpdates • カスタムAMIが使用可に • (要OpsWorks Agent) • VPCに対応 • IAMでリソース単位のパーミッション制御 • Chef Version 11.4 • コマンドラインツール/APIの強化 • Javaアプリケーションサポートの追加 30
  31. 31. OpsWorks Ruby on Railsデプロイ (紙芝居)
  32. 32. あ、依存パッケージ 忘れてた
  33. 33. インスタンス 起動してもうたし...
  34. 34. Railsプラットホーム OK
  35. 35. おや、 DBレイヤ(mysql)が ないよ? 注) 演出上の都合です、 プリセットのMySQLレイヤなら 悩まずデプロイできます
  36. 36. とりあえず SQLite3でいいや
  37. 37. {      "deploy":  {          "books":  {              "database":  {                  "adapter":  "sqlite3"              }          }      }   }
  38. 38. しばし待つ
  39. 39. rails-app1: $ sudo cat /srv/www/books/current/config/database.yml ! development: -- snip- ! production: adapter: "sqlite3" database: "books" encoding: utf8 host: "" username: "root" password: "" reconnect: true database.yml もバッチリ
  40. 40. このレイヤに インスタンスを 追加してみる
  41. 41. インスタンス起動時に 登録済みアプリは とりあえずデプロイされます
  42. 42. production: adapter: "mysql2" database: "books" encoding: utf8 host: "" username: "root" password: "" reconnect: true DB接続がデフォルトなので当然こけます リカバリ方法は2つ
  43. 43. OpsWorks Ruby on Railsデプロイ (紙芝居) 完了
  44. 44. 最後に CloudFormation,Elastic Beanstalk, OpsWorks... あとOpscode Chef、 結局どれをつかえばいい の? 78
  45. 45. 目的が達成できるな らなんでもいいと思 います。 ...それでもやっぱりお悩みなら
  46. 46. 相談するのがよいでしょう OpsRock.in 80
  47. 47. おわり。 ! 17:00∼の Immutable Infrastructureトラック パネルディスカッションも どうぞよろしく

×