Обзор гостевого агента QEMU
Гостевой агент QEMU — это демон (qemu-guest-agent.service), работающий внутри виртуальной машины. Он используется для помощи гипервизору в управлении гостевой виртуальной машиной. QEMU предоставляет канал данных (канал) для хоста и виртуальной машины. Двумя концами этого канала являются последовательный порт, видимый на виртуальной машине, и файл сокета unix, видимый на хосте. Связь qga между хостом и виртуальной машиной расширяет возможности управления виртуальной машиной, например, получение IP-адреса виртуальной машины на хосте.
Libvrit предоставляет специализированный API virDomainQemuAgentCommand (соответствующий команде virsh qemu-agent-command) для взаимодействия с qemu-guest-agent. Кроме того, встроенный API libvirt также может поддерживать qga, например перезагрузку, завершение работы и т. д.
1. Отредактируйте виртуальную машину.
virsh edit vm01
2. Добавьте канал в XML-файл виртуальной машины на хост-компьютере.
<channel type='unix'>
<source mode='bind' path='/var/lib/libvirt/qemu/org.qemu.guest_agent.0'/>
<target type='virtio' name='org.qemu.guest_agent.0'/>
</channel>
3. Запустите виртуальную машину.
virsh start vm01
4. Установите qemu-guest-agent на виртуальную машину Linux.
yum install qemu-guest-agent
setenforce 0
systemctl restart qemu-guest-agent.service
5. Тестирование на хост-компьютере
virsh qemu-agent-command vm01 '{"execute":"guest-info"}'
virsh qemu-agent-command vm01 '{"execute":"guest-network-get-interfaces"}'
virsh qemu-agent-command vm01 '{"execute":"guest-ping"}'
virsh reboot --mode agent vm01
virsh shutdown --mode agent vm01
Загрузка ISO-образа Virtio-Win для Windows
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/
Загрузка установочного пакета Windows qemu-ga
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-qemu-ga/
qemu-guest-agent меняет пароль пользователя виртуальной машины
1.guest-set-user-password
(1) Установите программу qemu-ga-x86_64.msi на виртуальную машину Windows.
(2) Пароль команды qemu-agent должен быть в формате кодировки base64.
[root@kvm-node1 ~]# python
Python 2.7.5 (default, Oct 14 2020, 14:45:30)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import base64
>>> print base64.b64encode('password')
cGFzc3dvcmQ=
(3) Выключите виртуальную машину.
virsh destroy win10
(4) Измените XML-файл win10 и добавьте следующую конфигурацию.
<channel type='unix'>
<source mode='bind' path='/var/lib/libvirt/qemu/org.qemu.guest_agent.0'/>
<target type='virtio' name='org.qemu.guest_agent.0'/>
</channel>
(5) Запустите виртуальную машину.
virsh start win10
(6) команда qemu-agent-command Guest-set-user-password для изменения пароля
virsh qemu-agent-command win10 \
'{"execute":"guest-set-user-password","arguments":{"username":"admin","password":"cGFzc3dvcmQ=","crypted":false}}' {"return":{}}
2. virsh set-user-password
изменение пароля пользователя virsh
virsh set-user-password --domain 6 --user root --password password
Password set successfully for root in 6
Команды поддержки гостевого агента QEMU