快速入门:创建 Azure 虚拟网络

快速入门:创建 Azure 虚拟网络

创建虚拟网络和虚拟机

本快速入门使用 Azure 资源管理器快速入门模板中的 “虚拟网络中的两个虚拟机” Bicep 模板 来创建虚拟网络、资源子网和虚拟机。 Bicep 模板定义以下 Azure 资源:

Microsoft.Network virtualNetworks:创建 Azure 虚拟网络。

Microsoft.Network virtualNetworks/subnets:为 VM 创建子网。

Microsoft.Compute virtualMachines:创建 VM。

Microsoft.Compute availabilitySets:创建可用性集。

Microsoft.NetworkInterfaces:创建网络接口。

Microsoft.Network loadBalancers:创建内部负载均衡器。

Microsoft.StorageAccounts:创建存储帐户。

查阅 Bicep 文件:

@description('Admin username')

param adminUsername string

@description('Admin password')

@secure()

param adminPassword string

@description('Prefix to use for VM names')

param vmNamePrefix string = 'BackendVM'

@description('Location for all resources.')

param location string = resourceGroup().location

@description('Size of the virtual machines')

param vmSize string = 'Standard_D2s_v3'

var availabilitySetName = 'AvSet'

var storageAccountType = 'Standard_LRS'

var storageAccountName = uniqueString(resourceGroup().id)

var virtualNetworkName = 'vNet'

var subnetName = 'backendSubnet'

var loadBalancerName = 'ilb'

var networkInterfaceName = 'nic'

var subnetRef = resourceId('Microsoft.Network/virtualNetworks/subnets', virtualNetworkName, subnetName)

var numberOfInstances = 2

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {

name: storageAccountName

location: location

sku: {

name: storageAccountType

}

kind: 'StorageV2'

}

resource availabilitySet 'Microsoft.Compute/availabilitySets@2023-09-01' = {

name: availabilitySetName

location: location

sku: {

name: 'Aligned'

}

properties: {

platformUpdateDomainCount: 2

platformFaultDomainCount: 2

}

}

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-09-01' = {

name: virtualNetworkName

location: location

properties: {

addressSpace: {

addressPrefixes: [

'10.0.0.0/16'

]

}

subnets: [

{

name: subnetName

properties: {

addressPrefix: '10.0.2.0/24'

}

}

]

}

}

resource networkInterface 'Microsoft.Network/networkInterfaces@2023-09-01' = [for i in range(0, numberOfInstances): {

name: '${networkInterfaceName}${i}'

location: location

properties: {

ipConfigurations: [

{

name: 'ipconfig1'

properties: {

privateIPAllocationMethod: 'Dynamic'

subnet: {

id: subnetRef

}

loadBalancerBackendAddressPools: [

{

id: resourceId('Microsoft.Network/loadBalancers/backendAddressPools', loadBalancerName, 'BackendPool1')

}

]

}

}

]

}

dependsOn: [

virtualNetwork

loadBalancer

]

}]

resource loadBalancer 'Microsoft.Network/loadBalancers@2023-09-01' = {

name: loadBalancerName

location: location

sku: {

name: 'Standard'

}

properties: {

frontendIPConfigurations: [

{

properties: {

subnet: {

id: subnetRef

}

privateIPAddress: '10.0.2.6'

privateIPAllocationMethod: 'Static'

}

name: 'LoadBalancerFrontend'

}

]

backendAddressPools: [

{

name: 'BackendPool1'

}

]

loadBalancingRules: [

{

properties: {

frontendIPConfiguration: {

id: resourceId('Microsoft.Network/loadBalancers/frontendIpConfigurations', loadBalancerName, 'LoadBalancerFrontend')

}

backendAddressPool: {

id: resourceId('Microsoft.Network/loadBalancers/backendAddressPools', loadBalancerName, 'BackendPool1')

}

probe: {

id: resourceId('Microsoft.Network/loadBalancers/probes', loadBalancerName, 'lbprobe')

}

protocol: 'Tcp'

frontendPort: 80

backendPort: 80

idleTimeoutInMinutes: 15

}

name: 'lbrule'

}

]

probes: [

{

properties: {

protocol: 'Tcp'

port: 80

intervalInSeconds: 15

numberOfProbes: 2

}

name: 'lbprobe'

}

]

}

dependsOn: [

virtualNetwork

]

}

