Масово внедряване на виртуални машини с помощта на SCVMM2008R2 SP1

Както знаете, VMM има възможност за масово внедряване на виртуални машини. За целта се използват така наречените шаблони. Структурно шаблонът се състои от изображение на виртуален твърд диск (и), настройки на виртуален хардуер - брой процесори, памет, мрежови адаптери и др. и настройки на OS за гости: име на компютър, продуктов ключ, локална администраторска парола и др. VHD файловете с изображения се съхраняват в споделени папки на библиотеки (Library Share), по подразбиране - на самия VMM сървър, а всички настройки - в базата данни MS SQL, използвана за работа на VMM.

И така, първата стъпка е да създадете шаблон (или шаблони - ако има няколко). За целта се създава виртуална машина, на нея се инсталира операционна система, друг софтуер (ако е необходимо) и с помощта на съветника за нов шаблон се преобразува в шаблон. По време на процеса на преобразуване гост OS се обработва с помощта на sysprep, след което VHD файлът се копира в Library Share и самата виртуална машина се изтрива.

След създаването на шаблона, внедряването на виртуални машини ще се извърши на 2 етапа:

  1. Действителното създаване на виртуални машини
  2. Влизане в домейна - дистанционно, чрез помощната програма psexec

Разгръщане

Така че създадохме шаблон. В процеса на създаване на шаблон беше необходимо да се определят настройките - както на хардуера, така и на гост OS. По някаква причина, която все още не разбирам, Microsoft реши да не добавя възможността за задаване на статични мрежови настройки към този съветник. В този случай можете да зададете въвеждането на домейна. Нека се опитаме да създадем виртуална машина от шаблон.

За съжаление няма да можем да въведем нашите виртуални машини в домейна чрез съветник - защото преди това е необходимо да регистрираме мрежови настройки.

внедряване

Как да го направим? Единственият начин, който успях да намеря, е да използвам секциятаGuiRunOnce.

Веднага, докато не продължим: също е невъзможно да зададете паролата на локалния администратор в съветника. Ако я зададете, след зареждане на гост ОС, ще трябва да въведете тази парола, за да влезете в системата. Ако не зададете парола тук, системата ще влезе автоматично и секцията GuiRunOnce ще работи правилно. Трябва обаче да се зададе парола. Първо, за целите на сигурността, и второ, командата psexec няма да работи без парола. Така че оставете паролата празна, тя ще бъде зададена от командата net user в GuiRunOnce.

Добавих следните команди:

netsh интерфейс ipv4 зададе адрес "Local Area Connection" static 172.16.0.10 255.255.0.0 172.16.0.254

netsh интерфейс ipv4 добави dnsserver "Local Area Connection" 172.16.0.1

netsh firewall set opmode mode=disable

администратор на нетния потребител P@ssw0rd

Обяснения: първата и втората команда задават мрежовите настройки: IP 172.16.0.10, Маска 255.255.0.0, Шлюз 172.16.0.254, DNS 172.16.0.1. Третата команда изключва защитната стена на Windows (необходима е за правилната обработка на psexec - вижте по-долу), истинските джедаи могат да зададат съответните правила, вместо да изключват защитната стена. Четвъртата команда задава паролата за локалния администраторски акаунт.

Преди да щракнете върху Готово, не забравяйте да поставите отметка в квадратчето Включване на виртуалната машина след създаване, така че виртуалната машина да стартира автоматично веднага след създаването.

Въвеждане на домейн

netdom join %computername% /d:test.local /ud:test\administrator /pd:P@ssw0rd /reb:15

Тъй като ще имаме много виртуални машини, няма да отидем до всяка от тях и да изпълним командата. За автоматизация използваме отличната помощна програма psexec от Марк Болгарсинович. В нашия случай командата ще изглежда така:

psexec\\172.16.0.10 –u администратор –p P@ssw0rd netdom join %computername% /d:test.local /ud:test\administrator /pd:P@ssw0rd /reb:15

За съжаление тази команда ще вземе стойността на променливата %computername% не от виртуалната машина, а от операционната система, където е изпълнена тази команда. За да работи командата правилно, ще направим следното:

  1. Създайте *.cmd файл
  2. Поставяме командата за присъединяване към netdom в него ... (по-нататък)
  3. Използвайки pscexec с ключа -c, ние изпълняваме този партиден файл на целевата виртуална машина:

psexec\\172.16.0.10–c –u администратор –pP@ssw0rdaddtodomain.cmd

Автоматизация

Тъй като, както вече споменахме, ще имаме много виртуални машини, трябва да автоматизираме процеса. Най-лесният начин да направите това е да използвате Power Shell. За да работят правилно скриптовете, е необходимо на компютъра да е инсталирана конзолата за управление на SCVMM и в конзолата на Power Shell да са заредени съответните разширения.

Първо трябва да подготвите списък с виртуални машини, които ще внедрим. Най-лесният начин да направите това е в Excel и да запишете резултатите във формат CSV. Резултатът трябва да е нещо като:

Vmname,IP,Mask,Gateway,DNS Alpha,172.16.0.10,255.255.0.0,172.16.0.254,172.16.0.1 Браво,172.16.0.11,255.255.0.0,172.16.0.254,172.1 6.0.1 Чарли,172.16.0.12,255.255.0.0,172.16.0.254,172.16.0.1 Делта,172.16.0.13,255.255.0.0,172.16.0.254,172.16.0.1 Фокстрот,17 2.16.0.15,255.255.0.0,172.16.0.254,172.16.0.1

