我们提供安全,免费的手游软件下载!
在我的 OpenStack 集群上迁移了一批老旧的镜像(从其他三方云平台过来的)发现这批镜像在使用 ConfigDrive 的方式注入配置初始化时无法对非首张网卡镜像初始化(后经过测试非 ConfigDrive 的数据源也不行)。
首先检查 cloud-init 是否是正常工作的
实例化镜像查看 cloud-init 服务, 以及相关日志。
服务均正常启用。
再查看 Cloud-init 的初始化日志
可以看到有类似读取到数据源并实例化的日志。基本上可以可以排除 cloud-init 运行不正常的情况。
只能细化cloud-init初始化的流程。
关于cloud-init 运行阶段的讲述推荐这篇文章,我此处不多赘述。
https://www.cnblogs.com/frankming/p/16281447.html
此处给出快速重重跑初始化的脚本
很遗憾,在重跑初始化流程中未看出端疑,对比可以初始化多张网卡的日志(CentOS7系统上),总感觉 CentOS6 在网卡配置阶段无任务操作。于是拖下了 Cloud-init 的源码码进行静态审计+Print大发。
源码路径:
可以看到在挂载 /dev/sr0 设备后,cloud-init 0.7.5 版本使用的是 2012-08-10 数据源
手动挂载并查看
好哇,根本没有network_data.json这种东西。看相关网络配置的初始化,验证网络初始逻辑只给ubuntu做了适配。得出结果,Cloud-init 0.7.5 版本过低,centos7支持差导致。
解决方案大致有两种:
1. 升级 Cloud-init
2. 手工实现 Cloud-init 网络初始化部分的逻辑
升级的话首选需要升级Python版本,本人未采用升级的方案,所以不多赘述,但是是一定可行的,推荐手动升级Python 并源码安装 Cloud-init。
推荐像本人一样参考高版本的 cloud-init 驱动实现逻辑手工用 go 或者 C 语言这种重新写一个补丁,经测试可行。由于这个组件是为公司开发的,不方便开源,但是欢迎交流。
相关资讯
热门资讯