EC2インスタンス作成時に自動でミドルウェアのインストールをする方法(CDP No.35 Bootstrapパターン)[1]

今日はクラウドデザインパターン(書籍)のNo.35 Bootstrapパターンを試してみました。

構成済みのマシンイメージをAMIとして保存しておいて、それを複製する形で新しいインスタンスを作成することは可能ですが、たとえばインスタンス作成時、常に各ミドルウェアを最新のバージョンで構成したい場合、都度AMIを作成し直すのではなく、その時点での最新のインストーラを取得してセットアップすることで省力化が可能な場合に利用したいパターンです。

Amazon EC2のみならず、インスタンス作成時にあるタスクを自動で実行させる方法としてはCloudFormation、chef、init.dに自動実行されるシェルを置いたAMIを使うなどいくつか方法が考えられますが、今回は基本となるCloudInitという方法で直接LAMP構成に必要なApache,PHP,MySQLをインストールしてみます。

CloudInitでミドルを構築するということでこちらを参考にしました。

インスタンス作成時、ウィザード画面のUser Data部分に以下のテキストをコピペします。
※手入力ではなくコピペで行うこと。

#cloud-config
packages:
- httpd
- php
- php-mbstring
- php-mysql
- php-ldap
- mysql
- mysql-server

runcmd:
- [chkconfig, mysqld, "on"]
- [chkconfig, httpd, "on"]
- [service, mysqld, start]
- [service, httpd, start]

以上を設定し起動したら/var/log/messagesをcatしてインストールが実行されたか確かめましょう。

今回の例ではhttpd.confやphp.iniあるいはMySQLの設定などを自動化されていないので、手動でyumインストールする手間とあまり変わりません。
さらに運用を高度化する必要はありそうですので、それは次回以降とします。