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

Openstack 如何在不重新启动的情况下重新运行cloud init,openstack,cloud-init,Openstack,Cloud Init,我正在使用openstack使用“nova boot”命令创建VM。我的映像已启用cloud init。我传递了一个--user数据脚本,它是一种bash shell格式,用于cloud init在VM启动时运行。所有这些都成功地实现了。 现在,我的用例是重新运行cloudinit以执行相同的用户数据脚本,而无需重新启动VM。我看到了/usr/bin/cloud init选项,它们确实谈到了运行特定的模块,但是没有任何东西能够让它执行相同的用户数据脚本。如何做到这一点?任何帮助都将不胜感激 更新

我正在使用openstack使用“nova boot”命令创建VM。我的映像已启用cloud init。我传递了一个--user数据脚本,它是一种bash shell格式,用于cloud init在VM启动时运行。所有这些都成功地实现了。
现在,我的用例是重新运行cloudinit以执行相同的用户数据脚本,而无需重新启动VM。我看到了/usr/bin/cloud init选项,它们确实谈到了运行特定的模块,但是没有任何东西能够让它执行相同的用户数据脚本。如何做到这一点?任何帮助都将不胜感激

更新:在最新版本上:

sudo cloud-init clean
然后使用init指令重新运行它:

sudo cloud-init init
sudo cloud-init init

要运行cloudinit的cloud config部分的packages模块,可以运行

# cloud-init-cfg all config
# cloud-init-cfg all final
要运行cloudinit的cloud config部分的runcmd模块,可以运行

# cloud-init-cfg all config
# cloud-init-cfg all final

既然搜索结果中不断出现这种情况,那么对我有用的是:

  • 删除
    /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\u scripts\u user


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

    sudo cloud-init clean
    
    然后使用
    init
    指令重新运行它:

    sudo cloud-init init
    
    sudo cloud-init init
    

    注意:ssh主机密钥之类的东西可能会被重新生成。

    CentOS 7.3.1611,cloud init 0.7.5,我在/var/lib/cloud/instances/I-xxxxxxxx/scripts@kadrachId中没有任何内容。您是否将
    I-xxxxxxxxx
    替换为相应的文件夹?它应该是您正在运行此操作的实例的标识符(我从来没有在其中看到过多个文件夹)。是的,我已经通过缩小范围解决了问题,但是cloud init日志太简单了,很好,我也没有任何内容
    /var/lib/cloud/instances/I-xxxxxxxx/scripts
    。我得到了正确的实例,但是所有的用户数据(我在OpenStack中创建VM时输入的)都在
    cloud config.txt
    user data.txt
    中。当我按照说明操作时,#3不起作用,可能是因为
    /scripts
    文件夹中没有任何内容?有什么想法吗@kadrach@artemj必须增加精度。如果您想运行模块
    cc\u scripts\u user
    ,请删除带有
    rm/var/lib/cloud/instance/sem/config\u cc\u scripts\u user
    CentOS 7.3.1611,cloud init 0.7.5的相应信号量,我在文件系统@jrwrenLikewise上没有cloud init cfg:在Ubuntu 18.04上不存在谢谢。我一直在寻找一种方法来强制cloud init在下一次启动时完全运行
    cloudinitclean
    是我一直在寻找的。Everywhere建议删除/var/lib/cloud下的文件,这不会重置SSH密钥(可能还有其他内容)。
    start
    似乎不是当前版本的有效参数这是否回答了您的问题?