背景:
Openstack 的命令行工具中有 修改用户密码的命令。但是如果不做任何修改(配置)的话,无法正常工作。为了让其能够正常工作。我们需要做如下步骤。
大前提 libvirt >=1.2.6在nova can_set_password 函数判断了支持该功能的版本号。
- 首先添加镜像(以ubuntu16.04LTS 为例)。并且给镜像添加两个属性:
# openstackimage create --file ubuntu-16.04-server-cloudimg-amd64-disk1.img --disk-format qcow2 --propertyhw_qemu_guest_agent=yes --public Ubuntu-amd64-16.04LTS
# openstack image set --propertyos_admin_user=ubuntu Ubuntu-amd64-16.04LTS
Note: 其中,hw_qemu_guest_agent=yes 表明 image支持qemu guest agent,即可以支持该agent对应的相应操作。下文会提到如何修改ubuntu原生的qcow2 image安装qemu guest agent。 另外一个参数: 是指定 镜像的admin用户名:比如ubunt默认的是ubuntu,CentOS默认的是centos。如果不在镜像中配置该属性,linux会用root、win会有adminxxx.这个在nova的代码中有体现,回头会写一篇相关的源码分析文章。
当image中添加了hw_qemu_guest_agent=yes.之后,nova在创建使用该image的vm的时候就会在xml文件中多出一个设备,如下:
<devices>
<disk type="file"device="disk">
<driver name="qemu"type="qcow2" cache="none"/>
<sourcefile="/opt/stack/data/nova/instances/be0a2055-3212-421f-b911-59d9d6dd76f8/disk"/>
<target bus="virtio"dev="vda"/>
</disk>
<interfa