Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Ez a cikk bemutatja, hogyan hozhat létre Azure DevTest Labs virtuális gépet (VM-et) egy tesztkörnyezetben az Azure PowerShell használatával. PowerShell-szkriptekkel automatizálhatja a tesztkörnyezeti virtuális gépek létrehozását.
Előfeltételek
A cikk végrehajtásához a következő előfeltételekre van szüksége:
- Hozzáférés egy tesztkörnyezethez a DevTest Labsban. Hozzon létre egy tesztkörnyezetet, vagy használjon egy meglévő labort.
- Azure PowerShell. Az Azure PowerShelltelepítése, vagy az Azure Cloud Shell használata az Azure Portalon.
PowerShell virtuális gép létrehozási szkriptje
A PowerShell Invoke-AzResourceAction parancsmag meghívja a createEnvironment műveletet a labor erőforrás-azonosítójával és virtuálisgép-paramétereivel. A paraméterek egy kivonattáblában találhatók, amely az összes virtuálisgép-tulajdonságot tartalmazza. A tulajdonságok különbözőek a virtuális gépek minden típusához. A kívánt virtuálisgép-típus tulajdonságainak lekéréséhez tekintse meg a Virtuálisgép-tulajdonságok lekérésecímű témakört.
Ez a példaszkript létrehoz egy Windows Server 2019 Datacenter rendszerű virtuális gépet. A minta tartalmaz egy második adatlemez hozzáadására szolgáló tulajdonságokat is a dataDiskParametersalatt.
[CmdletBinding()]
Param(
[Parameter(Mandatory = $false)] $SubscriptionId,
[Parameter(Mandatory = $true)] $LabResourceGroup,
[Parameter(Mandatory = $true)] $LabName,
[Parameter(Mandatory = $true)] $NewVmName,
[Parameter(Mandatory = $true)] $UserName,
[Parameter(Mandatory = $true)] $Password
)
pushd $PSScriptRoot
try {
if ($SubscriptionId -eq $null) {
$SubscriptionId = (Get-AzContext).Subscription.SubscriptionId
}
$API_VERSION = '2016-05-15'
$lab = Get-AzResource -ResourceId "/subscriptions/$SubscriptionId/resourceGroups/$LabResourceGroup/providers/Microsoft.DevTestLab/labs/$LabName"
if ($lab -eq $null) {
throw "Unable to find lab $LabName resource group $LabResourceGroup in subscription $SubscriptionId."
}
$virtualNetwork = @(Get-AzResource -ResourceType 'Microsoft.DevTestLab/labs/virtualnetworks' -ResourceName $LabName -ResourceGroupName $lab.ResourceGroupName -ApiVersion $API_VERSION)[0]
#The preceding command puts the VM in the first allowed subnet in the first virtual network for the lab.
#If you need to use a specific virtual network, use | to find the network. For example:
#$virtualNetwork = @(Get-AzResource -ResourceType 'Microsoft.DevTestLab/labs/virtualnetworks' -ResourceName $LabName -ResourceGroupName $lab.ResourceGroupName -ApiVersion $API_VERSION) | Where-Object Name -EQ "SpecificVNetName"
$labSubnetName = $virtualNetwork.properties.allowedSubnets[0].labSubnetName
#Prepare all the properties needed for the createEnvironment call.
# The properties are slightly different depending on the type of VM base.
# The virtual network setup might also affect the properties.
$parameters = @{
"name" = $NewVmName;
"location" = $lab.Location;
"properties" = @{
"labVirtualNetworkId" = $virtualNetwork.ResourceId;
"labSubnetName" = $labSubnetName;
"notes" = "Windows Server 2019 Datacenter";
"osType" = "windows"
"expirationDate" = "2022-12-01"
"galleryImageReference" = @{
"offer" = "WindowsServer";
"publisher" = "MicrosoftWindowsServer";
"sku" = "2019-Datacenter";
"osType" = "Windows";
"version" = "latest"
};
"size" = "Standard_DS2_v2";
"userName" = $UserName;
"password" = $Password;
"disallowPublicIpAddress" = $true;
"dataDiskParameters" = @(@{
"attachNewDataDiskOptions" = @{
"diskName" = "adddatadisk"
"diskSizeGiB" = "1023"
"diskType" = "Standard"
}
"hostCaching" = "ReadWrite"
})
}
}
#The following line has the same effect as invoking the
# https://azure.github.io/projects/apis/#!/Labs/Labs_CreateEnvironment REST API
Invoke-AzResourceAction -ResourceId $lab.ResourceId -Action 'createEnvironment' -Parameters $parameters -ApiVersion $API_VERSION -Force -Verbose
}
finally {
popd
}
Mentse az előző szkriptet egy Create-LabVirtualMachine.ps1nevű fájlba. Futtassa a szkriptet az alábbi paranccsal. Adja meg a helykitöltők saját értékeit.
.\Create-LabVirtualMachine.ps1 -ResourceGroupName '<lab resource group name>' -LabName '<lab name>' -userName '<VM administrative username>' -password '<VM admin password>' -VMName '<VM name to create>'
Virtuális gép tulajdonságainak lekérése
Ez a szakasz bemutatja, hogyan szerezheti be a létrehozni kívánt virtuális gép típusának adott tulajdonságait. A tulajdonságokat egy Azure Resource Manager-sablonból (ARM) szerezheti be az Azure Portalon, vagy meghívhatja a DevTest Labs Azure REST API-t.
Virtuálisgép-tulajdonságok lekérése az Azure Portal használatával
Virtuális gép létrehozása az Azure Portalon létrehoz egy Azure Resource Manager-sablont (ARM), amely megjeleníti a virtuális gép tulajdonságait. Miután kiválasztott egy virtuálisgép-bázist, láthatja az ARM-sablont, és anélkül szerezheti be a tulajdonságokat, hogy ténylegesen létrehozná a virtuális gépet. Ez a módszer a legegyszerűbb módja annak, hogy lekérje a JSON virtuális gép leírását, ha még nem rendelkezik ilyen típusú tesztkörnyezeti virtuális géppel.
Az Azure portálÁttekintés lapján válassza a Hozzáadás lehetőséget a felső eszköztáron.
Az Alap oldalon válassza ki a kívánt virtuális gép típusát. A tesztkörnyezet beállításaitól függően a virtuális gép alapja lehet Azure Marketplace-rendszerkép, egyéni rendszerkép, képlet vagy környezet.
A Laboratóriumi erőforrás létrehozása lapon igény szerint adjon hozzá artefaktumokat, és konfigurálja a szükséges beállításokat a Alapbeállítások és Speciális beállítások lapokon.
A Speciális beállítások lapon válassza ARM-sablon megtekintése a lap alján.
Az Azure Resource Manager-sablon lapján tekintse át a JSON-sablont a virtuális gép létrehozásához. A erőforrások szakaszban a virtuális gép tulajdonságai vannak.
Az alábbi
resourcesszakasz például a Windows Server 2022 Datacenter rendszerű virtuális gépek tulajdonságait tartalmazza:"resources": [ { "apiVersion": "2018-10-15-preview", "type": "Microsoft.DevTestLab/labs/virtualmachines", "name": "[variables('vmName')]", "location": "[resourceGroup().location]", "properties": { "labVirtualNetworkId": "[variables('labVirtualNetworkId')]", "notes": "Windows Server 2022 Datacenter: Azure Edition Core", "galleryImageReference": { "offer": "WindowsServer", "publisher": "MicrosoftWindowsServer", "sku": "2022-datacenter-azure-edition-core", "osType": "Windows", "version": "latest" }, "size": "[parameters('size')]", "userName": "[parameters('userName')]", "password": "[parameters('password')]", "isAuthenticationWithSshKey": false, "labSubnetName": "[variables('labSubnetName')]", "disallowPublicIpAddress": true, "storageType": "Standard", "allowClaim": false, "networkInterface": { "sharedPublicIpAddressConfiguration": { "inboundNatRules": [ { "transportProtocol": "tcp", "backendPort": 3389 } ] } } } } ],Másolja és mentse a sablont a későbbi PowerShell-automatizáláshoz, és adja át a tulajdonságokat a PowerShell virtuális gép létrehozási szkriptjének.
Virtuálisgép-tulajdonságok lekérése a DevTest Labs Azure REST API-val
Meghívhatja a DevTest Labs REST API-t is a meglévő tesztkörnyezeti virtuális gépek tulajdonságainak lekéréséhez. Ezekkel a tulajdonságokkal több, azonos típusú tesztkörnyezeti virtuális gépet hozhat létre.
- A Virtuális gépek – lista lapon válassza a Próbálja ki az első kódblokk felett.
- A REST API kipróbálása oldalon:
- A labNameterületen adja meg a laboratórium nevét.
- A labResourceGroupterületen adja meg a tesztkörnyezet erőforráscsoportjának nevét.
- Az subscriptionIdterületen válassza ki a tesztkörnyezet Azure-előfizetését.
- Válassza a Futtatás opciót.
- A Válasz szakaszban a Törzsterületen tekintse meg a laborban található összes meglévő virtuális gép tulajdonságait.
Virtuális gép lejárati dátumának beállítása
A betanítási, bemutató- és próbaverziós forgatókönyvekben elkerülheti a felesleges költségeket, ha egy adott dátumon automatikusan törli a virtuális gépeket. Virtuális gép létrehozásakor beállíthatja a virtuális gép expirationDate tulajdonságát. A cikk korábbi, PowerShell virtuálisgép-létrehozási szkriptje a propertiesalatt állítja be a lejárati dátumot:
"expirationDate": "2022-12-01"
A meglévő virtuális gépek lejárati dátumát a PowerShell használatával is beállíthatja. Az alábbi PowerShell-szkript egy meglévő tesztkörnyezeti virtuális gép lejárati dátumát állítja be, ha még nem rendelkezik lejárati dátummal:
# Enter your own values:
$subscriptionId = '<Lab subscription Id>'
$labResourceGroup = '<Lab resource group>'
$labName = '<Lab name>'
$VmName = '<VM name>'
$expirationDate = '<Expiration date, such as 2022-12-16>'
# Sign in to your Azure account
Select-AzSubscription -SubscriptionId $subscriptionId
$VmResourceId = "subscriptions/$subscriptionId/resourcegroups/$labResourceGroup/providers/microsoft.devtestlab/labs/$labName/virtualmachines/$VmName"
$vm = Get-AzResource -ResourceId $VmResourceId -ExpandProperties
# Get the Vm properties
$VmProperties = $vm.Properties
# Set the expirationDate property
If ($VmProperties.expirationDate -eq $null) {
$VmProperties | Add-Member -MemberType NoteProperty -Name expirationDate -Value $expirationDate -Force
} Else {
$VmProperties.expirationDate = $expirationDate
}
Set-AzResource -ResourceId $VmResourceId -Properties $VmProperties -Force