我正在使用cloud-init/cloud-config配置OpenStack。 我希望在开始使用之前等到它完全配置完成。
虽然使用一些标记文件或检测cloud-init进程是否仍在运行并不难,但在每个cloud-init脚本中执行这样的操作似乎相当麻烦。 有没有一些推荐的方式? 最好由cloud-init原生支持?
我正在使用cloud-init/cloud-config配置OpenStack。 我希望在开始使用之前等到它完全配置完成。
虽然使用一些标记文件或检测cloud-init进程是否仍在运行并不难,但在每个cloud-init脚本中执行这样的操作似乎相当麻烦。 有没有一些推荐的方式? 最好由cloud-init原生支持?
以下命令可解决问题:
cloud-init status --wait
来自https://ubuntu.com/blog/cloud-init-v-18-2-cli-subcommands:
cloud-init status
提供了简单易读的输出或可编程输出, 用于显示 cloud-init 正在做什么以及它是否已成功完成。 它可以用作机器的健康检查,或者用于脚本中阻止运行, 直到 cloud-init 成功完成。
phone_home:
url: https://example.com/$INSTANCE_ID/
post:
- pub_key_dsa
- instance_id
- fqdn
tries: 10
/run/cloud-init/
(优先于/var/lib/cloud/data/
,因为它保证了描述最后一个初始化过程)。status.json
包含所有init阶段的详细信息,而result.json
表示整个init已经完成。该项目文档建议使用一个Python脚本来检测cloud-init的完成情况。 fin = "/run/cloud-init/result.json"
if os.path.exists(fin):
ret = json.load(open(fin, "r"))
if len(ret['v1']['errors']):
print "Finished with errors:" + "\n".join(ret['v1']['errors'])
else:
print "Finished no errors"
else:
print "Not Finished"
cloud-init status
。更多信息可在此处找到:(https://ubuntu.com/blog/cloud-init-v-18-2-cli-subcommands)。 - Alexander Kucheryukaws ec2 create-tags --resources `ec2metadata --instance-id` --tags Key=BootstrapStatus,Value=complete
newprocess.conf
文件。你能提供文档链接吗?我会查看/var/lib/cloud/data/*.json
。 - Oliver Gondža