У меня для боевых проектов и тестовых проектов используются физические сервера где в роли гипервизора виртуальных машин установлена связка Debian 10 + Proxmox, и обязательно для развернутых, разворачиваемых виртуальный машин я устанавливаю компоненты Guest Agent которые обеспечивают выполнение команд на VM и обмен информацией между VM и хостом Proxmox.

Подключаемся по SSH к примеру, с хоста Debian 10 + Proxmox 6.4-13 (у меня на тестовом сервере такая версия) к развернутой виртуальной машины с осью Ubuntu 22.04 Server для установки QEMU Guest Agent:

ekzorchik@srv-us2204a:~$ sudo rm -Rf /var/lib/apt/lists
ekzorchik@srv-us2204a:~$ sudo apt-get update
ekzorchik@srv-us2204a:~$ dpkg -l | grep qemu-guest-agent
ekzorchik@srv-us2204a:~$ apt-cache show qemu-guest-agent | grep Version
Version: 1:6.2+dfsg-2ubuntu6.14
Version: 1:6.2+dfsg-2ubuntu6.11
Version: 1:6.2+dfsg-2ubuntu6
ekzorchik@srv-us2204a:~$ sudo apt-get install -y qemu-guest-agent
ekzorchik@srv-us2204a:~$ dpkg -l | grep qemu-guest-agent
ii  qemu-guest-agent                      1:6.2+dfsg-2ubuntu6.14                  amd64        Guest-side qemu-system agent
ekzorchik@srv-us2204a:~$

Чтобы агент заработал можно либо отправить систему в перезагрузку, либо если нужно начать с ней работать прямо сейчас, то вручную запустить сервис qemu-guest-agent:

ekzorchik@srv-us2204a:~$ systemctl status qemu-guest-agent
○ qemu-guest-agent.service - QEMU Guest Agent
     Loaded: loaded (/lib/systemd/system/qemu-guest-agent.service; static)
     Active: inactive (dead)
ekzorchik@srv-us2204a:~$ sudo systemctl enable qemu-guest-agent
Synchronizing state of qemu-guest-agent.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable qemu-guest-agent
The unit files have no installation config (WantedBy=, RequiredBy=, Also=,
Alias= settings in the [Install] section, and DefaultInstance= for template
units). This means they are not meant to be enabled using systemctl.

Possible reasons for having this kind of units are:
• A unit may be statically enabled by being symlinked from another unit's
  .wants/ or .requires/ directory.
• A unit's purpose may be to act as a helper for some other unit which has
  a requirement dependency on it.
• A unit may be started when needed via activation (socket, path, timer,
  D-Bus, udev, scripted systemctl call, ...).
• In case of template units, the unit is meant to be enabled with some
  instance name specified.
ekzorchik@srv-us2204a:~$ sudo systemctl start qemu-guest-agent
ekzorchik@srv-us2204a:~$ systemctl status qemu-guest-agent
● qemu-guest-agent.service - QEMU Guest Agent
     Loaded: loaded (/lib/systemd/system/qemu-guest-agent.service; static)
     Active: active (running) since Tue 2023-10-03 08:44:56 MSK; 2s ago
   Main PID: 48242 (qemu-ga)
      Tasks: 2 (limit: 4571)
     Memory: 380.0K
        CPU: 4ms
     CGroup: /system.slice/qemu-guest-agent.service
             └─48242 /usr/sbin/qemu-ga

Oct 03 08:44:56 srv-us2204a systemd[1]: Started QEMU Guest Agent.
ekzorchik@srv-us2204a:~$

После чего если обратиться к URL адресу хоста: https://IP&DNS:8006 - user&pass - (Server View) Datacenter - srv-proxmox – зайти в виртуальную машину (к примеру у меня VM ID: 406 (srv-us2204b) - Summary, то в поле IPs я благодаря агенту увижу IP адрес виртуальной машины:

QEMU-GUEST-AGENT установлен на Ubuntu 22.04 Server

Т.е. когда в системе установлен агент

https://IP&DNS:8006 - user&pass - (Server View) Datacenter - srv-proxmox - VM ID 406 - Options -

QEMU Guest Agent: Enabled

и запущен можно с хостовой системы запрашивать информацию по работающей виртуальной машине:

ekzorchik@srv-proxmox:~$ sudo qm guest cmd 406 ls
400 Parameter verification failed.
command: value 'ls' does not have a value in the enumeration 'fsfreeze-freeze, fsfreeze-status, fsfreeze-thaw, fstrim, get-fsinfo, get-host-name, get-memory-block-info, get-memory-blocks, get-osinfo, get-time, get-timezone, get-users, get-vcpus, info, network-get-interfaces, ping, shutdown, suspend-disk, suspend-hybrid, suspend-ram'
qm guest cmd <vmid> <command>
ekzorchik@srv-proxmox:~$ sudo qm guest cmd 406 get-osinfo
{
   "id" : "ubuntu",
   "kernel-release" : "5.15.0-70-generic",
   "kernel-version" : "#77-Ubuntu SMP Tue Mar 21 14:02:37 UTC 2023",
   "machine" : "x86_64",
   "name" : "Ubuntu",
   "pretty-name" : "Ubuntu 22.04.3 LTS",
   "version" : "22.04.3 LTS (Jammy Jellyfish)",
   "version-id" : "22.04"
}
ekzorchik@srv-proxmox:~$

Узнать информацию через QEMU Guest Agent с хоста можно и так, к примеру, IP-Аddress:

Синтаксис: qm guest cmd vmid network-get-interfaces

ekzorchik@srv-proxmox:~$ sudo qm guest cmd 406 network-get-interfaces | grep ip-address
      "ip-addresses" : [
            "ip-address" : "127.0.0.1",
            "ip-address-type" : "ipv4",
            "ip-address" : "::1",
            "ip-address-type" : "ipv6",
      "ip-addresses" : [
            "ip-address" : "172.33.33.132",
            "ip-address-type" : "ipv4",
            "ip-address" : "fe80::c066:5aff:fe09:4924",
            "ip-address-type" : "ipv6",
ekzorchik@srv-proxmox:~$

а вот когда QEMU Guest Agent не установлен или не запущен получение информации с виртуальной машины становится не возможным:

ekzorchik@srv-proxmox:~$ sudo qm guest cmd 406 get-osinfo
QEMU guest agent is not running
ekzorchik@srv-proxmox:~$

Итого, если вы используете виртуализацию, то обязательно нужно в развернутые/разворачиваемые системы устанавливать QEMU Guest Agent, даже с хоста для VM отправить через WEB интерфейс команду на выключение станет возможным, и не нужно будет заходить внутрь системе и делать shutdown.

Я к примеру, подключаюсь через OpenVPN к домашней инфраструктуре и с телефона через приложение Proxmox (1.0.0-beta13 (343) A Proxmox VE client) включаю или выключаю системы и все благодаря установленным агента на местах.

Итого: Я составил себе пошаговую заметку как устанавливать QEMU Guest Agent, как его вручную запустить не перезагружаю систему.

На заметку: Вообще лучше сделать Playbook и уже после разворачивания виртуальной машины производить установку приложение и последующий их запуск или же в момент, когда система разворачивается по сети применяется настроечный скрипт.

На этом пока все, с уважением автор блога Олло Александр aka ekzorchik.