Наконец-то мне удалось автоматизировать наш процесс выпуска, используя Desired State Configuration с методами Azure PowerShell SDK, в частности комбо Publish-AzureVMDscConfiguration -> Set-AzureVMDscExtension -> Update-AzureVM
.
Немного подумав в способ отправки выходных данных сборки куда-либо, доступный для виртуальной машины, я остановился на стратегии добавления отбрасываемых сборок в пакет конфигурации, который загружается в хранилище Azure.
Теперь моя проблема заключается в том, что как только расширение PowerShell DSC в виртуальной машине начинает загружать этот пакет, потребление памяти становится зашкаливающим. Когда я открываю диспетчер задач, я вижу, что недавно созданный процесс PowerShell увеличился с 30 или около того мегабайт до 300, а затем до 1,3 ГБ, полностью разрушая мою виртуальную машину.
Вчера днем я ушел с работы и позволил ему обработать, но когда я сегодня вошел в виртуальную машину, внутренний zip-файл, содержащий выходные данные моей сборки, имел 0 байтов в папке DSCWork. Моя проблема в том, что даже если это сработало в конце, это занимает очень много времени и делает мою виртуальную машину бесполезной... Я даже не могу переключаться между окнами в удаленный доступ, так как машина полностью застряла при 100% использовании ОЗУ.
Почему PowerShell требует так много памяти и времени для загрузки моего пакета конфигурации? Он имеет только 60 МБ в заархивированном виде и примерно 200 МБ в разархивированном виде. Могу ли я что-то сделать, чтобы этого не произошло?
ОБНОВЛЕНИЕ:
Я только что протестировал его, и он, наконец, завершился правильно. Заняло больше часа, но файлы есть... Хотя это неприемлемо.