Комментарии 30
с графическим инструментомЧасть про ServiceNow пропущена, у вас там используется встроенный Service Catalog, или что-то кастомное? Заказчик принципиально требует работать только через ServiceNow? Иначе часто удобнее работать через какой-нибудь портал самообслуживания именно для server/service provisioning'га.
А может вы репозиторий публичный откроете со своими наработками?
PS: хостнейм машины в инфраструктуре заказчика из текста уберите.
И отключаемся:
Disconnect-VIServer * -Force -Confirm:$false
Странно, а для чего? После ведь создание виртуальной машины продолжаем через PowerCLI.
Адрес можно взять проще:
$vm_ip_address = (Get-VMGuest -VM $Name).ExtensionData.IpAddress
Интересная статья. Спасибо!
А сами виртуальные машины на чем разворачиваются? В тексте упоминалась VMware, на ней? Или что-то ещё: Hyper-V или типа того?
Ещё было бы полезно узнать немного о бизнес-задачах Заказчика, это во многом объяснило бы, почему вы реализовали схему именно так. Уверен. можно это сделать не засвечивая конф. информации)
Этот инструмент особенно удобен Заказчику, когда нужно создать ряд симметричных машины, например: для фермы терминальных серверов с SAP, Navision, etc., кластера принт-серверов.
Этот инструмент удобен для всякого рода Disaster ситуаций-мы сможем сбилдить новую машину в короткие сроки, тот-же принт-сервер воссоздастся со всеми принтерами и драйверами. Доходило до смешного, что нам было быстрее сбилдить новую машину, чем пытаться доконфигурить старую.
Этот инструмент удобен для создания SCCM/SCOM кластеров с SQL Server.
IPAM позволяет рулить всеми IP все сети заказчика и даже DMZ машины имеют свою А-запись, что удобно.
C DSC SQL Server настраивается ровно так, как нужно по Дизайну, со всеми скедул тасками, выключенным sa и прочее. DSC вообще много чего позволяет делать. А json лишь удобный формат хранения таких конфигурация-более читаемый.
IF ($Datastore1.FreeSpaceGB -le "200"){
Write-Host -foreground red "STOP: Not enough datastore capacity for DISK" $vdisk.Id
Break
}
IF ($VMHost.MemoryUsageGB -le "20"){
Write-Host -foreground red "STOP: No enough ESXi host capacity"
Break
}
а не как $Configuration.VM.RAM и т.д.а вот это, наверное, вы так с кодировкой боретесь или зачем?
$Configuration=(Get-Content -Raw $File | Out-String | ConvertFrom-Json)
Данно выражение работает:
PS C:\Program Files\WindowsPowerShell\Scripts> $Datastore.FreeSpaceGB
1265.4
PS C:\Program Files\WindowsPowerShell\Scripts> $Datastore.FreeSpaceGB -le 1600
True
PS C:\Program Files\WindowsPowerShell\Scripts> $Datastore.FreeSpaceGB -le 1200
False
PS C:\Program Files\WindowsPowerShell\Scripts> $Datastore.FreeSpaceGB -le "1600"
True
PS C:\Program Files\WindowsPowerShell\Scripts> $Datastore.FreeSpaceGB -le "1200"
False
$VMHost.MemoryUsageGB -это память на ESXi хосте. У нас есть условие, что у ESXi хоста должно быть не менее 20Gb памяти до размещения машины. Понятно, что машина с 32Gb Ram туда «не влезет», но машина с 32Gb это также довольно редкое явление и требующее повышенного внимания.
Ваше замечание верно. Я обновлю код.
По пайплайну содержимое файла сразу попадает к ConvertFrom-Json и получаем PowerShell объект $Configuration. Возможно как-то можно это и улучшить, но данная строка отлично работает и пока никаких проблем.
А про пайплайн я имел ввиду, почему не просто
$Configuration = Get-Content $File | ConvertFrom-Json
Так исторически сложилось, как я понимаю.Ну и максимальные/минимальные значения из массива объектов получать через «Measure-Object -Maximum -Minimum» раза в три быстрее и, главное, нагляднее.
Особенно он пригодится, если размеры необходимого дискового пространства тоже считать, а не «200» брать :)
$Configuration = Get-Content $File | ConvertFrom-Json
так тоже работает.
Measure-Object — это не самый популярный командлет, поэтому его и не использовали. Почти во всех статьях -le -eq etc и в большинстве случаев этого достаточно и многие сходу поймут что с чем сравнивается. Попробуем использовать Ваше предложение
$VMTemplate = Get-Template -Name 'Win2016_Std_x64_Template'
У вас же машинки по идее 2012 тоже бывают…а за идею установки PS через "DISM /online" — большое спрасибо. а то через schatasks/psexec вечно раздражало.
Я так понимаю, что это всё возможно только для vSphere, а в «десктопных» вариациях VmWare и VirtualBox подобного не сделать, верно?
Disk 0 (C:\) имеет фиксированный размер
A почему объём то в кавычках, то без?
В образе сохранен локальный администратор с известным нам паролемУ меня для вас плохая новость…
P.S. Клиентам этих товарищей: ну вы поняли, да?
Нашлась "ошибка", для других дисков определен int тип данных. Я исправлю.
Локальными админами в доменной среде управляет LAPS, а в dmz-dsc выставляет пароль. Вклинится в процесс staging весьма сложно.
VMware имеет свою защиту, образ не так-то и просто получить.
Потом, что даст этот пароль если на развернутых машинах этот пароль другой?
Помимо доступа к самому прообразу, прямой или опосредованный доступ возможен к файлу, в котором хранится хэш на «живой» VM
Доступ к VMware темплейту? Если кто-то сможет скопировать его и запустить то у нас и так — большие проблемы.
Расскажите подробнее за какой хэш вы говорите.
В ос даже в безопасном режиме надо "зайти".
В частности у нас была ситуация когда был один локальный админ который имел флаги password expired и user cannot change password и машина потеряла domain trust. Чтобы восстановить доступ пришлось грузиться с диска, цеплять реестр и сбрасывать пароль. Но для этого нужен доступ к VMware консоли или к irmc. Не выцепить этот хэш без доступа к консоли машины.
Пароль можно узнать в своей ВМ, а получить доступ к чужой, однако если они не совпадают, почему в тексте статьи ставится акцент на его знании? И что значит «позже»?
Пару слов о машине. Это подготовленный образ виртуальный машины, который был финализирован sysprep и сконвертирован в template в нашем vSphere. В образе сохранен локальный администратор с известным нам паролем, эта учетная запись «не слетает» после sysprep, что позволит нам получить доступ к каждой машине из этого темплейта, а позже мы сможем заменить этот пароль в целях безопасности.
Как автоматизировать создание виртуальных машин? Рассказываем подробно