EC2を立ち上げるのに設定を進めていくと、Configure Instance Detailsの下にAdvanced Detailsというところがあります。それを覗くとUser dataってのがあります。
これで、インスタンス作成時に実行してほしいシェルスクリプトとかcloud-initとかかけるんです。sshログインしなくてもchef-soloとか実行できちゃうんですねえ。
しかし、User dataってインスタンス作成時にしか動いてくれないんです。
つまりrestartでは実行されない。
わたしはrestartでchefを実行したかったのでしばし悩みました。
(ベストプラクティスかは分かりませんが、インスタンス立ち上げ直すよりお金かからないので)
そこで、思いついたのがこんなん。
User_data
#!/bin/bash
# インスタンス作成時のみ実行するもの
yum install git
yum install "chefのrpm"
git clone https://cookbookのレポジトリ
cat <<EOF >> /etc/rc.local
# インスタンス起動時/再起動時に実行するもの
cookbookをgit pullとかberksとかchef-soloとか(雑
EOF
気になるのはインスタンス作成時の実行順ですが、
- User dataに書いたスクリプト
- /etc/rc.local
なのでご安心を。
User dataの実行logは、
/var/log/cloud-init-output.log
chefじゃなくても何か活用できそう