Megosztás a következőn keresztül:


DevTest Labs virtuális gépek létrehozása a Azure PowerShell használatával

Ez a cikk bemutatja, hogyan hozhat létre Azure DevTest Labs virtuális gépet (VM) egy tesztkörnyezetben 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:

PowerShell-alapú virtuálisgép-létrehozási szkript

A PowerShell Invoke-AzResourceAction parancsmagja meghívja a createEnvironment műveletet a tesztkörnyezet erőforrás-azonosítójával és virtuálisgép-paramétereivel. A paraméterek egy kivonattáblában találhatók, amely tartalmazza a virtuális gép összes tulajdonságát. A tulajdonságok különbözőek az egyes virtuálisgép-típusokhoz. A kívánt virtuálisgép-típus tulajdonságainak lekéréséhez lásd: Virtuálisgép-tulajdonságok lekérése.

Ez a példaszkript létrehoz egy Windows Server 2019 Datacenter rendszerű virtuális gépet. A minta egy második adatlemez hozzáadására szolgáló tulajdonságokat is tartalmaz a alatt dataDiskParameters.

[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 a következő paranccsal. Adja meg a helyőrző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álisgép-tulajdonságok lekérése

Ez a szakasz bemutatja, hogyan szerezheti be a létrehozni kívánt virtuális gép típusának tulajdonságait. A tulajdonságokat lekérheti egy Azure Resource Manager-sablonból (ARM) a Azure Portal, vagy meghívhatja a DevTest Labs Azure REST API-t.

Virtuális gép tulajdonságainak lekérése a Azure Portal használatával

Ha létrehoz egy virtuális gépet a Azure Portal létrehoz egy Azure Resource Manager (ARM) sablont, amely megjeleníti a virtuális gép tulajdonságait. Miután kiválasztott egy virtuálisgép-bázist, megtekintheti az ARM-sablont, és anélkül szerezheti be a tulajdonságokat, hogy ténylegesen létrehozták a virtuális gépet. Ez a módszer a legegyszerűbb módja a JSON virtuális gép leírásának lekérésének, ha még nem rendelkezik ilyen típusú tesztkörnyezeti virtuális géppel.

  1. Az Azure Portaltesztkörnyezete Áttekintés lapján válassza a felső eszköztár Hozzáadás elemét.

  2. Az Alap kiválasztása lapon válassza ki a kívánt virtuálisgép-típust. 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.

  3. A Laborerőforrás létrehozása lapon igény szerint vegyen fel összetevőket , és konfigurálja a kívánt egyéb beállításokat az Alapszintű beállítások és a Speciális beállítások lapon.

  4. A Speciális beállítások lapon válassza az ARM-sablon megtekintése lehetőséget a lap alján.

  5. Az Azure Resource Manager sablon megtekintése lapon tekintse át a JSON-sablont a virtuális gép létrehozásához. Az erőforrások szakasz a virtuálisgép-tulajdonságokkal rendelkezik.

    A következő resources szakasz például egy Windows Server 2022 Datacenter rendszerű virtuális gép 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
                                    }
                               ]
                          }
                     }
                }
           }
      ],
    
  6. Másolja ki és mentse a sablont a powershell-automatizáláshoz, majd vigye át a tulajdonságokat a PowerShell-alapú virtuálisgép-létrehozási szkriptbe.

Virtuális gép tulajdonságainak 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.

  1. A Virtual Machines – lista lapon válassza a Kipróbálás lehetőséget az első kódblokk felett.
  2. A REST API Try It (REST API kipróbálása ) oldalán:
    • A labName területen adja meg a tesztkörnyezet nevét.
    • A labResourceGroup területen adja meg a tesztkörnyezeti erőforráscsoport nevét.
    • A subscriptionId területen válassza ki a tesztkörnyezet Azure-előfizetését.
  3. Válassza a Futtatás lehetőséget.
  4. A Törzs szakaszVálasz szakaszában tekintse meg a tesztkörnyezet összes meglévő virtuális gépének 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 szükségtelen költségeket, ha egy adott időpontban automatikusan törli a virtuális gépeket. A virtuális gép expirationDate tulajdonságát a virtuális gép létrehozásakor állíthatja be. A cikk korábbi, PowerShell-alapú virtuálisgép-létrehozási szkriptje a következő lejárati dátumot állítja be:properties

  "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. A következő PowerShell-szkript beállít egy lejárati dátumot egy meglévő tesztkörnyezeti virtuális géphez, 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

Következő lépések

Az.DevTestLabs PowerShell-referencia