Сценарий развертывания Azure PowerShell выполняется крайне медленно и не имеет параметров конфигурации - PullRequest
0 голосов
/ 06 июня 2019

Следующий скрипт работает нормально, я вижу, что он выполняет заданную задачу (развертывание 500 виртуальных машин), но я получаю предупреждение от New-AzVM, в котором говорится, что он использует самую разумную учетную запись хранения, которую он может получить.У меня было много проблем с виртуальными машинами, которые они вращают, и они вращаются очень медленно (со скоростью около 10 в час), и мне было интересно, может ли быть проблема в том, что я не могуназначить учетную запись хранения как часть конфигурации.

Я провел несколько поисков в Google, просматривал документацию Microsoft по этим сценариям и не нашел способа указать желаемую конфигурацию.

Сценарий, который я использую, таков:

$rgn = "VolumetricTest"
$passwd = ConvertTo-SecureString "password" -AsPlainText -Force
$logincred = New-Object System.Management.Automation.PSCredential("xadminx",$passwd)
$vnet = Get-AzVirtualNetwork -Name volumetric-vnet -ResourceGroupName VolumetricTest 
$loc = "East US"
$nsg_rdp_in = New-AzNetworkSecurityRuleConfig -name "RDP_in" -Protocol Tcp -Direction Inbound -Priority 300 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow
$nsg_rdp_out = New-AzNetworkSecurityRuleConfig -name "RDP_out" -Protocol Tcp -Direction Outbound -Priority 301 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow

$suffixes = @()

1..500 | ForEach-Object { $nm = $_.ToString("000"); $suffixes += @("$nm") } 

Foreach ( $suffix in $suffixes) {
    Write-Host $suffix
    $vmname = "SCLD-VT-W$suffix"
    Write-Host $vmname
    $nsg = New-AzNetworkSecurityGroup -Name "nsgW$suffix" -ResourceGroupName VolumetricTest -Location 'East US' -SecurityRules $nsg_rdp_in 
    Write-Host $nsg.Id 
    $net = New-AzNetworkInterfaceIpConfig -name "WNetAddr$suffix" -Subnet $( Get-AzVirtualNetworkSubnetConfig -Name default -VirtualNetwork $vnet ) -Primary
    $nic = New-AzNetworkInterface -Name "WNetif$suffix" -ResourceGroupName VolumetricTest -Location 'East US' -IpConfiguration $net -NetworkSecurityGroupId $nsg.Id 
    Write-Host $nic.Id 
    $vmconfig = New-AzVMConfig -VMName $vmname -VMSize "Standard_B2s" | Set-AzVMOperatingSystem -Windows -ComputerName $vmname -Credential $logincred | Set-AzVMSourceImage -PublisherName "microsoftwindowsdesktop" -Offer "Windows-10" -skus 'rs1-enterprise' -Version latest | Add-AzVMNetworkInterface -Id $nic.Id
    New-AzVM -ResourceGroupName $rgn -Location "East US" -VM $vmconfig
}

(детали заменены, конечно, на заполнитель)

результаты типа:

014
SCLD-VT-W014
/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/VolumetricTest/providers/Microsoft.Network/networkSecurityGroups/nsgW014
/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/VolumetricTest/providers/Microsoft.Network/networkInterfaces/WNetif014
WARNING: Since the VM is created using premium storage or managed disk, existing standard storage account, volumetrictestbootdiag, is used for boot diagnostics.

Этот компьютер был создан примерно за 2 минуты.

Некоторым машинам требуется меньше минуты, чтобы развернуться, а другим - более 10.

Он выбирает нужную учетную запись хранения, которую я хочуиспользуйте, по крайней мере.

1 Ответ

1 голос
/ 06 июня 2019

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

Вы можете использовать Set-AzureRmVMBootDiagnostics , чтобы изменить свойства диагностики загрузки виртуальной машины и указать конфигурацию хранилища.

Set-AzureRmVMBootDiagnostics -VM $VM -Enable -ResourceGroupName "ResourceGroup11" -StorageAccountName "DiagnosticStorage"
...