创建 VM 并将 VM 关联到现有虚拟网络

Create VM and associate the VM to existing virtual network

我创建了虚拟网络,我想将新的 VM 部署到这个虚拟网络。网络

我尝试使用此命令创建虚拟机:

az vm create --resource-group myGroup --name VMTestNet1 --location eastus --image eastus1Image --vnet-name eastusVNet1 --admin-username azureuser --size Standard_F4S --public-ip-address ""

我遇到了这个异常:

Deployment failed. {
  "error": {
    "code": "InUseSubnetCannotBeDeleted",
    "message": "Subnet GatewaySubnet is in use by /subscriptions/subscriptionId/resourceGroups/Automationsystem/providers/Microsoft.Network/virtualNetworkGateways/eastusGW/ipConfigurations/vnetGatewayConfig0 and cannot be deleted.",
    "details": []
  }
}

如何将我的 VM 部署到现有的虚拟网络?

我已经使用另一个 VM 和非网关子网使用的子网成功重现了该问题。因此,此问题可能是由于另一个实例正在使用子网而您在创建新 VM 时未提供此子网信息引起的。我们可以修复它,在您创建新 VM 时在您的 vnet 中提供您的子网信息。

然后我们可以创建一个新的虚拟机并将其关联到退出的 Vnet,如下所示:

az vm create --resource-group myGroup 
--name VMTestNet1 --location eastus 
--image eastus1Image 
--vnet-name eastusVNet1 
--subnet <your subnet> 
--admin-username <your user name>  --admin-password <your password> 
--size standard_F4S 
--public-ip-address ""

我测试了这些脚本并且它有效。

  1. 将子网信息导出到变量

    export SUBNETID =$(az network vnet subnet show --resource-group *RESOURCEGROUPNAME* -name *SUBNETNAME* --vnet-name *VNETNAME* --query id -o tsv)
    
  2. 使用此命令创建 VM

    az vm create --name *VNNAME* --resource-group *RESOURCEGROUPNAME* --image "RHEL" --size "Standard_B2s" --authentication-type password --admin-password “XXXXXXXX" --admin-username "admin" --public-ip-address "" --location "westus" --nsg "" --subnet $SUBNETID