如何在不重启的情况下重新运行cloud-init

use*_*850 20 openstack cloud-init

我使用openstack使用'nova boot'命令创建VM.我的图像启用了cloud-init.我传递了一个--user-data脚本,这是一个bash shell格式,用于在VM启动期间运行cloud-init.这一切都成功了.现在我的用例是重新运行cloud-init来执行相同的用户数据脚本,而无需重新启动VM.我看到/ usr/bin/cloud-init选项,他们确实讨论了运行特定模块,但没有任何东西可以让它执行相同的用户数据脚本.怎么能实现这一目标?任何帮助,将不胜感激.

小智 23

为了重置cloud-init,您需要执行rm -rf /var/lib/cloud/instances.

然后重新运行cloud-init start它,它将再次运行完整的启动脚本进程.

  • 在当前版本中,“start”似乎不是有效参数 (5认同)

Pie*_*erz 15

命令已更新,因此要重新运行您需要clean删除现有配置:

sudo cloud-init clean
Run Code Online (Sandbox Code Playgroud)

然后使用init指令重新运行它:

sudo cloud-init init
Run Code Online (Sandbox Code Playgroud)

当心:ssh 主机密钥之类的东西可能会重新生成。

  • 谢谢。我一直在寻找一种方法来强制 cloud-init 在下次启动时完全运行。“cloud-init clean”是我一直在寻找的。其他地方都建议删除 /var/lib/cloud 下的文件,这不会重置 SSH 密钥(以及可能的其他一些东西)。 (2认同)

kad*_*ach 10

由于这会不断出现在搜索结果中,对我有用:

  1. 删除中的信号量/var/lib/cloud/instances/i-xxxxxxx/sem.如果存在这些文件,Cloud-init将不会重新运行.
  2. 编辑/var/lib/cloud/instances/i-xxxxxxxx/scripts/part-001.这是您的用户数据脚本.
  3. 执行cloud-init的用户脚本模块.这不会重新下载用户数据,而是执行步骤2中已下载(现在已修改)的脚本.

    sudo /usr/bin/cloud-init single -n cc_scripts_user