CloudInit を使って Amazon EC2 をスマートに立ち上げる

Posted on

仕事でもプライベートでもお世話になってる Amazon EC2。サーバ環境を気軽に構築できる反面、最初の設定がやや手間です。

CloudInit を使うと EC2 インスタンスを起動したときにお決まりの作業、たとえばパッケージのアップデートや環境設定の変更を自動化することができます。 CloudInit はもともと Ubuntu で開発されたツールですが Amazon Linux にも採用されています。

今回は以下の 4 つを CloudInit で自動化してみます。

  • パッケージのアップデート
  • ロケールの設定
  • タイムゾーンの設定
  • 必須パッケージのインストール

Cloud Config の準備

#cloud-config
repo_upgrade: all
packages:
 - ruby19
runcmd:
 - [sed, -i, 's/en_US/ja_JP/', /etc/sysconfig/i18n]
 - [cp, /usr/share/zoneinfo/Asia/Tokyo, /etc/localtime]

1 行目は CloudInit を使う上での決まりです。

2 行目はパッケージのアップデート、3 行目の packages は yum コマンドで好きなパッケージをインストールできます。ここでは Ruby 1.9 系をインストールしています。

5 行目の runcmd は任意のシェルスクリプトを実行できます。書き方が少し独特で、前後をブラケットで囲みカンマで区切ります。

6 行目はロケールを en_US から ja_JP に、7 行目はタイムゾーンを JST に変更しています。

あとは、インスタンスを立ち上げるウィザード画面の User Data というところにペーストして立ち上げるだけです。

CloudInit

これだけで設定した手順が実行されてインスタンスが立ち上がります。 Cloud Config さえ事前に準備しておけば、設定済みの LAMP 環境を 30 秒で立ち上げることもできます。

Cloud Config のサンプルはこのページに多数載っています。