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

时间:2014-04-14 16:46:12

标签: openstack cloud-init

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

4 个答案:

答案 0 :(得分:20)

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

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

答案 1 :(得分:9)

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

  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

答案 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