一、虚拟机初始化密码
方法一:cloud-init 方式
cloud-init 是运行在虚拟机实例里用来初始化实例的一个框架。专为云计算环境中虚拟机、裸金属实例的初始化而开发的一个开源工具,它安装在虚拟机、裸金属镜像中,通过从 nova metadata 服务或 config driver 获取用户注入的元数据,打包成镜像,并挂载在实例的 cdrom 中,通过读取cdrom中相关数据,对虚拟机进行初始化配置。
可以用来设置主机名、密码、SSH key 等。
这里采用 config driver 模式,优势是不依赖网络。
config driver 模式实现过程:instance 镜像中需要安装 cloud-init, config driver 会将 metadata/userdata 封装到一个 iso9660(也支持vfat)的镜像文件中,然后把镜像文件以光驱的形式挂载到虚拟机中,在虚拟机启动时 cloud-init 从挂载的镜像读取数据,完成相关初始化工作。
使用步骤:
Step 1: 虚拟机镜像内安装 cloud-init,上传到 Glance
可下载已安装 Cloud-init 的 GenericCloud 镜像
上传镜像:
glance image-create --name CentOS-7-x86_64-GenericCloud-1907 --disk-format qcow2 --container-format bare --file CentOS-7-x86_64-GenericCloud-1907.qcow2 --is-public True --progress |
Step 2: 计算节点修改配置,libvirt下增加如下配置项
vim /etc/kolla/nova-compute/nova.config [libvirt] force_config_drive=True |
Step 3:Dashboard使用已安装 cloud-init 的镜像新建虚拟机
在定制化脚本中输入
#!/bin/sh passwd root <<EOF xxxxxx xxxxx EOF |
虚拟机创建完后,使用设置的 root/xxxxx可登陆虚拟机
方法二:inject 方式
注意:Inject 方式需要打开旧版Dashboard界面。
Step 1: 计算节点修改配置,libvirt 下增加如下配置项
vim /etc/kolla/nova-compute/nova.config [libvirt] inject_password = true inject_partition = -1 |
Step 2: 修改horizon配置,将 can_set_password 设置为 True,打开旧版本创建虚拟机页面
vim /etc/kolla/horizon/local_settings OPENSTACK_HYPERVISOR_FEATURES = { 'can_set_mount_point': False, 'can_set_password': True, 'requires_keypair': False, 'enable_quotas': True } # 打开旧版本Dashboard创虚拟机界面,同时也可保留新版界面 LAUNCH_INSTANCE_LEGACY_ENABLED = True LAUNCH_INSTANCE_NG_ENABLED = True |
Step 3: 进入旧版创建实例页面,创建虚拟机
设置虚拟机root密码
创建完成后使用设置的root密码可正常登陆
二、libvirt-set-admin-password修改密码
用户忘记虚拟机root密码,通过管理员后台用命令行重置。
Openstack 可直接使用“nova set-password”重置root密码,这是L 版本新加入的功能。
这种方法是通过在虚拟机内部安装qemu-guest-agent来接受相关修改密码的指令,对各个中间件的版本有要求:
libvirt 1.2.16+ 宿主机 python-libvirt 1.2.16+ 宿主机 qemu-guest-agent 2.3+ 虚机内部 |
使用步骤:
Step 1: 虚拟机镜像内安装qemu-guest-agent
可下载已安装qemu-guest-agent的GenericCloud镜像
Step 2: 上传镜像到Glance,镜像设置hw_qemu_guest_agent属性
glance image-create --name CentOS-7-x86_64-GenericCloud-1907 --disk-format qcow2 --container-format bare --file CentOS-7-x86_64-GenericCloud-1907.qcow2 --is-public True --property hw_qemu_guest_agent=yes --progress |
或更新已有镜像属性
glance image-update 53ca6748-cae2-44a7-9dbb-baa310869ef2 --property hw_qemu_guest_agent=yes |
Step 3: 创建虚拟机
nova boot --image=CentOS-7-x86_64-GenericCloud-1907 --nic net-id=19939124-040d-417a-9287-930ddb493268 --flavor m1.small password_init_test-1 |
Step 4: 修改虚拟机root密码
# 两次输入新密码 nova set-password b090b3bf-5cbc-4c5b-85f3-72124d2f7c87 New password: Again: |
用新密码可登陆虚拟机