在线升级glance镜像技巧
0.背景 我们经常需要更新glance镜像,比如上传的镜像可能有配置问题,或者我们需要对已有的镜像进行软件包升级或者预装一些新的软件包等。当时着手这件事是由于我们对cloud-init进行了大量的patch,需要同步到glance镜像中,如果重新制作镜像然后传输到生产环境再上传,不仅工作非常繁琐,还非常消耗时间,我们希望能够在原来的镜像基础之上直接升级cloud-init。 1.通过快照方式更新镜像 最简单的方式是通过创建一个云主机,然后更新cloud-init后创建快照形成新的镜像(注意删除/var/lib/cloud下的文件,否则cloud-init下次启动时不会重新拉取metadata)。可是我们遇到的问题是,老版本的cloud-init在L版中注入密码和密钥都失败,并且安装的qemu-guest-agent不支持修改密码,因此完全没有办法登录云主机。因此必须另辟蹊径。 2.glance存储后端使用本地文件系统 于是我们想到把镜像挂载到本地文件系统中,然后chroot到镜像文件系统环境中进行升级配置。如果glance镜像使用本地文件系统作为存储后端,镜像格式为raw,挂载镜像就非...