CloudFormationを使うと、環境をテンプレート化して再利用が簡単にできるようになります。
CloudFormationは、AWSのシステム構成をJSONで記述してテンプレート化し、構成の管理、修正、再利用を容易にするサービスです。
テンプレートによって作成された環境群は「スタック」と呼ばれます。AWSからWordPress、SharePoint、Redmineなどのサンプルテンプレートが多数提供されており、これらのテンプレートを使用することでその環境を簡単に用意することが可能です。
テンプレートを記述するJSONはテキストファイルのため、別途GitやSVNなどのバージョン管理システムで管理することによって、構成の変更履歴を追跡することが可能になります。また、現在の構成をテンプレート化するCloudFormerというツールもAWSから提供されています。
CloudFormationの手軽さを実感するために、LAMPスタックを構築してみましょう。Management ConsoleのCloudFormation管理画面にある、「Create Stack」をクリックします。もし、Create Stackが表示されていない場合は、Actionsをクリックするとメニューが表示されますので、そちらをクリックします。
スタック名と使用するテンプレートを選択します。今回はLAMPスタックを構築したいので、リストからSingle Instance Samplesの中にある「LAMP Stack Hello World Example」を選択し、Nextをクリックします。
LAMPスタック内で使用するMySQLのパスワードを、DBRootPasswordに入力します。InstanceTypeに使いたいインスタンスタイプを入力することが可能ですが、今回はデフォルトのままにします。
入力が終わったらNextをクリックします。
スタックと、スタックに所属するリソース(EC2、RDS、ELBなど)に付与するタグを設定します。入力は任意ですが、今回はKeyに「Environment」、Valueに「Testing」と入力します。複数入力したい場合は、右側にある+ボタンをクリックすると追加できます。
なお、設定したタグ以外にもCloudFormationによって、スタック名、スタックID、リソース内部名のタグが自動的に設定されます。
Advancedは今回触れませんが、スタックでイベントが発生した際の通知、スタック作成時間のタイムアウト、スタック作成失敗時のロールバック有無、スタックのポリシー(アクセス制御)を設定することが可能です。
入力が終わったらページ下部のNextをクリックします。
最後にレビュー画面が表示されます。レビュー画面では先ほど設定した項目に加え、テンプレートファイルのURL、スタックの概要、予想される月額費用を計算したページヘのリンクなどが表示されます。内容に誤りがないことを確認して、ページ下部のCreateをクリックします。
Createをクリック後、最初の画面にスタックの作成状況が表示されます。StatusがCREATE_COMPLETEに変わったら作成完了です。
作成完了後にOutputsタブでLAMPスタックのURLが表示されます。
なお、このサンプルテンプレートにはFTPサーバーの設定やSSH接続するための秘密鍵設定などが含まれていません。コンテンツを編集できるようにするには、テンプレートにこれらの設定を書き足す必要があります。
作成されたスタックは、Update Stackをクリックすることで編集することが可能です。
編集内容によっては、サーバーの再起動や再構築が発生するので、実際に運用に使う際は、テスト環境でテストを行ってから編集することをお勧めします。
スタックの削除も、同様にスタックを選択し、Delete Stackをクリックすることで、確認画面を経由した後に削除されます。
Delete Stackを実行するとCloudFrontによって作成されたリソースが全て削除されますので、必要に応じてAMIやSnapshotを作成しておくことをお勧めします。
CloudFormationでは、今回使用したサンプルテンプレートのように、作成したインスタンスに指定したパッケージをインストールしたり、コマンドを実行できるので、テンプレートがあればスタックが完成してすぐにアプリケーションを使用できる状態にすることができます。
サーバー同士の依存関係などもCloudFormationで解決することができるので、数十台、数百台規模のサーバー群の構築を何回も行うような場合には、自動化することで構築作業の効率化ができるのではないでしょうか。
Copyright © ITmedia, Inc. All Rights Reserved.