实例的密码修改方式
- 创建MV时修改密码
- 运行中的MV修改密码
创建MV时修改密码
基于cloud-init实现配置的传递给MV
configguration:可以实现初始化密码和安装软件等等,MV端通过cloud-init传入
- cloud-init有固定的语法的,但是要可以使用shell实现
#cloud-config
chpasswd:
list: |
root:123456
ubuntu:123456
expire: false
ssh_pwauth: true
#正规写法是这个
参考:https://cloudinit.readthedocs.io/en/latest/index.html
运行中的MV修改密码
依赖于kvm的qemu-guest-agent.service插件使用对虚拟机的命令操作
- image模板需要安装qemu-guest-agent
- image模板需要增加metadata信息,hw_qemu_guest_agent开启agent和os_admin_user用户名
- 命令:glance image-update idxxxxx --property hw_qemu_guest_agent=yes
- glance image-update idxxxxx --property os_admin_user=huaplus
后续创建的MV是可以实现密码密码修改的,但是由于之前的创建的MV就无法实现了,因为qemu-guest-agent服务起不来(网上看给实例元数据添加hw_qemu_guest_agent=yes,但是测试无效)
- nova meta idxxxxx set hw_qemu_guest_agent=yes
KVM原理
QEMU Guest Agent是运行在虚拟机内部的一个守护程序(qemu-guest-agent.service),用它来辅助Hypervisor实现对Guest的管理
- channel:mv的数据通道串口,对应宿主机上的unix socket文件进行通信
- domain xml下需要添加如下数据通道配置
<channel type='unix'>
<source mode='bind' path='/var/lib/libvirt/qemu/f16x86_64.agent'/>
<target type='virtio' name='org.qemu.guest_agent.0'/>
</channel>
#这里target的name要使用org.qemu.guest_agent.0
- 镜像需要安装qemu-guest-agent和开机启动
命令测试:virsh qemu-agent-command instance-00000130 --cmd ‘{“execute”:“guest-info”}’