【问题标题】:Create Azure VM from existing VHD without powershell从现有 VHD 创建 Azure VM,无需 powershell
【发布时间】:2018-05-28 22:12:00
【问题描述】:

至于 28/05/2018 我想知道我们是否可以在不使用 azure powershell 模板的情况下从 VDH 创建 VM。我在网上找到了很多教程,我尝试了一种说法,即通过存储帐户将 vhd 附加到当前 VM。但这不是我想要的,因为 vm 使用预定义的 linux 运行,而不是附加在 VM 中的那个。

【问题讨论】:

    标签: azure azure-vm-templates


    【解决方案1】:
    【解决方案2】:

    您可以尝试使用 Azure 模板。

    azuredeploy.json

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "vmName": {
          "type": "string",
          "metadata": {
            "description": "Name of the VM"
          }
        },
        "osType": {
          "type": "string",
          "allowedValues": [
            "Windows",
            "Linux"
          ],
          "metadata": {
            "description": "Type of OS on the existing vhd"
          }
        },
        "osDiskVhdUri": {
          "type": "string",
          "metadata": {
            "description": "Uri of the existing VHD in ARM standard or premium storage"
          }
        },
        "vmSize": {
          "type": "string",
          "metadata": {
            "description": "Size of the VM"
          }
        },
        "existingVirtualNetworkName": {
          "type": "string",
          "metadata": {
            "description": "Name of the existing VNET"
          }
        },
        "existingVirtualNetworkResourceGroup": {
          "type": "string",
          "metadata": {
            "description": "Name of the existing VNET resource group"
          }
        },
        "subnetName": {
          "type": "string",
          "metadata": {
            "description": "Name of the subnet in the virtual network you want to use"
          }
        },
        "dnsNameForPublicIP": {
          "type": "string",
          "metadata": {
            "description": "Unique DNS Name for the Public IP used to access the Virtual Machine."
          }
        },
        "location": {
          "type": "string",
          "defaultValue": "[resourceGroup().location]",
          "metadata": {
            "description": "Location for all resources."
          }
        }
      },
      "variables": {
        "diagStorageAccountName": "[concat(uniquestring(resourceGroup().id), 'specvm')]",
        "publicIPAddressType": "Dynamic",
        "subnetRef": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('existingVirtualNetworkName'),  parameters('subnetName'))]",
        "nicName": "[parameters('vmName')]",
        "publicIPAddressName": "[parameters('vmName')]"
      },
      "resources": [
        {
          "type": "Microsoft.Storage/storageAccounts",
          "name": "[variables('diagStorageAccountName')]",
          "apiVersion": "2016-01-01",
          "location": "[parameters('location')]",
          "sku": {
            "name": "Standard_GRS"
          },
          "kind": "Storage",
          "properties": {}
        },
        {
          "apiVersion": "2015-06-15",
          "type": "Microsoft.Network/publicIPAddresses",
          "name": "[variables('publicIPAddressName')]",
          "location": "[parameters('location')]",
          "tags": {
            "displayName": "PublicIPAddress"
          },
          "properties": {
            "publicIPAllocationMethod": "[variables('publicIPAddressType')]",
            "dnsSettings": {
              "domainNameLabel": "[parameters('dnsNameForPublicIP')]"
            }
          }
        },
        {
          "apiVersion": "2015-06-15",
          "type": "Microsoft.Network/networkInterfaces",
          "name": "[variables('nicName')]",
          "location": "[parameters('location')]",
          "dependsOn": [
            "[concat('Microsoft.Network/publicIPAddresses/', variables('publicIPAddressName'))]"
          ],
          "tags": {
            "displayName": "NetworkInterface"
          },
          "properties": {
            "ipConfigurations": [
              {
                "name": "ipconfig1",
                "properties": {
                  "privateIPAllocationMethod": "Dynamic",
                  "publicIPAddress": {
                    "id": "[resourceId('Microsoft.Network/publicIPAddresses',variables('publicIPAddressName'))]"
                  },
                  "subnet": {
                    "id": "[variables('subnetRef')]"
                  }
                }
              }
            ]
          }
        },
        {
          "apiVersion": "2015-06-15",
          "type": "Microsoft.Compute/virtualMachines",
          "name": "[parameters('vmName')]",
          "location": "[parameters('location')]",
          "tags": {
            "displayName": "VirtualMachine"
          },
          "dependsOn": [
            "[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
          ],
          "properties": {
            "hardwareProfile": {
              "vmSize": "[parameters('vmSize')]"
            },
            "storageProfile": {
              "osDisk": {
                "name": "[concat(parameters('vmName'))]",
                "osType": "[parameters('osType')]",
                "caching": "ReadWrite",
                "vhd": {
                  "uri": "[parameters('osDiskVhdUri')]"
                },
                "createOption": "Attach"
              }
            },
            "networkProfile": {
              "networkInterfaces": [
                {
                  "id": "[resourceId('Microsoft.Network/networkInterfaces',variables('nicName'))]"
                }
              ]
            },
            "diagnosticsProfile": {
              "bootDiagnostics": {
                "enabled": "true",
                "storageUri": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('diagStorageAccountName')), '2016-01-01').primaryEndpoints.blob)]"
              }
            }
          }
        }
      ]
    }
    

    azuredeploy.parameters.json

    {
        "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "dnsNameForPublicIP": {
                "value": "GEN-UNIQUE"
            },
            "existingVirtualNetworkName": {
                "value": "GET-PREREQ-existingVnetName"
            },
            "existingVirtualNetworkResourceGroup": {
                "value": "GET-PREREQ-existingVnetRG"
            },
            "subnetName": {
                "value": "GET-PREREQ-subnetName"
            },
            "osDiskVhdUri": {
                "value": "GEN-SPECIALIZED-WINVHD-URI"
            },
            "vmName": {
                "value": "GEN-UNIQUE-8"
            },
            "osType": {
                "value": "Windows"
            },
            "vmSize": {
                "value": "Standard_DS1"
            }
        }
    }
    

    更多详情,请参考此article

    此模板从专用 VHD 中创建 VM,并让您将其连接到现有 VNET,该 VNET 可以驻留在另一个资源组中,然后是虚拟机。

    【讨论】:

      猜你喜欢
      • 2017-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-16
      相关资源
      最近更新 更多