我使用openstack使用'nova boot'命令创建VM。我的图像启用了cloud-init。我传递了一个--user-data脚本,这是一个bash shell格式,用于在VM启动期间运行cloud-init。这一切都成功了。 现在我的用例是重新运行cloud-init来执行相同的用户数据脚本,而无需重新启动VM。我看到/ usr / bin / cloud-init选项,他们确实讨论了运行特定模块,但没有任何东西可以让它执行相同的用户数据脚本。怎么能实现这一目标?任何帮助,将不胜感激。
答案 0 :(得分:20)
要重置cloud-init,您需要执行rm -rf /var/lib/cloud/instances
。
然后重新运行cloud-init start
,它将再次运行完整的启动脚本进程。
答案 1 :(得分:9)
由于这会不断出现在搜索结果中,对我有用:
/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
答案 2 :(得分:2)
命令已更新,所以要重新运行,您需要clean
现有配置:
sudo cloud-init clean
然后使用init
指令重新运行它:
sudo cloud-init init
注意:ssh主机密钥之类的东西可能会重新生成。
答案 3 :(得分:1)
要运行cloud-init的cloud-config部分的packages模块,您可以运行
# cloud-init-cfg all config
要运行cloud-init的cloud-config部分的runcmd模块,您可以运行
# cloud-init-cfg all final