![](/img/trans.png)
[英]Can I run a cloud-init environment without using openstack or EC2?
[英]How to re-run cloud-init without reboot
我正在使用 openstack 使用“nova boot”命令創建 VM。 我的圖像啟用了 cloud-init。 我傳遞了一個 --user-data 腳本,它是 bash shell 格式,以便 cloud-init 在 VM 啟動期間運行。 這一切都順利發生。 現在我的用例是重新運行 cloud-init 以執行相同的用戶數據腳本,而無需重新啟動 VM。 我看到了 /usr/bin/cloud-init 選項,它們確實在談論運行特定模塊,但沒有什么能夠讓它執行相同的用戶數據腳本。 如何實現? 任何幫助,將不勝感激。
為了重置 cloud-init,您需要執行rm -rf /var/lib/cloud/instances
。
然后重新運行cloud-init start
,它將再次運行完整的啟動腳本過程。
命令已更新,因此要重新運行,您需要clean
現有配置:
sudo cloud-init clean
然后使用init
指令重新運行它:
sudo cloud-init init
當心:ssh 主機密鑰之類的東西可能會重新生成。
由於這不斷出現在搜索結果中,對我有用的是:
刪除/var/lib/cloud/instances/i-xxxxxxx/sem
信號量。 如果這些文件存在,則 Cloud-init 將不會重新運行。
編輯/var/lib/cloud/instances/i-xxxxxxxx/scripts/part-001
。 這是您的用戶數據腳本。
僅執行 cloud-init 的用戶腳本模塊。 這不會重新下載用戶數據,而是執行步驟 2 中已下載(現在已修改)的腳本。
sudo /usr/bin/cloud-init single -n cc_scripts_user
鑒於這篇文章在 6 個月前被積極觸及,我想在這里提供來自 cloud-init upstream 的更完整的答案。
最初的問題:“如何在以后使用 cloud-init 再次重新運行用戶數據腳本” 通常,用戶腳本僅由配置模塊 config-user-scripts 每個實例運行一次。 如果元數據中的 instance-id 沒有改變,它就不會重新運行。
可以使用以下命令行繞過每個實例的信號量,方法是告訴它運行用戶腳本模塊而不考慮實例 ID:
sudo cloud-init single --name scripts-user --frequency always
根據另一個建議在不重新啟動系統的情況下重新運行所有 cloud-init。 這不是推薦的方法,因為 cloud-init 的某些部分在 systemd 生成器時間范圍內運行以檢測新的數據源類型。 也就是說,以下命令將允許您在不重新啟動系統的情況下完成此操作。
cloud-init 支持一個clean
子命令來刪除所有信號量文件並允許 cloud-init 再次重新運行所有配置模塊。 請注意,這將意味着重新生成 SSH 主機密鑰並重寫 ssh 配置文件,因此它可能會影響您返回虛擬機的能力。
要清除所有信號量,以便 cloud-init 模塊將在下次啟動時全部重新運行:
sudo cloud-init clean --logs
由於 systemd 服務依賴性,cloud-init 通常按順序運行多個引導階段。 如果你想在不重啟的情況下重復該過程,你可以運行以下 4 個命令:
檢測本地數據源(雲平台):
sudo cloud-init init --local
檢測任何需要網絡的數據源並運行 /etc/cloud/cloud.cfg 中定義的“cloud_init_modules”:
sudo cloud-init init
運行 /etc/cloud/cloud.cfg 中定義的所有 cloud_config_modules:
sudo cloud-init modules --mode=config
運行 /etc/cloud/cloud.cfg 中定義的所有 cloud_final_modules:
sudo cloud-init modules --mode=final
要運行 cloud-init 的 cloud-config 部分的包模塊,您可以運行
# cloud-init-cfg all config
要運行 cloud-init 的 cloud-config 部分的 runcmd 模塊,您可以運行
# cloud-init-cfg all final
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.