使用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的格式也可以



