share facebook facebook2 twitter menu hatena pocket slack

2013.01.09 WED

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

鈴木 宏康

WRITTEN BY鈴木 宏康

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)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。