CloudInitを使ってみた
Amazon Linuxで何気なくchkconfig --listしたら、見たこと無いやつがあった。
cloud-init?なんだそれ?
CloudInit→[cloud-init is the Ubuntu package that handles early initialization of a cloud instance.]とのことで、元々Ubuntuのパッケージだったそうなんだけど、要はEC2インスタンスの初期起動時のお決まりのセットアップをスクリプト化しちゃうものらしい。なるほど便利そう。
CloudInitのスクリプトは、EC2インスタンスをLaunchするときの以下の画面、User Data枠に記載する。
例えばこんな感じ。
パッケージ全部をyum upgradeして、指定したパッケージを追加で入れて、かつコマンド実行する。今回はAWS-SDKがセットアップされた状態にしたかった。
EC2インスタンス起動後、ログを確認し、エラーが無いことを確認する。
# cat /var/log/cloud-init.log
どれどれ...
大量に同じノードを展開したいときはオリジナルAMI作ってばら撒くほうが良いんだろうけど、いつも必ず最初にやるようなことはCloudInitにお任せしちゃうと楽だね!
$ chkconfig --list cloud-init 0:off 1:off 2:on 3:on 4:on 5:on 6:off cloud-init-user-scripts 0:off 1:off 2:on 3:on 4:on 5:on 6:off
cloud-init?なんだそれ?
CloudInit→[cloud-init is the Ubuntu package that handles early initialization of a cloud instance.]とのことで、元々Ubuntuのパッケージだったそうなんだけど、要はEC2インスタンスの初期起動時のお決まりのセットアップをスクリプト化しちゃうものらしい。なるほど便利そう。
CloudInitのスクリプトは、EC2インスタンスをLaunchするときの以下の画面、User Data枠に記載する。
例えばこんな感じ。
パッケージ全部をyum upgradeして、指定したパッケージを追加で入れて、かつコマンド実行する。今回はAWS-SDKがセットアップされた状態にしたかった。
#cloud-config repo_upgrade: all packages: - ruby-devel - rubygems - gcc - make - libxml2-devel - libxslt-devel runcmd: - [gem, install, nokogiri] - [gem, install, aws-sdk] - [sed, -i, 's/en_US/ja_JP/', /etc/sysconfig/i18n] - [cp, /usr/share/zoneinfo/Asia/Tokyo, /etc/localtime]
EC2インスタンス起動後、ログを確認し、エラーが無いことを確認する。
# cat /var/log/cloud-init.log
どれどれ...
$ gem list --local *** LOCAL GEMS *** aws-sdk (1.20.0) json (1.8.0) mini_portile (0.5.1) nokogiri (1.5.10) uuidtools (2.1.4)おおーちゃんと最初からAWS-ASKがセットアップ済みだー!これは便利!
大量に同じノードを展開したいときはオリジナルAMI作ってばら撒くほうが良いんだろうけど、いつも必ず最初にやるようなことはCloudInitにお任せしちゃうと楽だね!