2013年1月3日木曜日

"cloud-init"で"User Data"を使ってEC2を最初に起動した時のみ任意のスクリプトを実行する

スズキです。

下記に引き続き、"cloud-init"でスクリプト実行してみるシリーズです。
"cloud-init"で起動時に任意のスクリプトを実行する(CentOS6)

今回は設定ファイルに下記のように"scripts-user"を追加します。
# cat /etc/cloud/cloud.cfg
manage_etc_hosts: localhost
user: root
disable_root: false
ssh_genkeytypes: [ rsa, dsa ]

cloud_init_modules:
 - resizefs
 - update_etc_hosts
 - ssh

cloud_final_modules:
 - scripts-user
追加することにより"/etc/init.d/cloud-final start"されたときに、EC2の"User Data"に
入力された処理が実行されます。

当然、EC2起動時に"cloud-final"が実行される必要があるので自動起動にしておきます。
# chkconfig cloud-final

そしてHTTP(S)でアクセスできる場所に"User Data"に入力するスクリプトを用意します。

https://raw.github.com/suz-lab/suz-lab-centos-ami/master/share/cloud-init/suz-lab_test.sh
#!/bin/sh
echo `date` > /tmp/suz-lab_test.txt

最後に下記のように"User Data"を指定してEC2を起動します。

「EC2を最初に起動した時のみ」実行されるように"#include-once"で指定します。

実際に起動すると、下記のように確認できます。
# cat /tmp/suz-lab_test.txt 
2013年 1月 3日 木曜日 15:57:26 JST
リブートしても上記の出力は変わらないので、最初に起動したときのみ実行されることが
確認できます。

後は、初期実行スクリプト(SUZ-LAB Script)の数を揃えるだけか...
--------
http://www.suz-lab.com

0 コメント: