Chef(Server)と AWS OpsWorks(tm)の比較
-
Upload
yukihiko-sawanobori -
Category
Technology
-
view
5.984 -
download
2
description
Transcript of Chef(Server)と AWS OpsWorks(tm)の比較
![Page 1: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/1.jpg)
Chef(Server)とAWS OpsWorks(tm)の比較
2013/07/06JAWS-UG Kobe 第2回OpsWorks(Chef)特集
Saturday, July 6, 13
![Page 2: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/2.jpg)
自己紹介
2
• http://opsrock.in 共同開発・運営• AWS OpsWorksとChefを主に取り扱うソリューションを提供
• 澤登 HiganWorks合同会社の代表社員• アプリケーションのためのプラットフォーム構築/運用自動化をテーマに活動
Saturday, July 6, 13
![Page 3: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/3.jpg)
本日の内容• Chefの紹介• OpsWorksの紹介• それぞれの目的/用途と特徴• Chef/OpsWorks比較• Chef/OpsWorksでのシステム構築(Ops視点)
• OpsWorksでRailsをChef Deploy
3Saturday, July 6, 13
![Page 4: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/4.jpg)
Chefの紹介
Saturday, July 6, 13
![Page 5: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/5.jpg)
参考スライドから簡単に
5
http://www.slideshare.net/YukihikoSawanobori/what-is-chef201303
Saturday, July 6, 13
![Page 6: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/6.jpg)
Chefって何するツール?• インフラ環境のメタデータ管理• ノードの役割を定義して収束させるフレームワーク
• 環境管理の作業を自動化/一般化するツール• Infrastructure as codeの思想を補助する
6Saturday, July 6, 13
![Page 7: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/7.jpg)
泥臭いツールOhaiを中心にプラットフォーム互換性を支える• 設定収束のためにノード情報の収集• ディストリビューション判断のif elseif elseif elseif elseif ... (Ohai)
• パッケージとサービス管理をDSL(レシピ)で表わすためのChef::Providers(chef-client)
7Saturday, July 6, 13
![Page 8: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/8.jpg)
収束・冪等性• Chef-ClientはノードをCookbookのレシピに書いたとおりの状態に近づけます
• 何度実行しても同じ結果、同じ状態となる (冪等) ようレシピにしておく事が重要
• このへん捕捉• 全てのレシピを常に実行状態(run_list)しておく必要はない
• 構成変更時専用のレシピもあり(でも冪等)
8
beki tou sei
Saturday, July 6, 13
![Page 9: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/9.jpg)
Chef形態あれこれ• Server
• Hosted ChefServer
• OpscodeのSaaS
• Private ChefServer
• Opscodeのサービス
• OpenSource ChefServer
• Linux(ほぼUbuntu)にインストールできるChefサーバ
• Client
• Chef-Client: Serverとセットで
• Chef-Solo:単独の簡易版
9Saturday, July 6, 13
![Page 10: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/10.jpg)
OpsWorksの紹介
Saturday, July 6, 13
![Page 11: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/11.jpg)
こちらも参考スライドから
11
http://www.slideshare.net/YukihikoSawanobori/copy-2013-0622awsopsworksoverview
Saturday, July 6, 13
![Page 12: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/12.jpg)
AWS OpsWorksとは?
12Saturday, July 6, 13
![Page 13: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/13.jpg)
AWS OpsWorksとは?
12
• アプリケーションのライフサイクル管理を一本化するために作られたソリューション
Saturday, July 6, 13
![Page 14: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/14.jpg)
AWS OpsWorksとは?
12
• アプリケーションのライフサイクル管理を一本化するために作られたソリューション
• プラットフォームの自動構築
Saturday, July 6, 13
![Page 15: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/15.jpg)
AWS OpsWorksとは?
12
• アプリケーションのライフサイクル管理を一本化するために作られたソリューション
• プラットフォームの自動構築• アプリケーションのdeploy(undeploy)
Saturday, July 6, 13
![Page 16: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/16.jpg)
プラットフォームの自動構築• アプリケーションが動作するプラットフォームとは?
• ネットワーク環境の構築• サーバ(インスタンス)の調達• ミドルウェアの設定
13Saturday, July 6, 13
![Page 17: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/17.jpg)
プラットフォームの自動構築• アプリケーションが動作するプラットフォームとは?
• ネットワーク環境の構築• サーバ(インスタンス)の調達• ミドルウェアの設定
13Saturday, July 6, 13
![Page 18: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/18.jpg)
プラットフォームの自動構築• アプリケーションが動作するプラットフォームとは?
• ネットワーク環境の構築• サーバ(インスタンス)の調達• ミドルウェアの設定
13Saturday, July 6, 13
![Page 19: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/19.jpg)
プラットフォームの自動構築• アプリケーションが動作するプラットフォームとは?
• ネットワーク環境の構築• サーバ(インスタンス)の調達• ミドルウェアの設定
13Saturday, July 6, 13
![Page 20: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/20.jpg)
プラットフォームの自動構築• アプリケーションが動作するプラットフォームとは?
• ネットワーク環境の構築• サーバ(インスタンス)の調達• ミドルウェアの設定
13Saturday, July 6, 13
![Page 21: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/21.jpg)
アプリケーションのdeploy• アプリケーション≒ソースコード(リポジトリ)• git, svn, zip(http, s3)+ 何らかの配布/ビルドの仕組み
14Saturday, July 6, 13
![Page 22: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/22.jpg)
アプリケーションのdeploy• アプリケーション≒ソースコード(リポジトリ)• git, svn, zip(http, s3)+ 何らかの配布/ビルドの仕組み
14Saturday, July 6, 13
![Page 23: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/23.jpg)
アプリケーションのdeploy• アプリケーション≒ソースコード(リポジトリ)• git, svn, zip(http, s3)+ 何らかの配布/ビルドの仕組み
14
OpsWorks Agent
Saturday, July 6, 13
![Page 24: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/24.jpg)
アプリケーションのdeploy• アプリケーション≒ソースコード(リポジトリ)• git, svn, zip(http, s3)+ 何らかの配布/ビルドの仕組み
14
OpsWorks Agent
タスク実行
Saturday, July 6, 13
![Page 25: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/25.jpg)
アプリケーションのdeploy• アプリケーション≒ソースコード(リポジトリ)• git, svn, zip(http, s3)+ 何らかの配布/ビルドの仕組み
14
OpsWorks Agent
タスク実行 タスク実行管理
Saturday, July 6, 13
![Page 26: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/26.jpg)
OpsWorksを理解する用語集• スタック• 特定のアプリケーションシステム全体• レイヤ• アプリケーション動作プラットホームを役割別に定義するインスタンスの集合
• WEB役,DB役など• ライフサイクル (次ページへ)
15Saturday, July 6, 13
![Page 27: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/27.jpg)
1.Setup2.Configure3.Deploy4.UnDeploy5.Shutdown
16
OpsWorksのライフサイクル定義
Saturday, July 6, 13
![Page 28: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/28.jpg)
1.Setup2.Configure3.Deploy4.UnDeploy5.Shutdown
16
OpsWorksのライフサイクル定義
プラットフォーム部分
Saturday, July 6, 13
![Page 29: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/29.jpg)
1.Setup2.Configure3.Deploy4.UnDeploy5.Shutdown
16
OpsWorksのライフサイクル定義
プラットフォーム部分
アプリケーション部分
Saturday, July 6, 13
![Page 30: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/30.jpg)
Chef / OpsWorksそれぞれの
目的/用途と特徴
Saturday, July 6, 13
![Page 31: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/31.jpg)
その前に...それぞれの印象
18
OpsWorks
Chef
•”アプリ”のデプロイ、ライフサイクル管理に 全力特化•しきたりが意外と重要
•使い方は色々•”プラットフォーム”を結構広い意味で取り扱える
※発表者個人の感想です、先入観を持たないようお願いします
Saturday, July 6, 13
![Page 32: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/32.jpg)
その前に...それぞれの印象
18
OpsWorks
Chef
•”アプリ”のデプロイ、ライフサイクル管理に 全力特化•しきたりが意外と重要
•使い方は色々•”プラットフォーム”を結構広い意味で取り扱える
※発表者個人の感想です、先入観を持たないようお願いします
Saturday, July 6, 13
![Page 33: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/33.jpg)
その前に...それぞれの印象
18
OpsWorks
Chef
•”アプリ”のデプロイ、ライフサイクル管理に 全力特化•しきたりが意外と重要
•使い方は色々•”プラットフォーム”を結構広い意味で取り扱える
※発表者個人の感想です、先入観を持たないようお願いします
Saturday, July 6, 13
![Page 34: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/34.jpg)
対応OSディストリビューション
19
OpsWorks
Chef
•AmazonLinux(CentOSベース)•Ubuntu12.04
•redhat系、Debian系•Windows、MacOSX•FreeBSD、Solaris•などなど各種対応
Saturday, July 6, 13
![Page 35: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/35.jpg)
クラウドインテグレーション
20
OpsWorks
Chef
•AWSとはそこそこ。•ELB, CloudWatchなどとデフォルト連携OK
•Bootstrapとプラグインで大概対応可•サーバ調達IaaSもどこでもいい(EC2, OpenStack,Joyent等)•そもそもIaaSをChefで構築したり(OpenCenter(OpenStack)など)
Saturday, July 6, 13
![Page 36: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/36.jpg)
CookBooks管理
21
OpsWorks
Chef
•システム一式を同一リポジトリでまとめて管理する必要がある•スタックへの更新は一括適用
•ChefServerにCookbookバージョン管理の仕組みを備える•Berkshelf,Librarian等、Server/Solo問わず使いやすいツールあり
Saturday, July 6, 13
![Page 37: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/37.jpg)
Chefのバージョン
22
OpsWorks
Chef
•0.9.15.5(2013/07時点)•Defenition, LibrariesとLWRPはひと通り使えるが最近の書式に対応していない箇所も
•11.x•コミュニティCookbooksはほぼ10以降のバージョン用
Saturday, July 6, 13
![Page 38: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/38.jpg)
ChefClientの実行
23
OpsWorks
Chef
•ライフサイクルの進行ごとにChefSoloを順次実行。(都度JSON作成)•Chef単純にタスク実行としての意味合いが強い•イベント対応でオンタイム実行も
•ChefClientでChefServerと通信•基本はCronで継続的に実行
Saturday, July 6, 13
![Page 39: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/39.jpg)
ノードのAttributes
24
OpsWorks
Chef
•スタック・レイヤの情報のみが随時更新&構成に利用可能•ユーザ指定はスタックの”Custom Chef Json”にて
•Ohaiの収集情報がServerに集約され、フルに活用できる。•レシピ内でのSetAttribute、Role他でのAttributeマージor更新が柔軟
Saturday, July 6, 13
![Page 40: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/40.jpg)
テストスイート
25
OpsWorks
Chef
•地味にminitest-chef-handlerが付いている。•cookbooks内に受け入れtestを書いて、Failさせることは可能。•ServerSpecもおそらく有効
•Vagrantを軸にtest-kitchenなどのツールが揃っている•ChefSpec, FoodcriticなどCookbookごとのテストもそこそこやりやすい
Saturday, July 6, 13
![Page 41: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/41.jpg)
Chef/OpsWorksでのシステム構築(Ops視点)
Saturday, July 6, 13
![Page 42: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/42.jpg)
テーマはアプリケーションの
ホスト
Saturday, July 6, 13
![Page 43: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/43.jpg)
Chefでシステム構築例• まず単体サーバ• とりあえずアプリケーションを動かすところへ持っていく
• ミドルウェアの設定にChefを使っていく• アプリのデプロイは場合によってツールを選択
• 構築中:Capistrano=> 本番: CapistranoまたはChefなど
28Saturday, July 6, 13
![Page 44: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/44.jpg)
ステップ1:構築初期
29
ChefServer
DevServer
APP
ミドルウェアを適当に設定
手動設定をCookbookに起こしながらDevサーバ側で実行を繰り返して調整。先にテストを書くのもベター。
Saturday, July 6, 13
![Page 45: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/45.jpg)
ステップ2:役割定義
30
ChefServer
DevServer
APP
HTTP Proxy
アプリケーションのプラットフォームとして、各種ミドルウェアを役割別に分類し、グループ化する。
QueueServer
Roleとしてrun_listを登録していくKVS(Cache)
MailServerDatabaseApp Runtime
Saturday, July 6, 13
![Page 46: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/46.jpg)
ステップ3:Staging/本番展開
31
ChefServer
StagingServer1
役割(Role)はChefServerのSearchAPIを使うか、DataBagなどで集中管理してそれぞれのIP(場所)をお互い知れるようにしておく。
Roleのrun_listを適用していく
StagingServer2
StagingServer3
StagingServer4
StagingServer5
StagingServer6Database
MailServer
QueueServer
APPAPP
AppRuntime AppRuntime
HTTP Proxy
KVS(Cache)
Saturday, July 6, 13
![Page 47: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/47.jpg)
Chefで構築まとめ• 最初は開発サーバを直接適当にいじりながら徐々にCookbookへ
• 最終的には開発サーバもChef実行で収束するようにしておく(手作業再現)
• 手作業の代わりとしてテストが使える※よく知っているミドルウェアが対象ならテストファーストが効率良い
• ロールの定義とChefServerへのクエリベースの構成まで持っていけば量産体制へ
32Saturday, July 6, 13
![Page 48: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/48.jpg)
OpsWorksでシステム構築例• アプリを中心に、まず必要な役割(レイヤ)を考える
• なるべく標準レイヤでまかないつつ、無いものを追加していく
• レイヤは”Custom Cookbook”と”Custom Chef JSON”で
• アプリのデプロイはChefのDeployリソース一択
33Saturday, July 6, 13
![Page 49: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/49.jpg)
OpsWorksレイヤ追加
34
Cookbookリポジトリ
OpsWorks
新しいレイヤCustom Cookbookで新しいレイヤを作成。個別設定、クレデンシャル情報などはCustom Chef JSONに定義する。
Custom Chef JSON
Saturday, July 6, 13
![Page 50: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/50.jpg)
新レイヤの利用
35
Cookbookリポジトリ
OpsWorks
新しいレイヤ
既存レイヤはOpsWorks Backendを通じて、新しいレイヤ上インスタンスの情報を取得。クレデンシャル等はJSONから。
Custom Chef JSON
既存レイヤ
OpsWorks Backend
Saturday, July 6, 13
![Page 51: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/51.jpg)
OpsWorksでrailsを
Chef Deploy
Saturday, July 6, 13
![Page 52: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/52.jpg)
デプロイしたRailsアプリ• Railsリポジトリ内にChefレシピを含める• 他のAWSと連携する• RailsServerとは別に、ワーカーデーモンがひとつ
• 定期的実行するCronにジョブを登録する
• ChefのDeployリソースなのでChefServerでも大体通用
37Saturday, July 6, 13
![Page 53: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/53.jpg)
ChefのDeployについて• デプロイを細かいタスクに分けて実行• 各タスクの間にフックを仕込める• 仕込み先は”Railsプロジェクト”のリポジトリ
• migrate, symlink, restartのそれぞれberfore/afterのタイミング
38Saturday, July 6, 13
![Page 54: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/54.jpg)
他のAWSと連携するのでコンフィグを作る
• before_restartのフックでChefる• deploy/before_restart.rb
39
aws_configs =<<__EOL__production: access_key_id: "#{node[:aws_configs][:access_key_id]}" secret_access_key: "#{node[:aws_configs][:secret_access_key]}"__EOL__
file ::File.expand_path('../../shared/config/aws.yml', release_path) do action :create content aws_configs mode '0660' owner 'deploy' group 'www-‐data'end
link ::File.join(release_path, 'config/aws.yml') do to ::File.expand_path('../../shared/config/aws.yml', release_path) owner 'deploy'end
yamlの文字列作成
sharedの下にファイル設置
最新のアプリコードの下にリンク作成
Saturday, July 6, 13
![Page 55: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/55.jpg)
ワーカーデーモンを起動する 1/2
40
• 起動・終了スクリプトを設置するためbefore_symlinkあたりのフックでChefる
• deploy/before_symlink.rbsqs_start_script =<<__EOL__#!/bin/bash
export RAILS_ENV=productioncd #{::File.expand_path('../../current', release_path)}
bundle exec thor sqs:start -‐d -‐-‐pidfile tmp/pids/sqs_worker.pid__EOL__
file ::File.expand_path('../../shared/scripts/sqs_start', release_path) do action :create content sqs_start_script mode '0755' owner 'deploy' group 'www-‐data'end
開始スクリプトの文字列作成
実行権をつけて設置
Saturday, July 6, 13
![Page 56: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/56.jpg)
ワーカーデーモンを起動する 2/2
41
• 実際に(再)起動するためafter_restartのフックでChefる
• deploy/after_restart.rbexecute 'start sqs_worker' do command '/srv/www/rails_ses/shared/scripts/sqs_start' action :runend
デーモン開始をexecute
Saturday, July 6, 13
![Page 57: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/57.jpg)
Cronにジョブを登録する
42
• after_restartのフックでChefる• deploy/after_restart.rb
cron 'add sqs_scheduler' do action :create minute '3/*' command ::File.expand_path('../../shared/scripts/scheduler', release_path)end
3分置きに実行するコマンドをCronに登録する
Saturday, July 6, 13
![Page 58: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/58.jpg)
最後に• OpsWorksの主題はアプリのライフサイクル管理
• タスク実行にChefのレシピが使える• 用意されているものから選択するのは楽• ChefServerは用途色々• 自由度が高い分、システムの目的・ノードの役割をしっかり定義しておかないとぐだります
43Saturday, July 6, 13
![Page 59: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/59.jpg)
OpsRock.in
44Saturday, July 6, 13
![Page 60: Chef(Server)と AWS OpsWorks(tm)の比較](https://reader034.fdocuments.net/reader034/viewer/2022052321/555e800fd8b42a41328b50ce/html5/thumbnails/60.jpg)
以上ありがとうございましたご質問・ご相談は
適当にお越しください(^^)
Saturday, July 6, 13