Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

AWS Black Belt Tech シリーズ 2015 - AWS OpsWorks

2015年11月11日に放送したAWS OpsWorks の資料です。今後の予定は以下をご覧ください。
http://aws.amazon.com/jp/about-aws/events/#webinar

  • Loggen Sie sich ein, um Kommentare anzuzeigen.

AWS Black Belt Tech シリーズ 2015 - AWS OpsWorks

  1. 1. 1 AWS OpsWorks AWS Black Belt Tech Webinar 2015 アマゾン ウェブ サービス ジャパン株式会社 ソリューションアーキテクト 舟﨑 健治 2015/11/11
  2. 2. 2 Agenda • Introduction • AWS OpsWorks概要のおさらい • AWS OpsWorksアップデート • AWS OpsWorks Tips • お客様の事例 • まとめ
  3. 3. 3 Agenda • Introduction • AWS OpsWorks概要のおさらい • AWS OpsWorksアップデート • AWS OpsWorks Tips • お客様の事例 • まとめ
  4. 4. 4 Introduction • アプリケーションは複数のレイヤーで構成され ることが多い。 レイヤー 使用例 プレゼンテーション フロントエンドWebサーバ ビジネスロジック アプリケーションサーバ ワーカー バックグラウンドのタスクを実行 データ バックエンドデータストア インテグレーション メッセージングキュー
  5. 5. 5 Micro-Servicesアーキテクチャ • 小さなサービスの集合で1つのアプリケーションを形成 • サービス間はインタフェースを使ってコミュニケートする • それぞれのMicro-Serviceは、異なるフレームワーク、プログラ ミング言語で開発可能 UI Micro Service DB Micro Service DB Micro Service DB Micro Service AWS OpsWorksでは、 それぞれのMicro- Serviceを「レイヤー」 で定義可能
  6. 6. 6 Agenda • Introduction • AWS OpsWorks概要のおさらい • AWS OpsWorksアップデート • AWS OpsWorks Tips • お客様の事例 • まとめ
  7. 7. 7 AWS OpsWorksとは  アプリケーションのライフサイクル管理サービス  デプロイを頻繁に、早く、セキュアに実行可能  スケーラブルで複雑なインフラストラクチャの構成を管理、モデル化、 自動化することが可能  ビルトイン構成を使って簡単に開始可能  追加コストは不要
  8. 8. 8 AWS OpsWorksを使うメリット 自動化できる領域が多くなる デプロイ自動化 運用タスクの自動化 運用負荷を軽減できる
  9. 9. 9 EC2インスタンスの構築例 インスタンス起動 ソフトウェアインストール・構 成用のスクリプトを実行 アプリケーションのデプロイ EC2のAPIで自動化が可能 ユーザー側でインスタンス内部 で起動スクリプト等を使って、 自動化が可能
  10. 10. 10 OpsWorksインスタンスの構築例 インスタンス起動 ソフトウェアインストール・構 成用のChefレシピを実行 アプリケーションのデプロイ用 のChefレシピを実行 OpsWorksのAPIで 自動化が可能
  11. 11. 11 なぜ、OpsWorksでインスタンス内部のChefレシピをリ モートからOpsWorks APIで実行可能か? OpsWorksインスタンス内で、 OpsWorksエージェントがインストール・動作 しているため
  12. 12. 12 OpsWorksの基本的な仕組み(1) EC2インスタンス上の OpsWorksエージェント OpsWorks talks with OpsWorks エージェントから OpsWorks エンドポイントに対して Polling(アウトバウンド通信)
  13. 13. 13 OpsWorksの基本的な仕組み(2) OpsWorksによって発行された一連の コマンドを取得 AgentがChef Clientのローカルモード でレシピを実行 EC2インスタンス上の OpsWorks Agent インスタンスにSSH / RDPログインも可能 Chef Server / Chef Clientの構築は不要 お客様はChefのレシピの作成に集中可能
  14. 14. 14 OpsWorks利用の流れ User AWS Management Console
  15. 15. 15 Stack OpsWorks利用の流れ User AWS Management Console 構成情報 (JSON) ①スタックの作成
  16. 16. 16 Stack OpsWorks利用の流れ User AWS Management Console Load Balancerレイヤー App Serverレイヤー Databaseレイヤー 構成情報 (JSON) ①スタックの作成 ②レイヤーの作成
  17. 17. 17 Stack OpsWorks利用の流れ User AWS Management Console Load Balancerレイヤー App Serverレイヤー Databaseレイヤー レシピ レシピ レシピ 構成情報 (JSON) ①スタックの作成 ②レイヤーの作成 ③レシピの設定(Appの設定)
  18. 18. 18 Stack OpsWorks利用の流れ User AWS Management Console Load Balancerレイヤー App Serverレイヤー Databaseレイヤー レシピ レシピ レシピ 構成情報 (JSON) ①スタックの作成 ②レイヤーの作成 ③レシピの設定(Appの設定) ④レイヤーに インスタンス追加・起動
  19. 19. 19 Stack OpsWorks利用の流れ User AWS Management Console Load Balancerレイヤー App Serverレイヤー Databaseレイヤー レシピ レシピ レシピ DB Web /App LB ①スタックの作成 ②レイヤーの作成 ③レシピの設定(Appの設定) ④レイヤーに インスタンス追加・起動 ⑤ライフサイクルイベントによ り、レシピが自動実行される 構成情報 (JSON) Web /App
  20. 20. 20 スタックとは • OpsWorksのトップエンティティ • 属する全インスタンスの構成を管理 – OSの種類、リージョン、インスタンスのIPアドレスなど • カスタムレシピを保存する任意のリポジトリを指定可能 • VPC内部に作成可能 • スタックごとに構成情報をJSON形式で保持 – 構成変更のたびにJSONが更新される – ChefレシピからJSON内の変数を読み込み可能 • スタックをコピー可能 – リージョン間でも可能
  21. 21. 21 レイヤーとは • インスタンス構築のための青写真(設計図) レシピを指定して、パッケージインストール などの必要な処理を定義 カスタムレシピも定義可能 追加のEBSボリュームの指 定。RAID指定も可能
  22. 22. 22 ビルトインレイヤーの種類 • Load Balancer – HAProxy (ELBは各レイヤーに個別に アタッチ可能) • App Server – Static Web Server – Rails App Server – PHP App Server – Node.js App Server – Java App Server – AWS Flow (Ruby) • DB – MySQL – RDS • ECS(EC2 Container Service) Cluster • Other – Memcached – Ganglia – Custom ビルトインレイヤー以外にもカスタムレイヤーを使って任意の 役割を持つレイヤーを作成可能(Jenkinsレイヤーなど) NEW
  23. 23. 23 インスタンスとは • アプリケーションを提供するための EC2インスタンスのこと • 起動時にインスタンスサイズやAZ (VPC内の場合はサブネット)を指 定 • インスタンス内部にOpsWorks Agentが動作している
  24. 24. 24 インスタンスのスケーリングタイプ • インスタンスを(自動)追加起動・終了する方 法として以下の3パターンがある – 24/7 インスタンス • 常時稼働 – 負荷ベースのインスタンス – 時間ベースのインスタンス
  25. 25. 25 Appとは • アプリケーションサーバーにデプロイする アプリケーションのこと • 利用可能なアプリケーションの種類(標準 のアプリケーションサーバーレイヤーに相 当する) – Ruby on Rails / PHP / Node.js(JavaScript) / Static(HTML) / Java / AWS Flow(Ruby) / Other • サポートするリポジトリ – Git / Subversion / HTTP archive / S3 Archive / Other – GithubやBitBucketも使用可能
  26. 26. 26 OpsWorksで実行可能なコマンド  以下の2種類がある  スタックコマンド  スタック全体の構成を変更・管理するためのコマンド  AWSマネージメントコンソール、AWS SDK、AWS CLIでリモートから実 行可能  エージェントコマンド  デバッグやトラブルシューティングのために利用するコマンド  それ以外の用途の場合は、スタックコマンドの利用を推奨  インスタンス内部にログインして実行可能。  sudoもしくはroot権限が必要 重要!
  27. 27. 27 スタックコマンドを使ってリモートから任意のタイミング でインスタンスにコマンドを実行可能 スタックコマンド 内容 Install Dependencies 全てのパッケージをインストールする Update Dependencies 全てのパッケージをアップデートする Update Custom Cookbooks リポジトリにある更新されたCookbookをそれぞれのインスタンスに展開する Execute Recipes 指定したレシピを指定したインスタンス上で実行する Setup Setupのレシピを実行する。(Setupを実行するとDeployもその後で実行さ れる) Configure Configureのレシピを実行する。 AWS Management Console 管理者 AWS OpsWorks Instances Execute Recipes コマンド等を実行 OpsWorksエージェ ントがChefレシピを 実行
  28. 28. 28 スタックコマンドでUpdate Custom Cookbooksを実行 • アップデートされたカスタムChef cookbooksをコード リポジトリから指定したインスタンスに展開する • コマンド実行時のログを確認可能 Update Custom Cookbooksを選択 ログを確認
  29. 29. 29 スタックコマンドでExecute Recipesを実行 • Update Custom Cookbooksを実行後に、Cookbookお よびレシピ名を指定してレシピ単体を実行する • コマンドのログを確認可能 Execute Recipesを 選択 Cookbook名::レシピ 名を指定 ログを確認
  30. 30. 30 インスタンス内部でOpsWorks Agent CLIを実行 • OpsWorksで起動されたインスタンスにSSHでログイン して、Agent CLIコマンドを実行可能。 – レシピの実行 – Chefログの表示 – スタックの構成JSONおよびデプロイメントJSONの表示
  31. 31. 31 インスタンス内部でOpsWorks Agent CLIによる レシピ再実行 • Agent CLIのrun_commandは、最近スタックコマンドによって実 行されたことがあるコマンドのみ再実行が可能。手順は以下。 – 1.最近実行されたコマンド(のキャッシュ)を表示する – 2.表示されたコマンドの中に、実行したいコマンドがあれば同じコマン ドを実行可能 $ sudo opsworks-agent-cli list_commands 2014-04-07T02:55:09 setup 2014-04-07T02:58:55 configure 2014-04-07T04:38:12 execute_recipes $ sudo opsworks-agent-cli run_command execute_recipes hello インスタンス内部のキャッシュにあるレシピを実行する。コードリポジトリにあるレシピ をアップデートしただけでは、最新のレシピを自動でダウンロードはしない。インスタン ス起動後に最新のレシピをダウンロードするにはスタックコマンドでUpdate Custom Cookbooksを実行する必要がある。
  32. 32. 32 インスタンス内部でOpsWorks Agent CLIによる スタック構成JSONの表示 • インスタンス内部で以下のコマンドを実行 • スタック構成およびデプロイメントJSONを取得する sudo opsworks-agent-cli get_json { "deploy": { "hello": { "deploy_to": "/srv/www/hello", "application": "hello", "deploying_user": "arn:aws:iam::111111111111:root", "domains": [ "hello" ], "application_type": "php", "mounted_at": null, カスタムChefレシピ作成時に、JSONから パラメータを取得するときの参考として活用 可能
  33. 33. 33 OpsWorksの 5 つのライフサイクルイベント Setup Configure Deploy Undeploy Shutdown
  34. 34. 34 どのタイミングで ライフサイクルイベントが 実行されるか?
  35. 35. 35 最初のインスタンスを追加 App サーバー Setup Deploy Configure Execute Recipe Shutdown
  36. 36. 36 最初のインスタンスを起動すると、Setupが 自動実行されるAppサーバー の起動 App サーバー Setup Deploy Configure Execute Recipe Shutdown
  37. 37. 37 Setupが実行された後にDeployが自動実行 されるAppサーバー の起動 App サーバー Setup Deploy Configure Execute Recipe Shutdown
  38. 38. 38 インスタンスがonlineになるとConfigure が自動実行されるAppサーバー の起動 App サーバー Setup Deploy Configure Execute Recipe Shutdown
  39. 39. 39 データベースインスタンスの追加 Appサーバー の起動 App サーバー DB サーバー Setup Deploy Configure Execute Recipe Shutdown
  40. 40. 40 Setup, Deployが自動実行される Appサーバー の起動 App サーバー DB サーバー DBサーバー の起動 Setup Deploy Configure Execute Recipe Shutdown
  41. 41. 41 DBサーバーがonlineになるとスタック内の全イン スタンスでConfigureが自動実行される Appサーバー の起動 App サーバー DB サーバー DBサーバー の起動 Setup Deploy Configure Execute Recipe Shutdown
  42. 42. 42 さらにインスタンスを追加 Appサーバー の起動 App サーバー DB サーバー App サーバー DBサーバー の起動 Setup Deploy Configure Execute Recipe Shutdown
  43. 43. 43 Setup、Deployが自動実行される Appサーバー の起動 App サーバー DB サーバー App サーバー DBサーバー の起動 Setup Deploy Configure Execute Recipe Shutdown Appサーバー の起動
  44. 44. 44 インスタンスがonlineになるとスタック内の全イ ンスタンスでconfigureが自動実行される Appサーバー の起動 App サーバー DB サーバー App サーバー DBサーバー の起動 Setup Deploy Configure Execute Recipe Shutdown Appサーバー の起動
  45. 45. 45 手動でデプロイを実行 Appサーバー の起動 App サーバー DB サーバー App サーバー DBサーバー の起動 Setup Deploy Configure Execute Recipe Shutdown Appサーバー の起動 手動で デプロイを 実行
  46. 46. 46 レシピを手動で実行 Appサーバー の起動 App サーバー DB サーバー App サーバー DBサーバー の起動 Setup Deploy Configure Execute Recipe Shutdown Appサーバー の起動 手動で デプロイを 実行 レシピ単体を 実行
  47. 47. 47 インスタンスを停止 Appサーバー の起動 App サーバー DB サーバー App サーバー DBサーバー の起動 Setup Deploy Configure Execute Recipe Shutdown Appサーバー の起動 手動で デプロイを 実行 レシピ単体を 実行 Appサーバーの シャットダウン
  48. 48. 48 インスタンスがonlineでなくなると、Configure が自動実行される Appサーバー の起動 App サーバー DB サーバー App サーバー DBサーバー の起動 Setup Deploy Configure Execute Recipe Shutdown Appサーバー の起動 手動で デプロイを 実行 レシピ単体を 実行 Appサーバーの シャットダウン
  49. 49. 49 ライフサイクルイベントに登録するレシピの 例(レイヤー別) Setup Configure Deploy Undeploy Shutdown ロードバラン サーレイヤー ロードバラン サーをインス トール アプリケーション サーバーのIPを アップデート コネクションを Drainする アプリケーショ ンサーバーレ イヤー アプリケー ションサー バーをインス トール DB接続先をアッ プデートしてリス タート アプリケーション コードをアップ デートしてリス タート アプリケー ションを削除 してリスタート ログを保存 データベース レイヤー データベー スをインス トール アプリケーション サーバーのIPの ACLをアップデー ト スナップショット の作成
  50. 50. 50 Elastic Load Balancer レイヤー VPC内に構築する例 Virtual Private Cloud VPC Public Subnet VPC Private Subnet Internet Gateway NAT PHP App Server レイヤー MySQL DB レイヤー Github Recipe Repository App Code Repository • OpsWorksにより起動された インスタンスはOpsWorks サービスエンドポイントと接 続が必須 (Privateサブネット利用時は NAT必須) • プライベートサブネット内の コードリポジトリを利用可能
  51. 51. 51 Agenda • Introduction • AWS OpsWorks概要のおさらい • AWS OpsWorksアップデート • AWS OpsWorks Tips • お客様の事例 • まとめ
  52. 52. 52 サポートされるオペレーティングシステム • Amazon Linux • Ubuntu 12.04 LTS • Ubuntu 14.04 LTS • Red Hat Enterprise Linux 7 • Windows Server 2012 R2 NEW NEW
  53. 53. 53 Amazon Linux • AWSによって提供、サポート、管理されるLinux – EC2内でのみ利用可能 • 多数のAWS APIツールやCloudInitがインストール済み • 64ビットバージョンのAmazon Linuxをサポート • 約6か月おきに新しいバージョンをリリース • カスタムAMIを利用可能
  54. 54. 54 Ubuntu • 約2年ごとに新しいUbuntu LTSがリリース • 各リリースは約5年間サポートされる • OpsWorksでは64ビットバージョンのUbuntu 12.04 LTSおよ び14.04 LTSをサポート • カスタムAMIを利用可能 • 既存のUbuntu 12.04インスタンスを14.04インスタンスへ更 新することは不可 – 新しいUbuntu 14.04インスタンスを作成する必要あり
  55. 55. 55 Redhat Enterprise Linux 7 (RHEL 7) • 64ビットバージョンをサポート • 最初にサポートされるマイナーバージョンはRHEL 7.1 • Red Hatは約9か月おきにマイナーバージョンをリリース • 新しいインスタンスを作成すると、OpsWorksは現在のRHEL 7 のバージョンが使用される • 新しいマイナーバージョンがリリースされても、OpsWorksが既 存の起動中のインスタンスを自動的に更新することはない NEW
  56. 56. 56 Linuxのバージョンアップグレードについて • Amazon Linux / Red Hat Enterprise Linux 7でアップグレー ドが可能 • オンラインインスタンスの場合 – インスタンスを指定して、Upgrade Operating Systemスタックコマンドを実行 • オフラインのEBS backedインスタンスの場合 – インスタンスを起動して、Upgrade Operating Systemスタックコマンドを実行 • 時間ベース、負荷ベースのインスタンスを含めた、オフラインの Instance Store backedインスタンスの場合 – インスタンスのOperating Systemの設定を編集、その後インスタンス再起動時に新 しいバージョンに更新される
  57. 57. 57 Windows Server • 以下の64ビットバージョンをサポート – Microsoft Windows Server 2012 R2(Standard) – Microsoft Windows Server 2012 R2およびSQL Server Express – Microsoft Windows Server 2012 R2およびSQL Server Standard – Microsoft Windows Server 2012 R2およびSQL Server Web • Windows PowerShellスクリプトをChefレシピから実 行可能 • カスタムAMIを使用可能 • Linuxインスタンス同様に使用可能だが、いくつか注意 事項がある。 NEW
  58. 58. 58 Windows Serverの注意事項 • Windows Stackの場合、Chef 12.2を利用 • OpsWorksの外部で作成されたWindowsインス タンスをStackへ登録することは不可 • Berkshelfは利用不可 • カスタムレイヤーを利用する – 組み込み(ビルトイン)レイヤーは未サポート • EBS-backedルートボリュームを利用
  59. 59. 59 オンプレミスインスタンスのサポート • オンプレミスの物理サーバおよび仮想サーバをOpsWorksスタッ クに追加可能 • Linuxスタックのみサポート – オンプレミスのUbuntu, Red Hat Enterprise Linux 7を利用可能 • 通常のAWS OpsWorksインスタンス同様に管理が可能 – レイヤーへの追加が可能 • オンプレミスインスタンスからOpsWorksサービスに対してアウ トバウンド通信が許可されている必要がある – OpsWorksサービスへの通信はインターネット経由でのアクセスとなるため、イン ターネットへアウトバウンド通信を許可する NEW
  60. 60. 60 オンプレミスインスタンスをOpsWorksスタックに追 加する方法 • 1.インスタンスの準備 • 2.AWS CLIのインストールおよび設定 • 3.aws opsworks registerコマンドを実行 ※registerコマンドの実行は以下2通りの方法がある
  61. 61. 61 aws opsworks registerコマンド • スタックに追加するインスタンス内でAWS CLIを実行す る場合 • 別のリモートワークステーションでAWS CLIを実行する 場合 aws opsworks register --infrastructure-class on-premises --region ap-northeast-1 --stack-id <stack-id> --local aws opsworks register --infrastructure-class on-premises --region ap-northeast-1 --stack-id <stack-id> --ssh-username [username] --ssh-private-key [key-path] [host-address]
  62. 62. 62 既存のAmazon EC2インスタンスのスタックへ追加 • オンプレミスインスタンス同様にOpsWorksス タックの外部にあるAmazon EC2インスタンス をスタックへ追加・管理が可能 – 以下は追加するEC2インスタンス内でAWS CLIを実行する例 NEW aws opsworks register --infrastructure-class ec2 --region ap-northeast-1 --stack-id <stack-id> --local
  63. 63. 63 OpsWorks管理下でさまざまなオペレーティングシス テムを混在させた構成の例 virtual private cloud オンプレミス OpsWorks Linuxスタック OpsWorks Windowsスタック Amazon Linux Ubuntu RHEL 7 Windows Server Ubuntu RHEL 7 ※1つのスタック内にLinuxと Windowsの混在は不可 OpsWorks VPNまたは 専用線
  64. 64. 64 Amazon ECS(EC2 Container Service)レイヤーの サポート • Chef 11.10スタックで利用可能 • ECSレイヤーのインスタンスはAmazon Linux 2015.03以 降あるいはUbuntu 14.04 LTSで利用可能 • OpsWorksはECSクラスタのコンテナインスタンスの起動 と管理を簡素化する – ECSタスクのようなECSの他のエンティティを作成・起動するには、ECSのマ ネージメントコンソール、API、またはCLIを利用する必要がある。 • Elastic Load BalancingをECSレイヤーにアタッチ可能 NEW
  65. 65. 65 Chefのバージョン • Chef 11.4 – 2013年3月に導入 – Linuxスタックでのみ利用可能 – Ruby 1.8.7 – Chef-soloを利用 – Chef searchやData Bagsは未サポート • Chef 0.9 – サポートが終了されているため、非推奨 – Linuxスタックでのみサポート • Chef 12.2 – 2015年5月に導入 – Windowsスタックでのみサポート – Ruby 2.0.0で動作 – Chef Clientのローカルモードで動作 – Chef searchやData Bagsを利用可能 • Chef 11.10 – 2014年3月に導入 – Linuxスタックでのみサポート – Ruby 2.0.0で動作 – Chef Clientのローカルモードで動作 – Chef searchやData Bagsを利用可能 NEW
  66. 66. 66 OpsWorksエージェントのバージョン指定 • 新しいバージョンが使用可能になったときに、自動 的に更新するか、手動で更新するかを指定可能 – デフォルトでは自動更新 • Chef 11.10スタックでのみ使用可能 • スタックごと、およびインスタンスごとに設定可能 NEW
  67. 67. 67 Agenda • Introduction • AWS OpsWorks概要のおさらい • AWS OpsWorksアップデート • AWS OpsWorks Tips • お客様の事例 • まとめ
  68. 68. 68 OpsWorksでカスタムChefレシピを実行する方法 1. コードリポジトリを用意(GitHubなど) 2. コードリポジトリに作成したCookbookおよびレシピをpush 3. スタックを作成 カスタムCookbookの利用をYesにして、該当するコードリポジトリを設定 4. レイヤーを作成 5. レイヤーにインスタンスを追加、起動 6. インスタンスがonlineになったことを確認 7. スタックコマンドでUpdate Custom Cookbooksを実行 8. スタックコマンドでExecute Recipesにより指定したレシピをインスタンスに実行させる。 参照:AWS OpsWorksでカスタムChefレシピを実行する方法 http://aws.typepad.com/sajp/2014/05/opsworks-custom-recipe.html 動作確認ができたレシピを Setup,Deploy,Configureなど のライフサイクルイベントに、 登録することで自動実行させ ることが可能
  69. 69. 69 Windows PowerShellスクリプトの実行 • Chefのpowershell_scriptリソースによって Windows PowershellコマンドレットをOpsWorks インスタンスで実行可能 – https://docs.chef.io/chef/resources.html#powershell-script Chef::Log.info("******Installing XPS.******") powershell_script "Install XPS Viewer" do code <<-EOH Install-WindowsFeature XPS-Viewer EOH guard_interpreter :powershell_script not_if "(Get-WindowsFeature -Name XPS-Viewer).installed" end
  70. 70. 70 Chef Search • Chefのsearchメソッドを使って、以下に含まれるス タックの構成情報をレシピ内で検索することが可能 – スタック構成およびデプロイメントJSON – ビルトインおよびカスタムのcookbookのattributeファイル • 多くの場合は、コミュニティのレシピで使われている searchをそのまま使用可能 – ただし、Chefサーバーに対して検索をするのではなく、インスタンスの内 部にある上記構成情報のキャッシュデータに対して検索する。 – こちらのキャッシュデータは、OpsWorksのライフサイクルイベントによ り更新される • Chef 11.10のスタックで使用可能
  71. 71. 71 Chef Searchの使用例 • 以下はレシピ内で、php-appサーバーレイヤー に属するインスタンスを検索している例 – searchの引数でレイヤーを指定するときには、layerではなく roleを指定する appserver = search(:node, "role:php-app").first Chef::Log.info("The private IP is '#{appserver[:private_ip]}'")
  72. 72. 72 Data Bags • Chefのdata_bag_itemメソッド使って、data bagにあ る情報を検索可能 • Chefのレシピには作業内容を書くのに対して、設定情 報をData Bagsに入れる。 – Data Bagsの設定を書き換えるだけで レシピの使い回しが可能 • 使い方 – 1.カスタムJSONにdata_bagsの 情報を追加する – 2.以下のようにレシピ内で検索する { "opsworks": { "data_bags": { "myapp": { "mysql": { "username": "default-user", "password": "default-pass" } } } } } mything = data_bag_item("myapp", "mysql") Chef::Log.info("The username is '#{mything['username']}' ") カスタムJSONへの追加例
  73. 73. 73 Berkshelfのサポート • Berkshelfとはcookbookとその依存関係を管理して くれるもの • Berkshelfを使うことで、複数の異なるリポジトリ にあるcookbooksを使用可能 • Chef 11.10のスタックでのみ使用可能 • サポートされるBerkshelfのバージョンはオペレー ティングシステムによって異なる
  74. 74. 74 Berkshelfの使用方法 • 1.スタックの設定で、カスタムcookbooksの利用が可能である ことを確認して、Berkshelfの設定を有効にする • 2.スタックの設定で指定したカスタムcookbooksのリポジトリ の最上位ディレクトリにBerkfileという名前のファイルを配置。 その中身の例は以下 • 3.スタックのコマンドでUpdate Custom Cookbooksを実行 – インスタンス内の/opt/aws/opsworks/current/berkshelf-cookbooksに、該当する cookbookが配置される。 • 4.スタックのコマンドでExecute Recipesでレシピ実行 site :opscode cookbook 'ark', git: 'git://github.com/opscode-cookbooks/ark.git'
  75. 75. 75 Chefレシピのデバッグに有効な手法 Execute Recipes スタックコマンドを実行 OpsWorksマネージメントコンソール、API、CLIでリ モートからChefレシピを実行可能 インスタンスへログイン SSHキーペアを割り当てている場合は、Linux / Windowsともにログイン可能 Chefログ OpsWorksマネージメントコンソール、API、CLIで Chefログを表示可能 AWS OpsWorksエー ジェントCLIの使用 run_commandを使って、以前実行したコマンドを再 実行可能
  76. 76. 76 データベースとの接続 • スタックごとにカスタムJSONを設定可能 • カスタムJSONにデータベースとの接続情報を入れることで、 Chefレシピからその情報を取得可能 "deploy": { “appname": { (途中省略) "database": { "host": “xxx.ap-northeast-1.rds.amazonaws.com", "database": "test", "port": 3306, "username": "awsuser", "password": "mypassword", "reconnect": true, "data_source_provider": "rds", "type": "mysql" }, (以下省略) dbname = node[:deploy][:appname][:database][:database] dbuser = node[:deploy][:appname][:database][:username] dbpass = node[:deploy][:appname][:database][:password] dbhost = node[:deploy][:appname][:database][:host] Chefレシピから取得する例 取得した値をApp Serverインスタンスのローカル にDB接続用の設定ファイルとして保持しておく。 configureが実行されるたびに上記値を更新する
  77. 77. 77 AWS OpsWorksの環境変数 • それぞれのアプリケーションごとに20個の環境変 数を定義可能 • アプリケーションサーバインスタンスのセット アップ時に渡される • パスワードなどをProtected valueとして、コン ソール上で値を非表示にすることが可能
  78. 78. 78 同じ役割のレイヤーを複数個作る • カスタムレイヤーを作成して、同じレシピ を登録することで同じ役割のレイヤーを作 成可能 • RDSやELBのレイヤーを複数個追加する場 合は事前にRDSやELBを複数個作成する必 要あり • どのAppが、どのRDSを使うかを指定可能
  79. 79. 79 カスタムAMIの利用 • カスタムAMIの利用目的の例 – ブート時ではなく、事前に特定のパッケージをインストールしておき たい。 – インスタンスの起動時間を高速化したい(特に負荷ベースのインスタ ンスの場合) • 以下のOSをベースのものに対応 – Amazon Linux – Ubuntu 12.04 LTS, or Ubuntu 14.04 LTS – Redhat Enterprise Linux 7 – Windows Server 2012
  80. 80. 80 カスタムAMIの作成方法 • 1.レイヤーにインスタンスを追加 • 2.インスタンスを起動してSSHでログイン、以下の処理を行う ※OpsWorksで起動したインスタンスはユニークなIDの情報を含んでいるため、ID が重複しないように、AMI保存する前に上記作業により削除しておく必要がある。 • 3.EBSベースのインスタンスの場合は停止してAMI作成(EC2の管理 コンソール画面を使用)、インスタンスストアベースの場合は、停止せ ずにAMI作成 sudo /etc/init.d/monit stop sudo /etc/init.d/opsworks-agent stop sudo rm -rf /etc/aws/opsworks/ /opt/aws/opsworks/ /var/log/aws/opsworks/ /var/lib/aws/opsworks/ /etc/monit.d/opsworks-agent.monitrc /etc/monit/conf.d/opsworks-agent.monitrc /var/lib/cloud/
  81. 81. 81 CloudFormationを使ったOpsWorksリソースの自動 作成 • CloudFormationテンプレート(JSON)を使ってOpsWorksの以下の リソースを自動作成可能 – AWS::OpsWorks::Stack – AWS::OpsWorks::Layer – AWS::OpsWorks::Instance – AWS::OpsWorks::App – AWS::OpsWorks::ElasticLoadBalancerAttachment • 構成サンプル:OpsWorks PHPアプリケーションをプロビジョニン グする – https://s3.amazonaws.com/cloudformation-templates-us-east- 1/OpsWorks.template ※CloudFormationテンプレートでは、時間ベースおよび負荷ベースのScaling Typeの指定は 未対応
  82. 82. 82 監視 • Amazon CloudWatchを使った13種のカスタム メトリクス • AWS CloudTrailを使ったAWS OpsWorksのAPI 呼び出しのログへの記録 • Amazon CloudWatch Logsを使ったStackのシ ステム、アプリケーション、およびカスタムロ グ
  83. 83. 83 Amazon CloudWatchカスタムメトリクスの例
  84. 84. 84 OpsWorksのユーザーアクセス管理 • 以下の2通りの方法で実現可能 – OpsWorksのPermissionsページの機能(あるいはそれ相応の API, CLI)を使う方法 – 適切なIAMアクセスポリシーを使う方法 • 両方を組み合わせて利用可能
  85. 85. 85 OpsWorksのPermissionsを使ったアクセス権限の設定
  86. 86. 86 OpsWorksのトラブルシューティング • インスタンスが起動中のプロセスでスタックす る(オンラインにならない) • カスタムCookbookが更新されない • インスタンスが予期せずに再起動する
  87. 87. 87 インスタンスが起動中のプロセスでスタックする (オンラインにならない) • 問題 – OpsWorksで起動したインスタンスが、bootingのステータスのまま変わらない • 原因 – インスタンスは、常にAWS OpsWorksサービス、Amazon S3、およびパッケー ジ、Cookbook、アプリケーションのリポジトリと通信ができる必要がある。こ れらと通信ができないためにbootingステータスから先に進むことができない • 解決方法 – 上記通信ができるようにVPCを設定する。 (Public IPでインスタンスが通信することを許可する場合は、OpsWorksレイ ヤーのネットワーク設定でPublic IPをアサインを有効に設定後にそのレイヤーの インスタンスを起動する)
  88. 88. 88 カスタムCookbookが更新されない • 問題 – リポジトリ上のカスタムCookbookを更新したが、インスタンスは古いレ シピを実行している • 原因 – OpsWorksでは各インスタンスはローカルにCookbookをキャッシュし、 キャッシュからレシピを実行する。自動的にキャッシュを更新はしない。 • 解決方法 – Update Custom Cookbooksスタックコマンドを実行する AWS Management Console 管理者 AWS OpsWorks Update Custom Cookbooksコマンド を実行 インスタンス
  89. 89. 89 インスタンスが予期せずに再起動する(1) • 問題 – 停止されたインスタンスが予期せずに再起動する • 原因 – インスタンスの自動ヒーリングを有効にしていると、異常なインス タンスを再起動する。EC2コンソールやEC2のAPI, CLIを使ってイ ンスタンスを停止すると、OpsWorksにはそれが通知されない。そ のため、そのインスタンスをOpsWorksは異常とみなし再起動する • 解決方法 – OpsWorksのコンソール、API、CLIを使ってのみインスタンスを 管理することを推奨 (自動ヒーリングを無効化も可能)
  90. 90. 90 Agenda • Introduction • AWS OpsWorks概要のおさらい • AWS OpsWorksアップデート • AWS OpsWorks Tips • お客様の事例 • まとめ
  91. 91. 91 バンダイナムコスタジオ様の事例 • 「ドリフトスピリッツプ ロジェクト」にてAWS OpsWorksを活用 • AWS OpsWorksを使っ て、開発環境・本番環境 のサーバの構築・運用を 自動化することで、運用 コストを削減 詳細: https://aws.amazon.com/jp/solutions/case-studies/bns/
  92. 92. 92 2015/3/26 よくわかるAWS OpsWorksセミナーに ご登壇頂いたユーザー様の資料リンク • バンダイナムコスタジオ様「Let’s join in OpsWorks world」 – http://www.slideshare.net/s2-nakano/lets-join-in-opsworks-world • Gunosy様「GunosyのMicroServicesとOpsWorks」 – https://speakerdeck.com/koid/yokuwakaru-aws-opsworks • バスキュール様 / スタジオ・アルカナ様「テレビ連動システムを支える OpsWorks」 – http://www.slideshare.net/mayuhamazaki90/20150326-opsworkspublic-fix • サーバーワークス様:「SimpleWorkflowとOpsWorksでサービスを構築 して解ったこと」 – http://www.slideshare.net/tetsuyachiba/20150326-aws-opsworks • マナボ様「OpsWorksに今後期待するところ」 – http://www.slideshare.net/fumihikoshiroyama/ops-works • BrainWars様「BrainWarsのOpsWorks活用事例」 – http://www.slideshare.net/matsukaz/brain-warsopsworks AWS SAブログ:「よくわかるAWS OpsWorks」セミナー資料公開 http://aws.typepad.com/sajp/2015/04/opsworks-seminar-material.html
  93. 93. 93 Agenda • Introduction • AWS OpsWorks概要のおさらい • AWS OpsWorksアップデート • AWS OpsWorks Tips • お客様の事例 • まとめ
  94. 94. 94 まとめ • AWS OpsWorksを使うことで、デプロイおよび 運用タスクを自動化可能 • Windows Server, Redhat Enterprise Linux, オンプレミスインスタンス、Amazon ECS等で も動作が可能となり、さらに利用シーンが拡大 AWS OpsWorksを使った新しいDevOpsソリューションを 是非お試しください!
  95. 95. 95 AWS OpsWorksのハンズオン資料が公開されています • OpsWorksを使ってWordpressを構築するハン ズオンを是非お試しください! – http://www.slideshare.net/AmazonWebServicesJapan/aw s-opsworks
  96. 96. 96 参考資料 • AWS OpsWorksユーザーガイド – http://docs.aws.amazon.com/ja_jp/opsworks/latest/userguide/welcome.html • OpsWorksによる多階層アプリケーションの管理 – https://d0.awsstatic.com/whitepapers/managing-multi-tiered-web-applications-with-opsworks.pdf • Application Management Blog – https://blogs.aws.amazon.com/application-management • AWS reInvent 2015: OpsWorks Under The Hood – http://www.slideshare.net/AmazonWebServices/dvo301-aws-opsworks-under-the-hood • AWS reinvent 2015: Benefit from DevOps when moving to AWS for Windows – http://www.slideshare.net/AmazonWebServices/dvo310-benefit-from-devops-when-moving-to-aws-for- windows
  97. 97. 97 Q&A 次回Webinarのお申し込み http://aws.amazon.com/jp/event_schedule/
  98. 98. 98 AWS Black Belt Tech Webinar 2015 AWSのサービスをディープにご紹介 • 今後の配信予定 デプロイ&プロビジョニング月間! – 11月18日(水)18:00〜 AWS CloudFormation – 11月25日(水)18:00〜 AWS Elastic Beanstalk • 申し込みサイト – http://aws.amazon.com/jp/about-aws/events/
  99. 99. 99 AWS初心者向けWebinar • AWSをこれからご使用になる向けのソリュー ションカットのオンラインセミナー – 11/17(火) AWSを活用したモバイルアプリの開発と運用 – 11/24(火) AWSではじめてみよう、IoTシステム構築 • 申し込みサイト – http://aws.amazon.com/jp/about-aws/events/
  100. 100. 100 Webinar資料の配置場所 • AWS クラウドサービス活用資料集 – http://aws.amazon.com/jp/aws-jp-introduction/
  101. 101. 101 公式Twitter/Facebook AWSの最新情報をお届けします @awscloud_jp 検索 最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを 日々更新しています! もしくは http://on.fb.me/1vR8yWm
  102. 102. 102 ご参加ありがとうございました。

×