resource vm 'Microsoft.Compute/virtualMachines@2023-09-01' = [for i in range(0, numberOfInstances): {

name: '${vmNamePrefix}${i}'

location: location

properties: {

availabilitySet: {

id: availabilitySet.id

}

hardwareProfile: {

vmSize: vmSize

}

osProfile: {

computerName: '${vmNamePrefix}${i}'

adminUsername: adminUsername

adminPassword: adminPassword

}

storageProfile: {

imageReference: {

publisher: 'MicrosoftWindowsServer'

offer: 'WindowsServer'

sku: '2019-Datacenter'

version: 'latest'

}

osDisk: {

createOption: 'FromImage'

}

}

networkProfile: {

networkInterfaces: [

{

id: networkInterface[i].id

}

]

}

diagnosticsProfile: {

bootDiagnostics: {

enabled: true

storageUri: storageAccount.properties.primaryEndpoints.blob

}

}

}

}]

output location string = location

output name string = loadBalancer.name

output resourceGroupName string = resourceGroup().name

output resourceId string = loadBalancer.id

部署 Bicep 模板

将 Bicep 文件保存到本地计算机作为 main.bicep。

使用 Azure CLI 或 Azure PowerShell 来部署 Bicep 文件:

命令行界面 (CLI)

az group create \

--name TestRG \

--location eastus

az deployment group create \

--resource-group TestRG \

--template-file main.bicep

PowerShell

$rgParams = @{

Name = 'TestRG'

Location = 'eastus'

}

New-AzResourceGroup @rgParams

$deploymentParams = @{

ResourceGroupName = 'TestRG'

TemplateFile = 'main.bicep'

}

New-AzResourceGroupDeployment @deploymentParams

部署完成后,会显示一条指示部署成功的消息。

部署 Azure Bastion

Bastion 使用浏览器通过安全外壳 (SSH) 或远程桌面协议 (RDP),通过使用其专用 IP 地址连接虚拟网络中的虚拟机。 虚拟机不需要公共 IP 地址、客户端软件或特殊配置。 有关 Bastion 的详细信息,请参阅 什么是 Azure Bastion?。

注释

无论出站数据使用情况如何,按小时定价都从部署 Bastion 的时间开始算起。 有关详细信息,请参阅 定价 和 SKU。 如果要将 Bastion 部署为教程或测试的一部分,建议在使用完此资源后将其删除。

使用 Azure 资源管理器快速入门模板中的 Azure Bastion 即服务 Bicep 模板在虚拟网络中部署和配置 Bastion。 该 Bicep 模板定义以下 Azure 资源:

Microsoft.Network virtualNetworks/subnets:创建 AzureBastionSubnet 子网。

Microsoft.Network bastionHosts:创建 Bastion 主机。

Microsoft.Network publicIPAddresses:为 Bastion 主机创建公共 IP 地址。

Microsoft NetworkSecurityGroups:控制网络安全组的设置。

查阅 Bicep 文件:

@description('Name of new or existing vnet to which Azure Bastion should be deployed')

param vnetName string = 'vnet01'

@description('IP prefix for available addresses in vnet address space')

param vnetIpPrefix string = '10.1.0.0/16'

@description('Specify whether to provision new vnet or deploy to existing vnet')

@allowed([

'new'

'existing'

])

param vnetNewOrExisting string = 'new'

@description('Bastion subnet IP prefix MUST be within vnet IP prefix address space')

param bastionSubnetIpPrefix string = '10.1.1.0/26'

@description('Name of Azure Bastion resource')

param bastionHostName string

@description('Azure region for Bastion and virtual network')

param location string = resourceGroup().location

var publicIpAddressName = '${bastionHostName}-pip'

var bastionSubnetName = 'AzureBastionSubnet'

resource publicIp 'Microsoft.Network/publicIPAddresses@2022-01-01' = {

name: publicIpAddressName

location: location

sku: {

name: 'Standard'

}

properties: {

publicIPAllocationMethod: 'Static'

}

}

// if vnetNewOrExisting == 'new', create a new vnet and subnet

resource newVirtualNetwork 'Microsoft.Network/virtualNetworks@2022-01-01' = if (vnetNewOrExisting == 'new') {

name: vnetName

location: location

properties: {

addressSpace: {

addressPrefixes: [

vnetIpPrefix

]

}

subnets: [

{

name: bastionSubnetName

properties: {

addressPrefix: bastionSubnetIpPrefix

}

}

]

}

}

