openstack中的SSH密钥注入

openstack中的SSH密钥注入,openstack,cloud-init,Openstack,Cloud Init,在openstack中创建vm期间,可以指定密钥对名称,以便将指定的公钥注入新创建的vm 我想知道在机器的哪个状态下,钥匙完全注入?如果机器处于激活状态,是否保证钥匙注射完成 详细信息: 我对密钥对有一个有限的配额,我想在将每个密钥对注入目标机器后立即从openstack中删除它们。我只能访问openstack ReST API,不能访问目标vm 更新 查看nova实例表,我可以看到“key name”和“key data”也存在于其中。我认为键被复制到此表中,然后原始键不再被引用。因此,删除密

在openstack中创建vm期间,可以指定密钥对名称,以便将指定的公钥注入新创建的vm

我想知道在机器的哪个状态下,钥匙完全注入?如果机器处于激活状态,是否保证钥匙注射完成

详细信息: 我对密钥对有一个有限的配额,我想在将每个密钥对注入目标机器后立即从openstack中删除它们。我只能访问openstack ReST API,不能访问目标vm

更新
查看nova实例表,我可以看到“key name”和“key data”也存在于其中。我认为键被复制到此表中,然后原始键不再被引用。因此,删除密钥不会导致任何问题。我错了吗

您可以做的是尝试ssh连接,一旦成功,继续删除密钥对

要直接回答您的问题,可以通过cloud init添加密钥。您可以在/var/log/cloud-init.log中对ssh进行grep,以查看它确切发生的时间。(它发生在cloud init过程的很早阶段)

我不认为有任何API方法可以计算出密钥注入的确切时间。处于活动状态的机器并不能保证密钥注入的cloudinit部分已经完成(尽管出于实际目的,它确实发生得很早)

您可以尝试通过nova控制台日志进行检查。尽管控制台日志的输出具有有限的缓冲区,因此它可能会超出键添加部分,因此您可能无法在控制台日志中看到它


因此,我认为通过实际的ssh连接进行检查是唯一可靠的方法。

如问题中所述,ssh到目标vm不是一个选项。我测试了一些带有两个后续ReST调用的示例图像,第一个用于创建vm,然后立即第二个用于删除密钥对,在所有测试案例中,密钥都被注入vm,但我没有找到任何文档来保证所有图像的行为都是相同的。密钥注入是cloud init的一部分,而不是openstack的一部分。但我认为您可以安全地假设,一旦vm运行,它就已经获得了密钥。仅供参考——如果出现非相关故障(如果元数据失败),您的vm可能最终没有密钥