OpenStack修改虚拟机密码方法

Openstack L 版本新加入的功能,直接使用 “nova set-password”. 适用条件:

  1. ≥ OpenStack L 版本;
  2. 宿主机libvirt版本1.2.16+;
  3. 虚拟机镜像安装 qemu-guest-agent 2.3+ 版本;
  4. image属性必须添加hw_qemu_guest_agent=yes;1)

本人亲测,CentOS7.5上搭建的OpenStack Queens,ubuntu 16.04可以,14.04不可以(qga版本2.0),CentOS7可以修改成功,不过官网提供的cloud版本镜像大都没有安装 qemu-guest-agent,或者版本太低,需要自己安装下.

windows的镜像相对比较麻烦点,宿主机装的virtio-win,通过文件挂载的方式给guest安装对应驱动和QGA,其实不用安装也可以,实现最终都是guest安装virtio-serial驱动,然后安装quemu-guest-agent就可以了.

参考此处修改image镜像:

  • 不同系统类型需要指明
    • ubuntu: 默认admin用户=ubuntu
    • centos: 默认admin用户=root
  • 如果不指定上述的ubuntu/root用户,可以额外设置os_admin_user;

该种方式需要虚拟机镜像安装cloud-init,将重置密码脚本注入到虚拟机中。

nova boot –image=image-id –nic net-id=net-id –flavor=flavor-id –user-data=cloud-config.txt instance-name

其中cloud-config.txt的内容如下:

#cloud-config
password: 123456
chpasswd: {
  list: |
    user1:123456
    user2:123456
expire: False }
ssh_pwauth: True

修改镜像默认用户的密码为123123:

#cloud-config
password: 123123
chpasswd: { expire: False }
ssh_pwauth: True

编辑/etc/nova/nova.conf,配置如下参数:

inject_password=true

编辑/etc/openstack-dashboard/local_settings,修改如下配置参数:

OPENSTACK_HYPERVISOR_FEATURES = {
      'can_set_password': True,
}

# 新版openstack中dashboard界面已经修改,无法看到上述设置虚拟机密码栏目,需要切换到老版界面
LAUNCH_INSTANCE_LEGACY_ENABLED = True
LAUNCH_INSTANCE_NG_ENABLED = True

进入dashboard界面,点击启动实例,在“access & secure”菜单里.


1)
该flag会指示OpenStack在创建虚拟机时,添加org.qemu.guest_agent.0的serial设备,这是HOST与虚拟机之前通信的基础.
  • virtualization/openstack/修改实例密码.txt
  • 最后更改: 2019/04/16 18:31
  • (外部编辑)