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

リブートしても上記の出力は変わらないので、最初に起動したときのみ実行されることが確認できます。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら