Назад | Перейти на главную страницу

Создать виртуальную машину Azure с открытыми портами брандмауэра Windows?

Я работаю над сценарием 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 `
    -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 воплощает в жизнь все эти мечты. У меня есть базовая конфигурация, которая, вероятно, поможет, если вам нужна копия?