Сега можете да напишете скрипт, по-специално в PowerShell, който ще създава виртуални машини от шаблон с параметри, взети от списъка. Моят скрипт е такъв:

$VMS = Импортиране-CSV c:\temp\vm.csv

$Template = Get-Template -VMMServer локален хост където $VMHost = Get-VMHost -VMMServer локален хост където $HardwareProfile = Get-HardwareProfile -VMMServer локален хост където

$VMS Foreach-Object

< $VMName=$_.Vmname $IP=$_.IP $Mask=$_.Mask $Gateway=$_.Gateway $DNS=$_.DNS

New-VM -Template $Template -Name $VMName -VMHost $VMHost -Path "c:\VM" -Owner "TEST\administrator" -HardwareProfile $HardwareProfile -ComputerName $VMName -TimeZone 170 -GuiRunOnceCommands "netsh интерфейс ipv4 зададен адрес ""Local Area Connection"" static $IP $Mask $ Gateway", "netsh интерфейс ipv4 добави dnsserver ""Local Area Connection"" $DNS", "netsh firewall set opmode mode=disable", "net user administrator P@ssw0rd" -RunAsSystem -StartAction TurnOnVMIfRunningWhenVSStopped -DelayStart 0 -StopAction ShutdownGuestOS -StartVM -JobGroup 63e01 329-c734-4c1b-a796-1ed955bda1eb -Изпълни асинхронно >

Сега можете да запуснете нашия скрипт и да идете да курите (пиете кафе, чай, пиво и т.н.) – процесът ще продължи достатъчно дълго, особено когато виртуалките са много.

След това, както всички виртуалки ще бъдат създадени и пуснати – трябва да „пройдете“ по него с помощта на psexec и да въведете в домейн. За това създаваме още един скрипт на Power Shell.

Предполага се, че файлът domain.cmd у нас вече е създаден и се намира в този каталог, който и скриптът.

$VMS = Import-CSV c:\temp\vm.csv

$VMS Foreach-Object < $IP=$_.IP .\psexec.exe \\$IP -c -u администратор -p P@ssw0rd domain.cmd >

След отработката на този скрипт всички наши виртуални машини от списъка ще бъдат въведени в домейн. Поздравляю, вие изпълнихте този квест!

P.S. Зная, че в скриптовете можете да добавите още много неща – запис вlog, например, или във втория скрипт, направете без CMD-shnik и вземете името на компютъра от CSV и вероятно много повече - въпреки това задавам посоката къде да копая. Ако някой е полезен в работата - ще се радвам. Коментарите, разбира се, са добре дошли.

  • Категория: System Center, Виртуализация, Без категория, Ново
  • Автор: Александър Косивченко
  • Дата: Пт >

Най-близък списък със задачи: 1) Прикачете запис към регистрационния файл - необходимо е само за втория скрипт, всички задания вече са видими в първия скрипт във VMM конзолата 2) В първия скрипт добавете полето за име на хост, за да вземете името на хоста от CSV Какво друго мога да добавя?

Например, добавете изброители към отделен текстов файл. Когато създавате виртуална машина, нейното име се взема от, да речем, фиксиран префикс „VM“ и числител от файла „1“, след създаването числителят се променя на „2“, тогава можете да избегнете попълването на имената на виртуалните машини, когато скриптът се рестартира.

Защо - преброители, отделни файлове? Струва ми се, че най-лесният начин е да създадете CSV в Excel и да го използвате за създаване на виртуални машини. Както и да е, това решение е по-универсално. Мисля, че да. (C)

Unattended файл ви позволява да задавате статики. Просто методът не е напълно сигурен.

Позволява го, но трябва ли да генерира сто XML псевдонима, по един за всяка виртуална машина?

Когато става въпрос за стотици виртуални машини, използването на статика изглежда като самобичуване)))

@8 или параноя за сигурност &#128521;

И все пак, въпреки цялата глупост - трябва да работите с него &#128577;

Веднъж имахме голям клиент от правителството и направихме сървърна стая за него за някакво ужасно секретно оборудване. И така, цялата електроника, която поставихме там - климатици, съвпадащ модул докъм пожароизвестители и детектори за дим - те бяха изпратени в някаква организация, където бяха демонтирани, фотографирани на рентгенови лъчи и проверени за липса на „бъгове“. Те обаче се съгласиха със загубата на гаранцията. Това е!

  • Андрей Шимкин
  • 24 април 2012 г

Не знам за други, докато четях статията, веднага имах желание да напиша израза „netsh интерфейс ipv4 зададе адрес „„Local Area Connection““ static $IP $Mask $Gateway“, „netsh interface ipv4 add dnsserver „„Local Area Connection““ $DNS“, „netsh firewall set opmode mode=disable“, „net user administrator P@ssw0rd“ в променлива и едва след това да го заредите в cmdlet.

Можете ли да ми кажете как да стартирам такъв скрипт дистанционно? на отдалечен сървър, SCVMM е инсталиран на сървъра желателно е да стартирате този скрипт от под php

Мисля, че трябва да погледнете към Портала за самообслужване на SCVMM.

SCVMM и порталът за самообслужване са конфигурирани и работят за него, но имам нужда скриптът да се изпълнява на SCVMM сървъра при събитие и с параметри от таксуването ... таксуването се изпълнява на linux PHP

SCVMM и порталът за самообслужване са конфигурирани и работят за него, но ми трябва скриптът да се изпълнява на SCVMM сървъра при събитие и с параметри от таксуването... таксуването се изпълнява на Linux PHP