Layerの作成
次に、Instanceを作成する際の雛形となるLayerを作成します。
Stackの画面からAdd a layerを選択するか、Management Consoleの左側のメニューからLayersを選択し、+Layerを選択すると図3のような画面が開きます。
プルダウンメニューの選択肢からも分かるように、さまざまなLayer typeが標準で用意されています。標準で用意されているLayerの中には、バージョンなどの追加の設定項目を指定できるものもあります。例えば図2に映っているRails App Serverの場合、Rubyのバージョンの選択や、Rails stack(Passengerを使うかUnicornを使うか)の選択などもこの画面から設定できるようになっています。自分で好きなLayerを作りたい場合は、Customを選択すると最低限の項目を含む雛形が作成されます。
今回はPHPのサンプルアプリを動かすので、Layer typeの中からPHP App Serverを選択して追加します。OpsWorksは5/14からELBを利用できるようになったので、今回はELBも指定してみました。ELBを指定する場合は、OpsWorksで利用するリージョン内に事前に手動でELBを作成しておいてください。
PHP App Serverの登録時の画面には最低限の項目しかありませんでしたが、一度Layerを作成した後にEdit画面を開くと、実行するRecipeの追加や割り当てるSecurity Groupの選択、EBSボリュームの追加、Auto Healing機能の有効化などさまざまな設定が追加で行えます。
今回はデフォルトのまま利用するので次に進みます。
Instanceの追加
次に、先ほど作成したLayerにInstanceを追加します。Instanceには常時稼働する「24/7」というタイプの他に、スケジュールに応じて起動停止するTime-based、負荷に応じて起動停止するLoad-basedを加えた3種類があります。今回は常時稼働する24/7のInstanceを1台追加しましょう。
左のメニューからInstancesを選択し、先ほど作成したPHP App ServerのLayerの所にあるAdd an instanceを選択すると、図5のようなフォームが現れます。
今回はサンプルアプリを動かすだけなので、Sizeはm1.smallで十分でしょう。その他の欄には、基本的にStackの設定項目の所で決めた値がデフォルト値として入っています。問題なければAdd instanceを選択して追加してください。
Instanceを追加した時点では、まだOpsWorksに登録されただけで、EC2 Instanceは存在していません。追加後にInstancesの画面からstartを選択すると、EC2 Instanceが作成されてChefにより自動的に構築が行われます。Instance Typeにm1.smallを指定した場合、構築には10分程度かかりました。構築が完了してStatusがOnlineになったら次へ進みましょう。
アプリケーションのデプロイ
最後にアプリケーションの登録とデプロイを行います。画面左のメニューからAppsを選択してAdd an appを選択すると、デプロイするアプリの登録画面が開きます。
今回はAWSのUser Guide内で使われていたサンプルアプリである、SimplePHPAppをデプロイします。設定するのは、App Name、App Type、Repository Type、Repository URLの4か所です。App Nameは自由につけて構いません。残りの3か所はUser Guide内の記述に従い、App TypeはPHP、Repository TypeはGit、Repository URLは、git://github.com/amazonwebservices/opsworks-demo-php-simple-app.gitを指定してAdd appを実行します。
今回はAWSが公開しているGit Repositoryを指定しましたが、アプリケーションコードの置き場所はGitやSVNのリポジトリのほかに、S3のパスやHTTPでアクセスできるURLなども指定できます。
追加するとApp画面に登録したアプリケーションの一覧が表示されるので、Actionの中にあるDeployを選択してデプロイ画面を開きます。
今回は特に変更する箇所はないので、そのままDeployを実行します。Advancedの欄を開くと、ChefのRecipeに与える追加のJSONを指定したり、デプロイを実行するLayerやInstanceを個別に指定することもできます。
実際にアクセス
デプロイ処理が完了すると、アプリケーションにアクセス可能な状態となっています。ELBを登録した場合はInstances画面のVisit URLを、ELBなしなら個別のInstanceのPublic IPを開いてみると、以下の画面が確認できると思います。
以上がOpsWorksを利用する際の基本的な流れです。今回はLayerは1つだけでしたが、実際に利用する際はもう少し多様なLayerを追加したり、自作したChefのRecipeを追加する形になると思います。その場合も多少設定する箇所が増えるだけで、基本的な流れは変わりません。