Запуск команд внутри гостевых ОС в гипервизоре KVM на примере Proxmox

Дата: 18.03.2019 Автор Admin

В VMware, с помощью Powercli, есть возможность запускать команды внутри гостевых ОС с помощью командлета Invoke-VMScript , это очень удобно, ведь с помощью этого механизма можно выполнить необходимые команды на сотне VM, не открывая на них консоль.

Работая с KVM мне захотелось найти аналог данного механизма, чтобы запускать команды из консоли гипервизора порямо на гостевых ОС, по аналогии с VMware.

В данной статье мы рассмотрим как использовать qemu агент для выполнения задуманного.

Для начала установите qemu агент, взять его можно по ссылке

Для установки в Linux используйте слеющие команды:

После установки агента внутри виртуальной машины, нужно активировать его поддержку в настройках VM, вот так активированный агент для VM выглядит в Proxmox:

Если вы используете libvirt, то xml код будет примерно такой:

Теперь включите VM, с помощью команды qm ping, можно убедиться что агент внутри VM функционирует нормально.

Если команда

где 101 — это ID вашей VM, не вернула ничего — значит агент функционирует нормально.

Теперь рассмотрим как запускать команды внутри VM с windows из консоли гипервизора KVM (он же в данном случае Proxmox)

Чтобы подключиться к сессии VM, выполните команду, где 101 — ID вашей VM

Теперь нам нужно передать команду внутрь гостевой ОС, команды передаются в формате JSON.

Для примера отправим команду на перезапуск гостевой ОС

Данная команда перезагрузит вашу VM.

По аналогии можно перезагрузить VM без использования cmd:

или например та же перезагрузка, только с помощью powershell:

Вот так к примеру можно запустить sysprep:

Если вы не хотите подключаться к сессии агента, а просто отправить команду одной строкой — используйте echo и отправляйте команду в socat:

Обратите внимание что слеши и спец символы в JSON экранируются, поэтому, перед тем как отправлять команду гостю — проверьте что синтаксис корректный.

Если не уверены, то всегда можно воспользоваться командой ConvertTo-Json в Powershell, например:

на выходе получите строку, с экранированным выводом:

На этом все.

В следующей статье рассмотрим как можно автоматизировать процесс деплоя и ввода в домен AD, VM на базе KVM.

Удачной настройки!

 

 

 

 


Добавить комментарий

Ваш e-mail не будет опубликован.