AWS OpsWorksとは
AWS OpsWorks(以下OpsWorks)とは、Amazon Web Services(AWS)が提供している、環境構築とアプリケーションのデプロイの自動化・統合管理を実現するサービスです。
OpsWorksを用いると、短時間で手軽にアプリケーションを動かす環境一式を自動構築することができ、要件に応じて柔軟に構成を変更できます。またアプリケーションを登録しておけば、コンソールから指示するだけでデプロイやバージョンアップの処理を自動的に行えます。
AWSは以前からアプリケーション管理を行う同種のサービスとして、AWS Elastic Beanstalk、AWS CloudFormationという2つのサービスを提供していました。AWS Elastic Beanstalkを使うと、アプリケーションを動かす環境一式を選択肢から選ぶだけで環境が自動構築され、アプリケーションコードだけを用意すれば、すぐにWebサービスを稼働させることができます。またAWS CloudFormationでは、構築する環境構成を定義したテンプレートを作成しておくと、テンプレートに従ってAWSの各種サービスを組み合わせたIaaS層の環境を自動構築できます。今回紹介するOpsWorksは、Elastic Beanstalkのように短時間で手軽にアプリケーションが動作する環境を構築しつつ、要件に応じて柔軟に環境構成を変更できる、Elastic BeanstalkとCloudFormationの中間の特性を持った新たなサービスとなっています。
OpsWorksは、AWSが2012年に買収したPeritor社が提供していたScalariumというサービスが基となっており、2013年2月からβ版として提供が開始されています。
AWS OpsWorksで使われる用語
OpsWorksについての説明を始める前に、まずOpsWorksと、OpsWorksの内部で利用されているChefで使われる用語について簡単に説明しておきます。
OpsWorksで構築・管理する環境は、大別すると「Stack」「Layer」「Instance」「App」という4つの要素で構成されています。Instance、Appについては名前からも分かるように、それぞれ1つのEC2 Instance(1台のサーバ)、1つのアプリケーションを指しています。その一方で、StackやLayerについては耳慣れない用語かもしれません。Layerは、例えばWeb Server、App Server、DB Serverといった、役割ごとのEC2 Instanceを作成するための雛形となる設定情報をまとめたものです。OpsWorksではこのLayerに設定された情報を元に、EC2 Instanceのセットアップを行います。そしてStackは、各Layer、Instance、Appなどをすべて束ねた、これから作成する環境一式を指す概念です。Stackでは環境全体で共有する設定情報を保持しています。
上記の4つの要素の関連を図示したのが図1です。Stackは複数のLayerを持ち、各Layer内には複数のInstanceが存在し、指定されたLayer内のInstanceにAppがデプロイされます。
OpsWorksにおいて重要な位置を占めるもう一つの要素が、OSより上の層を構築するために使われるChefというツールです。Chefとは米Opscode社がオープンソースで開発している、環境構築・構成管理を自動化するツールです。Chefでは「Recipe」と呼ばれる、Rubyのコードで書かれた構築手順書のようなものを用いて環境の自動構築を行います。関連する複数のRecipeを束ねたものは「Cookbook」と呼ばれます。
OpsWorksでは、AWSが用意したさまざまなRecipeがLayerに割り当てられており、Instanceを作成する際にはそれらのRecipeに記載された構築手順に従って環境を自動的に構築しています。またLayerにはAWSから提供されているRecipeだけでなく、ユーザが作成したRecipeも割り当てることができます。そのため、ユーザは変更したい部分の構築手順を記したRecipeを作成すれば、環境構成を柔軟に変更できます。
実際に使ってみる
それでは実際にOpsWorksを利用してみましょう。ここでは利用例として、AWS公式サイト内で公開されているUser Guide内に記載があるサンプルアプリを動かしてみたいと思います。
本稿では所々簡略化しているので、OpsWorksの機能をより詳細に知りたい場合はUserGuideに目を通してみてください。
Stackの作成
まずは他のAWSのサービスと同様に、Management ConsoleにログインしてOpsWorksの画面を開きます。初回アクセス時はWelcome to AWS OpsWorksの画面が表示されますので、Add your first StackをクリックしてStackを作成します。
図2がStackの登録画面です。ここでは利用するリージョンやデフォルトで利用するOSなど、環境全体で共有する設定を行うことができます。自作のRecipeを利用したい場合は、Advancedの所を開いてUse custom Chef Cookbooksという項目をYesにし、Cookbookの場所を指定する必要があります。今回は自作のRecipeは使用しないので、Noのままで構いません。