Cloud-Init
如何確保 Cloud-Init 只執行一次且只執行一次?
據我所知,
cloud-init
每次配置更改時都會執行。不僅在系統第一次啟動時,而且在每次提供的配置更改時。這有點道理,因為我想很難定義“第一次”(複製的 VM 在被凍結並用作模板之前已經執行,所以它從來都不是第一次)。但是,我不時地——很少,但仍然——發現cloud-init
它們在重新啟動時在已配置的系統上重新執行。
cloud-init
但是,當在完全配置的系統上執行時,某些步驟似乎會搞砸設置。例如,如果它在初始設置後再次執行一次cloud-init
並將某些配置設置為 valueX
,但之後您手動將其覆蓋為Y
,現在cloud-init
重新執行以將其設置回X
. 或者,讓系統重新創建您的 SSH 主機密鑰。因此,我發現手動執行非常有用:
sudo touch /etc/cloud/cloud-init.disabled
…在初始設置之後,以防止它
cloud-init
再次執行。(在某些情況下,cloud-init
真的只用於初始的“複製和設置 IP/主機名”類型的配置。)但是有什麼方法可以自動化嗎?
/etc/cloud/cloud.cfg
就像在下次執行後向禁用自身添加一些參數一樣?
不同
cloud-init
的模組有不同的頻率:once-per-instance
和always
。您可以在Modules 文件Module frequency
中檢查每個模組的屬性。例如,在每次啟動時執行,但僅在第一次啟動時執行。可以在 cloud-config 文件模組列表中覆蓋頻率-和. 範例覆蓋:bootcmd``runcmd``cloud_init_modules``cloud_config_modules``cloud_final_modules
cloud_final_modules: - [scripts-user, always]