一、虛擬機初始化密碼
方法一: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: |
用新密碼可登陸虛擬機