Amazon Linux起動時にCloudInitで設定するもの

AWS運用自動化サービス「Cloud Automator」
この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。

          こんにちは!AWSチームの柳瀬です!

どうやら最近弊社のエンジニアブログで何かあったみたいですが、後日談はご本人にお任せするとしましょうか

というわけで、私はEC2インスタンスを起動する時に設定を自動化出来るCloudInitについて書きたいと思います。
CloudInitはもともとUbuntuが由来のソフトウェアですが、Amazon Linuxでも標準でインストールされており、起動時に指定したUserDataから初期設定を自動化することが出来ます。
インスタンスの自動構成だとChefやPuppetが有名ですが、簡単なものなら記述方法がシンプルなCloudiInitも便利です。 UserDataはインスタンスを起動するときに、以下の部分にテキストを貼付けると指定が出来ます。
また、ec2-apitoolsのec2-run-instancesコマンドを使用する場合は-f(–user-data-file)を使用してテキストファイルからUserDataを指定する事も可能です。
その場合のコマンド実行例は以下のようになります。

具体的に指定するUserDataですが、私は以下のように指定する事が多いです。 ※設定した内容は以下の表をご覧ください。

2行目yum updateを実行するオプションになります。 Amazon Linuxはデフォルトでsecurityが指定されておりますが、私はほとんど最新にしてしまうので、”repo_upgrade: all”を指定します。

行数 内容
1行目 CloudInitでUserDataを使用する場合は1行目にこのように記述します。
3行目 以下の行が起動後に実行するコマンドである事を指示します。
4行目 タイムゾーンの設定をしています。
※Amazon LinuxのデフォルトはUTC
5行目 ec2-run-instancesコマンドの-b(–block-device-mapping)オプションでルートデバイス(EBS)を拡張した場合に、ファイルシステムのサイズを変更しています。

各種パッケージのインストール場合は以下のようにご指定下さい。

ちなみにUbuntu11.10にインストールされているCloudInitですと以下のように指定する事も出来ます。

Cloudinitを使用するとログインする事なく設定が出来ますし、作業漏れを防げるので重宝しますよ:-)

AWS運用自動化サービス「Cloud Automator」