Proxmox не выключается виртуальная машина windows

Обновлено: 04.07.2024

Если вы не слышали про такой проект Proxmox VE, то запомните это название, чтобы вспомнить его, когда вам потребуется удобное и бесплатное решение для внедрения виртуализации. Proxmox VE - это Debian Linux + веб интерфейс, благодаря которым вы получите доступ к мощному функционалу гипервизора KVM, Qemu, контейнерам LXC и СХД Ceph. У Proxmox VE есть развитый API, позволяющий реализовать альтернативный доступ к вашим виртуальным машинам. В данной статье речь пойдёт о консольной утилите pvesh, использующей API и помогающей админу в автоматизации его повседневных задач. Встала задача перезагружать виртуальную машину не собственными командами из планировщиков операционной системы (изнутри виртуальной машины), а снаружи, средствами Proxmox VE посылать сигнал, словно нажата виртуальная кнопка питания, приказывающая виртуальному серверу закругляться.

Хотелось бы создать решение, которое не было бы привязано к текущему расположению виртуальных машин на физических серверах в кластере виртуализации. Мы с коллегами активно используем Живую Миграцию, и сегодня VM1 работает на node2, а завтра её отправят в режиме онлайн на node3.

Данное требование сразу поставило крест на использовании низкоуровневой команды qm, которая требует отдачи ей приказа на той ноде кластера, где в данный момент трудится нужная виртуальная машина. Уже показывал мощь PveSh в примерах, так как он использует API Proxmox VE и позволяет реализовать задуманное.

Прежде чем начать перезагружать сервера, стоит напомнить, что для MS Windows Server неспроста даны ценные советы по их подготовке к работе в виртуализированной среде. При попытке их выключить через веб интерфейс или в консоли, у вас будет выведен запрос, и такое поведение нужно изменить.

К сожалению, нажимая виртуальную кнопку питания, вы выключаете виртуальный сервер, а не перезагружаете. То есть у нас не будет restart в том смысле, что будет shutdown + start. Для работы скрипта требуется лишь наличие jq, которая есть в стандартных репозиториях Debian и Ubuntu, и она облегчает работу с JSON ответами. Работа скрипта не сложна. Вначале получаем по данному нам VMID имя ноды, на которой трудится в данный момент эта виртуальная машина. Делаем shutdown. Далее в вечном цикле опрашиваем статус и, когда он становится stopped, то смело прерываем цикл while, и выходим на финишную прямую, запуская виртуальную машину.

Читайте также: