Amazon-Ec2
如何讓 EC2 使用者數據腳本在啟動時再次執行?
在 cloud-init 在 EC2 實例的第一次啟動時執行使用者數據腳本後,可能會寫入一個狀態文件,以便 cloud-init 在後續重啟時不會再次執行該腳本。在某些情況下,我想刪除此狀態文件,以便再次執行使用者數據腳本。它在哪裡?
rm /var/lib/cloud/instances/*/sem/config_scripts_user
確認工作:
- CentOS 7.4
- Ubuntu 14.04
- Ubuntu 16.04
為了完整起見,如果您有需要跟踪此 AMI 的事實/可能性的情況
$$ had a parent AMI that … $$他們都執行了
cloud-init
使用者數據,你只能刪除目前的信號量。rm /var/lib/cloud/instance/sem/config_scripts_user
您還可以將使用者數據配置為在每次啟動時重新執行,而不是刪除狀態文件。您必須
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 腳本。