Cloud-initがEC2インスタンスの最初の起動時に ser data script を実行した後、cloud-initがその後の再起動時に再度スクリプトを実行しないように、おそらく状態ファイルが書き込まれます。ユーザーデータスクリプトが再度実行されるように、この状態ファイルを削除したい場合があります。それはどこにある?
rm /var/lib/cloud/instances/*/sem/config_scripts_user
作業中の確認済み:
完全を期すために、このAMI [親AMIがあった...]とそのすべてが実行されたという事実/可能性を追跡したい場合は、cloud-init
ユーザーデータ。現在のセマフォのみを削除できます。
rm /var/lib/cloud/instance/sem/config_scripts_user
状態ファイルを削除する代わりに、起動ごとに再実行するようにユーザーデータを構成することもできます。 userdataスクリプトでcloud_final_modules
を使用してuserdataスクリプトを再実行する必要があります。そのためには、userdataに複数のファイルを含めるようにuderdataをカスタマイズする必要があります。 userdataファイルの例は次のようになります。
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [scripts-user, always]
--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"
#!/bin/bash
/bin/echo "Hello World" >> /tmp/userdata-test.txt
--//
これにより、すべての起動プロセスの最後のステップでuserdataスクリプトが実行されます。ここでは、実行される単一行bin/echo "Hello World" >> /tmp/userdata-test.txt
を、マシンを起動するたびに実行する必要があるシェルスクリプトに置き換えます。
スクリプトを/etc/rc.localに置くと、再起動するたびにスクリプトが実行されます。