// if vnetNewOrExisting == 'existing', reference an existing vnet and create a new subnet under it

resource existingVirtualNetwork 'Microsoft.Network/virtualNetworks@2022-01-01' existing = if (vnetNewOrExisting == 'existing') {

name: vnetName

}

resource subnet 'Microsoft.Network/virtualNetworks/subnets@2022-01-01' = if (vnetNewOrExisting == 'existing') {

parent: existingVirtualNetwork

name: bastionSubnetName

properties: {

addressPrefix: bastionSubnetIpPrefix

}

}

resource bastionHost 'Microsoft.Network/bastionHosts@2022-01-01' = {

name: bastionHostName

location: location

dependsOn: [

newVirtualNetwork

existingVirtualNetwork

]

properties: {

ipConfigurations: [

{

name: 'IpConf'

properties: {

subnet: {

id: subnet.id

}

publicIPAddress: {

id: publicIp.id

}

}

}

]

}

}

部署 Bicep 模板

将 Bicep 文件保存到本地计算机作为 bastion.bicep。

使用文本或代码编辑器在文件中进行以下更改:

第 2 行:将 param vnetName string 从 'vnet01' 更改为 'VNet'。

第 5 行:将 param vnetIpPrefix string 从 '10.1.0.0/16' 更改为 '10.0.0.0/16'。

第 12 行:将 param vnetNewOrExisting string 从 'new' 更改为 'existing'。

第 15 行:将 param bastionSubnetIpPrefix string 从 '10.1.1.0/26' 更改为 '10.0.1.0/26'。

第 18 行:将 param bastionHostName string 更改为 param bastionHostName = 'VNet-bastion'。

更改后,Bicep 文件的前 18 行应如下示例所示:

@description('Name of new or existing vnet to which Azure Bastion should be deployed')

param vnetName string = 'VNet'

@description('IP prefix for available addresses in vnet address space')

param vnetIpPrefix string = '10.0.0.0/16'

@description('Specify whether to provision new vnet or deploy to existing vnet')

@allowed([

'new'

'existing'

])

param vnetNewOrExisting string = 'existing'

@description('Bastion subnet IP prefix MUST be within vnet IP prefix address space')

param bastionSubnetIpPrefix string = '10.0.1.0/26'

@description('Name of Azure Bastion resource')

param bastionHostName = 'VNet-bastion'

保存 bastion.bicep 文件。

使用 Azure CLI 或 Azure PowerShell 来部署 Bicep 文件:

命令行界面 (CLI)

az deployment group create \

--resource-group TestRG \

--template-file bastion.bicep

PowerShell

$deploymentParams = @{

ResourceGroupName = 'TestRG'

TemplateFile = 'bastion.bicep'

}

New-AzResourceGroupDeployment @deploymentParams

部署完成后,会显示一条指示部署成功的消息。

注释

虚拟网络中具有 Bastion 主机的虚拟机不需要公共 IP 地址。 Bastion 提供公共 IP,虚拟机使用专用 IP 在网络中进行通信。 可以从 Bastion 托管的虚拟网络的任何虚拟机中删除公共 IP。 有关详细信息,请参阅 解除 Azure VM 上的公共 IP 地址关联。

查看已部署的资源

使用 Azure CLI、Azure PowerShell 或 Azure 门户来查看部署的资源。

命令行界面 (CLI)

az resource list --resource-group TestRG

PowerShell

Get-AzResource -ResourceGroupName TestRG

门户

在 Azure 门户中,搜索并选择 资源组。 在“资源组”页面上,从资源组列表中选择“TestRG”。

在 TestRG 的“概述”页上,查看创建的所有资源,包括虚拟网络、两个 VM 和 Bastion 主机。

选择“VNet”虚拟网络。 在 VNet 的“概述”页上,留意所定义的地址空间“10.0.0.0/16”。

在左侧菜单中选择“子网”。 在“子网”页上,留意所部署的子网“backendSubnet”和“AzureBastionSubnet”,以及 Bicep 文件中分配的值。

相关推荐

4万名妓女涌向南非 艾滋病阴影笼罩世界杯
365bet足球官网

4万名妓女涌向南非 艾滋病阴影笼罩世界杯

📅 07-03 👁️ 3470
你还觉得送外卖比进工厂好吗 外卖小哥的职业病千万要注意
车内逃脱2攻略指南:解谜、寻找线索,成功逃离车内!