qemu-guest-agent修改Windows使用者的密碼

NO IMAGE

在OpenStack中,使用qemu guest agent為Windows虛擬機器的使用者修改密碼。

配置Glance image

為Windows image指定後設資料 hw_qemu_guest_agent=yes。

# openstack image set --property hw_qemu_guest_agent=yes <image-id>

建立雲主機

然後用上面的image建立並啟動一個雲主機。

雲主機啟動之後,檢視對應的qemu-kvm命令列引數,已經包含 org.qemu.guest_agent。

在雲主機中安裝guest agent

例如,下載二進位制安裝包qemu-ga-x64.msi
,然後在guest中安裝。guest就是上面提到的雲主機。

安裝之後,在“服務”中檢視,有一個QEMU Guest Agent服務,已經啟動,狀態正常。

測試guest agent 命令

在guest所在的宿主機,執行virsh,找到guest。

[[email protected] ~]# virsh list
Id    名稱                         狀態
----------------------------------------------------
2     instance-00000103              running
16    instance-00000115              running
19    instance-00000118              running

例如,是instance-00000118。

嘗試執行 guest-ping 測試。

[[email protected] ~]# virsh qemu-agent-command instance-00000118 '{"execute":"guest-ping"}'
{"return":{}}

顯示執行成功。

修改guest使用者密碼

有三種方法修改guest使用者密碼。三種方法實質上都利用了guest agent。

1. qemu agent命令 guest-set-user-password

[[email protected] ~]# python
Python 2.7.5 (default, Nov 20 2015, 02:00:19) 
>>> import base64
>>> print base64.b64encode('passw0rd')
cGFzc3cwcmQ=

guest agent接受的密碼必須是base64編碼格式。

[[email protected] ~]# virsh qemu-agent-command instance-00000118 \
'{"execute":"guest-set-user-password","arguments":{"username":"admin","password":"cGFzc3cwcmQ=","crypted":false}}'
{"return":{}}

使用qemu agent命令guest-set-user-password修改密碼。之後嘗試登入Windows虛擬機器,發現密碼已修改成功,新密碼為“passw0rd”。

2. virsh set-user-password

也可以用virsh set-user-password直接修改。

[[email protected] ~]# virsh set-user-password --domain 19 --user admin --password passw0rd
Password set successfully for admin in 19

3. openstack server set –root-password

只能修改guest的管理員密碼。

[[email protected] ~(keystone_admin)]#  openstack server set --root-password 0387568b-203a-4231-9798-e3d6c32efc16
New password: (輸入新密碼)
Retype new password: (再次輸入新密碼)
[[email protected] ~(keystone_admin)]# 

該命令的成功依賴幾個條件:
1. libvirt版本不低於1.2.16。
2. 映象image後設資料已經設定hw_qemu_guest_agent為yes,並且guest agent服務正在雲主機中執行。
3. 映象image後設資料設定了os_admin_user。例如,”admin”。如果未設定,則nova可能把一個windows guest的管理員誤認為是root。

Nova API對guest agent的支援情況

Nova API當前對guest agent的操作只支援Xen Driver。

參考 https://developer.openstack.org/api-ref/compute/#guest-agents-os-agents

-END-