Answers:
rm /var/lib/cloud/instances/*/sem/config_scripts_user
确认从事以下工作:
为了完整起见,如果您想知道该AMI [具有一个父AMI,并且都运行cloud-init
用户数据]的事实/可能性,则只能删除当前信号量。
rm /var/lib/cloud/instance/sem/config_scripts_user
curl
向元数据服务获取当前实例ID,因为/var/lib/cloud/instance
已经是指向当前实例的符号链接/var/lib/cloud/instances
。:-)
您可以将脚本放在/etc/rc.local中,该脚本将在每次重新启动时运行。
/etc/rc.local
与EC2用户数据无关。
您还可以将用户数据配置为在每次引导时重新运行,而不是删除状态文件。您必须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
要执行,请将其替换为每次引导计算机时都需要执行的shell脚本。