Наша взаимовыгодная связь https://banwar.org/
Автоматичне створення віртуальних машин Linux прийде на допомогу як не можна до речі в задачах швидкого розгортання тестової інфраструктури.
У цій статті я хочу поділитися з вами невеликим скриптом на Powershell для створення віртуальної машини. Він особливо сподобається тим, кому вже набридли ці нудні віндового шпалери бездумні кліки Далі-Далі-Далі-Готово при роботі в Візард створення нових ВМ.
Якщо вам цікава тематика Windows Server, рекомендую звернутися до тегу Windows Server на моєму блозі.
Нагадую, що скрипт ви використовуєте на свій страх і ризик без будь-яких гарантій.
скрипт
Завантажити скрипт можна на GitHub - LinuxVMCreate . Запускати його ви можете як через командну консоль, так і через оболонку Powershell ISE.
як запустити
За замовчуванням політика виконання забороняє запуск будь-яких скриптів. Щоб змінити цю поведінку, виконайте команду:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Перед запуском скрипта перевірте коректність конфігурації Hyper-V (а також сам факт установки ролі), адже за замовчуванням будуть використовуватися стандартні параметри.
особливості роботи
Скрипт створює віртуальну машину з ім'ям у форматі testvm20180322-205408, де 20180322-205408 - поточна дата і час. З цього випливає обмеження - більше однієї ВМ в секунду ви створити не зможете.
Виходячи з best practice по віртуалізації Linux на Hyper-V, в скрипті реалізована одна рекомендація щодо розміру блоків:
When creating the VHDX, use 1MB BlockSizeBytes (from the default 32MB) in PowerShell
Ця опція може значно зменшити обсяг динамічних віртуальних дисків.
UPD 07.04.2018:
А ось вам порівняння розмірів двох віртуальних жорстких дисків зі свіжої Debian 9.0:
Перший створений автоматично з опціями за замовчуванням, а другий з 1MB BlockSizeBytes. Різниця майже дворазова! До речі, ОС на цих .vhdx я розкочував за допомогою свого ж preseed-файлу, про який трохи розповідав в статті Нотатки: Автоматична установка Debian . Читайте, користуйтеся!
Однак з її реалізацією виникають деякі проблеми. Справа в тому, що при створенні віртуального диска через візард створення ВМ або зсередини вікна властивостей ВМ на диск автоматично призначаються потрібні дозволи. Але при створенні диска вручну цих дозволів не буде:
На скріншоті зліва присутня загадкова обліковий запис, ім'я якої ні що інше як guid віртуальної машини. Якщо ви спробуєте призначити ці дозволи вручну, то відшукати цю учетку просто так не вийде.
З огляду на всі ці тонкощі, найпростіший варіант перенесення коректних дозволів на потрібний вам диск - це їх копіювання з уже існуючого диска. Саме це реалізовано в сріпте в рядку:
# Copy and set acl for a new disk
Get-Acl -Path ($ NewVHDPath + ".tmp") | Set-Acl -Path $ NewVHDPath
Якщо ви не призначите потрібних дозволів, віртуальна машина не зможе запуститися.
Поради
Стаття best practice по Linux віртуалкою на Hyper-V включає досить багато рекомендацій, розгляньте необхідність їх впровадження для своєї інфраструктури, тестової або робочої.
comments powered by HyperComments