Vagrant: Коробки Windows 10/11 выключаются примерно через 30 минут.

Вопрос или проблема

Я настраиваю хост с Windows 10/11 с помощью Vagrant+Ubuntu+VirtualBox. Использую эти образы:

StefanScherer/windows_10 
StefanScherer/windows_11 

Код для машины, пример для Windows 10 (то же самое для других):

  config.vm.define "win1" do |win1|
    win1.vm.box = "StefanScherer/windows_10"

    win1.vm.boot_timeout = 120
    win1.vm.hostname = "win1"

    win1.vm.communicator = "winrm"
    win1.vm.network :private_network, ip: "192.168.56.4"
    win1.winrm.port = 55986
    win1.winrm.scheme = "http"
    win1.winrm.ssl_peer_verification = false
    win1.vm.boot_timeout = 300

Эта машина запускается хорошо, но через 30-60 минут переходит в статус “Power Off” (в “vagrant status” и в интерфейсе VBox).

Я пытался отключить режим энергосбережения через ansible provisioner:

    - name: Disable suspend and sleep
      ansible.windows.win_shell: |
        powercfg /x -hibernate-timeout-ac 0
        powercfg /x -hibernate-timeout-dc 0
        powercfg /x -disk-timeout-ac 0
        powercfg /x -disk-timeout-dc 0
        powercfg /x -monitor-timeout-ac 0
        powercfg /x -monitor-timeout-dc 0
        powercfg /x -standby-timeout-ac 0
        powercfg /x -standby-timeout-dc 0

Это работает. Я захожу в управление питанием и вижу там “Никогда”. Но это не помогает.

После включения этих машин я вижу сообщение Windows Update об ожидании и прогрессе и отключаю Windows Updates с помощью PowerShell:

    win1.vm.provision "shell", name: 'disable-updates', inline: <<-SHELL
        $ErrorActionPreference = "SilentlyContinue"
        Set-Location HKLM:/Software/Policies/Microsoft/Windows
        New-Item WindowsUpdate
        New-ItemProperty -Path WindowsUpdate -Name ElevateNonAdmins -Value 1 -Type DWORD
        New-ItemProperty -Path WindowsUpdate -Name WUServer -Value "https://10.100.100.100:8530" -Type String
        New-ItemProperty -Path WindowsUpdate -Name WUStatusServer -Value "https://10.100.100.100:8530" -Type String
        Set-Location WindowsUpdate
        New-Item AU
        New-ItemProperty -Path AU -Name NoAutoUpdate -Value 0 -Type DWORD
        New-ItemProperty -Path AU -Name AUOptions -Value 3 -Type DWORD
        New-ItemProperty -Path AU -Name ScheduledInstallDay -Value 0 -Type DWORD
        New-ItemProperty -Path AU -Name ScheduledInstallTime -Value 15 -Type DWORD
        New-ItemProperty -Path AU -Name AutoInstallMinorUpdates -Value 1 -Type DWORD
        New-ItemProperty -Path AU -Name UseWUServer -Value 1 -Type DWORD
    SHELL

Я знаю, что Windows Update не следует отключать, но я тестирую, как сделать так, чтобы виртуальная машина оставалась включенной без выключения питания.

Это тоже не помогло.

Но если я использую образы с Windows Server, такие как StefanScherer/windows_2019, виртуальная машина работает прекрасно. Много часов, без перехода в режим ожидания, сна или выключения.

В журналах событий я не вижу никаких ошибок или другой информации о выключении питания.

В чем причина такого поведения?

Ответ или решение

Чтобы разобраться, почему виртуальные машины Windows 10/11 выключаются через 30-60 минут при использовании Vagrant, Ubuntu и VirtualBox, необходимо подробно изучить несколько аспектов ваших настроек и конфигураций.

Анализ проблемы

Вы используете Vagrant и изображения Windows 10 и 11 от StefanScherer для создания виртуальных машин на хосте под управлением Ubuntu и VirtualBox. Несмотря на то, что виртуальные серверы с Windows Server работают стабильно, возникает проблема с отключением на клиентских выпусках Windows, таких как Windows 10 и 11.

Шаги для устранения проблемы

  1. Питание и управление питанием:

    • Вы правильно попытались отключить режимы экономии энергии через Ansible. Убедитесь, что эти настройки применились корректно. Проверьте состояние питания непосредственно на виртуальной машине.
  2. Обновления Windows:

    • Хотя вы отключили обновления Windows, следует учесть, что могут возникать временные проблемы, связанные с обновлениями, которые не удается отключить должным образом. Попробуйте использовать команду sconfig для временного отключения обновлений.
  3. Настройки VirtualBox:

    • Проверьте, нет ли настроек оболочки или других параметров, которые могут привести к выключению. Например, убедитесь, что VirtualBox настроен на сохранение, а не на выключение при временной потере соединения.
  4. Журналы событий:

    • Хотя скрипты и не показывают явных ошибок, проверьте другие журналы в Windows, которые могут не выделять ошибки в стандартных системных логах. Это могут быть службы или приложения, которые вызывают критические завершения.
  5. Совместимость и тестирование:

    • Рассмотрите возможность использования других версий Vagrant или VirtualBox. Иногда обновление программного обеспечения решает проблемы несовместимости.
    • Попробуйте поднять тестовую виртуальную машину менее нагруженной версии Windows, например, Windows 10 LTSC, которая имеет менее агрессивную политику обновлений и энергоэффективности.

Заключение

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

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

Капча загружается...