cloud-initで起動時に任意のスクリプトを実行する(CentOS6)の記事に引き続き、cloud-initでスクリプトを
実行してみます。
今回は設定ファイルに下記のように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に入力するスクリプトを用意します。
suz-lab-centos-ami / share / cloud-init /
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
リブートしても上記の出力は変わらないので、最初に起動したときのみ実行されることが確認できます。