Я работаю над сценарием Powershell, который автоматизирует настройку виртуальной машины Azure, добавление ее в мой домен Active Directory и настройку ряда других параметров.
Идея состоит в том, чтобы иметь возможность запускать и отключать виртуальные машины по мере необходимости без какого-либо ручного взаимодействия (включая отсутствие необходимости входить в систему с помощью RDP).
Вот команда Powershell, которую я использую для создания виртуальной машины. Это отлично работает:
$vm = New-AzVM `
-ResourceGroupName $resourceGroup `
-Location $LocationName `
-Name $VMName `
-Credential $Credential `
-VirtualNetworkName $NetworkName `
-SubnetName $SubnetName `
-PublicIpAddressName $VMName `
-SecurityGroupName "name_of_existing_nsg" `
-OpenPorts 80,135,3389 `
-Image "MicrosoftWindowsServer:WindowsServer:2019-Datacenter-smalldisk:latest" `
-Size $VMSize `
-DefaultProfile $context
Я добавляю виртуальную машину в существующую сеть, подсеть и группу безопасности сети, которая позволит практически любой внутренний обмен данными.
Сценарий запускается на виртуальной машине в той же подсети.
Однако, как только я создал виртуальную машину, я хочу добавить ее в свой домен. Я безуспешно пробовал следующие шаги:
Add-Computer
не работает, потому что я не могу подключиться к требуемым портам RPC на брандмауэре Windows виртуальной машины. Правила NSG подходят, но я не знаю, как создать виртуальную машину с этими портами, открытыми в брандмауэре Windows. Использование локального IP-адреса вместо DNS-имени не помогает. Add-Computer `
-DomainName "fully-qualified-domain" `
-Credential $domainCredential `
-LocalCredential $Credential `
-ComputerName $nic.IpConfigurations[0].PrivateIpAddress `
-Server "dc01.fully-qualified-domain" `
-Restart `
-Force
Add-Computer : Cannot establish the WMI connection to the computer '10.1.2.3' with the following error message: The
RPC server is unavailable. (Exception from HRESULT: 0x800706BA).
At line:1 char:1
+ Add-Computer `
+ ~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (10.1.2.3:String) [Add-Computer], InvalidOperationException
+ FullyQualifiedErrorId : AddComputerException,Microsoft.PowerShell.Commands.AddComputerCommand
Мне не очень нравится создавать собственный образ VHD. Я бы предпочел начать со стандартного шаблона Microsoft, если это возможно.
Оказывается, есть расширение сценария, которое может получить сценарий из хранилища больших двоичных объектов и запустить его на виртуальной машине. Сохраните этот сценарий в хранилище BLOB-объектов:
Import-Module Microsoft.PowerShell.Management
# Add the computer to the domain
# Domain account that will add the VM to the domain:
$domainUser = "some-automation-account@fully-qualified-domain"
$domainUserSecurePassword = ConvertTo-SecureString "password" -AsPlainText -Force
$domainCredential = New-Object `
System.Management.Automation.PSCredential ($domainUser, $domainUserSecurePassword);
Add-Computer `
-DomainName "fully-qualified-domain" `
-Credential $domainCredential `
-ComputerName (Get-ComputerInfo).CsName `
-Server "dc01.fully-qualified-domain" `
-Restart `
-Force
... и запустите сценарий на виртуальной машине с помощью следующей команды Powershell:
Set-AzVMCustomScriptExtension `
-Name "CustomScriptExtension" `
-ResourceGroupName $resourceGroup `
-VMName $VMName `
-Location $LocationName `
-StorageAccountName $scriptStorageAccount `
-StorageAccountKey $scriptStorageKey `
-ContainerName "powershell-scripts" `
-FileName "setup-vm.ps1" `
-Run "setup-vm.ps1"
Более подробный пример который я использовал в качестве шаблона, чтобы заставить его работать.
Служба автоматизации Azure DSC воплощает в жизнь все эти мечты. У меня есть базовая конфигурация, которая, вероятно, поможет, если вам нужна копия?