centos8 cloud-init无法正确定义云主机hostname

项目场景:

使用centos8制作openstack虚拟机镜像,使用中发现由此镜像建立的云主机的hostname是host-ip的格式,而不是创建云主机时定义的实例名称。


问题描述:

检查cloud-int的日志/var/log/cloud-init.log

cloud-init.log:2238:2021-12-07 07:25:37,286 - url_helper.py[DEBUG]: [0/1] open 'http://169.254.169.254/openstack' with {'url': 'http://169.254.169.254/openstack', 'allow_redirects': True, 'method': 'GET', 'timeout': 10.0, 'headers': {'User-Agent': 'Cloud-Init/20.3-10.el8_4.5'}} configuration
cloud-init.log:2239:2021-12-07 07:25:37,288 - url_helper.py[DEBUG]: Calling 'http://169.254.169.254/openstack' failed [0/-1s]: request error [Failed to parse: http://169.254.169.254/openstack]

发现cloud-init 21.4版本请求的元数据的地址是http://169.254.169.254/openstack
但是实际请求元数据服务器实际应该是下面的这个地址
centos7操作系统的cloud-init 19.4版本的http://169.254.169.254/2009-04-04/meta-data/

# curl http://169.254.169.254/2009-04-04/meta-data/
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
hostname
instance-action
instance-id
instance-type
local-hostname
local-ipv4
placement/
public-hostname
public-ipv4
reservation-id

原因分析:

centos8中使用python3,应该是做了较大的更新,所以和centos7中的请求存在了较大差异
cloud-init 21 21版本rpm
cloud-init 19 19版本rpm


解决方案:

暂时不管了,短期使用host-ip的格式也可以


版权声明:本文为baidu_35848778原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。