Neste início rápido, saiba como criar uma Rede Virtual do Azure (VNet) usando o portal do Azure, a CLI do Azure, o Azure PowerShell, o modelo do Gerenciador de Recursos, o modelo Bicep e o Terraform. Duas máquinas virtuais e um host do Azure Bastion são implantados para testar a conectividade entre as máquinas virtuais na mesma rede virtual. O host do Azure Bastion facilita a conectividade RDP e SSH segura e contínua para as máquinas virtuais diretamente no portal do Azure por SSL.
Uma rede virtual é o bloco de construção fundamental para redes privadas no Azure. A Rede Virtual do Azure permite que recursos do Azure, como VMs, se comuniquem com segurança entre si e com a Internet.
Iniciar sessão no Azure
Entre no portal do Azure com sua conta do Azure.
Criar uma rede virtual e um host do Azure Bastion
O procedimento a seguir cria uma rede virtual com uma sub-rede de recurso, uma sub-rede do Azure Bastion e um host Bastion:
No portal, procure e selecione Redes virtuais.
Na página Redes virtuais , selecione + Criar.
Na guia Noções básicas de Criar rede virtual, insira ou selecione as seguintes informações:
Configurações |
Valor |
Detalhes do projeto |
|
Subscrição |
Selecione a sua subscrição. |
Grupo de recursos |
Selecione Criar novo.
Digite test-rg para o nome.
Selecione OK. |
Detalhes da instância |
|
Nome |
Insira vnet-1. |
Região |
Selecione Leste dos EUA 2. |
Selecione Avançar para prosseguir para a guia Segurança .
Na seção Azure Bastion, selecione Habilitar Azure Bastion.
Bastion usa seu navegador para se conectar a VMs em sua rede virtual através de Secure Shell (SSH) ou Remote Desktop Protocol (RDP) usando seus endereços IP privados. As VMs não precisam de endereços IP públicos, software cliente ou configuração especial. Para obter mais informações, consulte O que é o Azure Bastion?.
Observação
A faturação horária inicia-se no momento em que o Bastion é implantado, independentemente do uso de dados enviados. Para obter mais informações, consulte Preços e SKUs. Se estiver a implementar o Bastion como parte de um tutorial ou teste, recomendamos que elimine este recurso após terminar de o utilizar.
No Azure Bastion, insira ou selecione as seguintes informações:
Configurações |
Valor |
Nome do host do Azure Bastion |
Entre bastião. |
Endereço IP público do Azure Bastion |
Selecione Criar um endereço IP público.
Digite public-ip-bastion em Name.
Selecione OK. |
Selecione Avançar para ir para o separador Endereços IP.
Na caixa de espaço de endereço em Sub-redes, selecione a sub-rede padrão .
Em Editar sub-rede, insira ou selecione as seguintes informações:
Configurações |
Valor |
Finalidade da sub-rede |
Mantenha o valor predefinido Default. |
Nome |
Introduza subnet-1. |
IPv4 |
|
Intervalo de endereços IPv4 |
Deixe o padrão de 10.0.0.0/16. |
Endereço inicial |
Deixe o padrão de 10.0.0.0. |
Tamanho |
Deixe o padrão de /24 (256 endereços). |
Selecione Guardar.
Selecione Revisar e criar na parte inferior da janela. Quando a validação for aprovada, selecione Criar.
Criar máquinas virtuais
O procedimento a seguir cria duas VMs chamadas vm-1 e vm-2 na rede virtual:
No portal, procure e selecione Máquinas virtuais.
Em Máquinas virtuais, selecione + Criar e, em seguida, selecione Máquina virtual do Azure.
Na guia Noções básicas de Criar uma máquina virtual, insira ou selecione as seguintes informações:
Configurações |
Valor |
Detalhes do projeto |
|
Subscrição |
Selecione a sua subscrição. |
Grupo de recursos |
Selecione test-rg. |
Detalhes da instância |
|
Nome da máquina virtual |
Introduza vm-1. |
Região |
Selecione Leste dos EUA 2. |
Opções de disponibilidade |
Selecione Sem necessidade de redundância de infraestrutura. |
Tipo de segurança |
Deixe o valor predefinido de Padrão. |
Imagem |
Selecione Ubuntu Server 22.04 LTS - x64 Gen2. |
Arquitetura VM |
Deixe o padrão de x64. |
Tamanho |
Selecione um tamanho. |
Conta de administrador |
|
Tipo de autenticação |
Selecione Senha. |
Nome de utilizador |
Insira azureuser. |
Palavra-passe |
Introduza uma palavra-passe. |
Confirme a palavra-passe |
Reintroduza a palavra-passe. |
Regras de porta de entrada |
|
Portas de entrada públicas |
Selecione Nenhum. |
Selecione a guia Rede . Insira ou selecione as seguintes informações:
Configurações |
Valor |
Interface de Rede |
|
Rede virtual |
Selecione vnet-1. |
sub-rede |
Seleccione subnet-1 (10.0.0.0/24). |
IP público |
Selecione Nenhum. |
Grupo de segurança de rede NIC |
Selecione Avançado. |
Configurar grupo de segurança de rede |
Selecione Criar novo.
Digite nsg-1 para o nome.
Deixe o restante nos padrões e selecione OK. |
Deixe o restante das configurações nos padrões e selecione Revisar + criar.
Revise as configurações e selecione Criar.
Aguarde a implantação da primeira máquina virtual e repita as etapas anteriores para criar uma segunda máquina virtual com as seguintes configurações:
Configurações |
Valor |
Nome da máquina virtual |
Introduza vm-2. |
Rede virtual |
Selecione vnet-1. |
sub-rede |
Seleccione subnet-1 (10.0.0.0/24). |
IP público |
Selecione Nenhum. |
Grupo de segurança de rede NIC |
Selecione Avançado. |
Configurar grupo de segurança de rede |
Selecione nsg-1. |
Observação
As máquinas virtuais em uma rede virtual com um host do Azure Bastion não precisam de endereços IP públicos. Bastion fornece o IP público, e as VMs usam IPs privados para se comunicar dentro da rede. Você pode remover os IPs públicos de qualquer VM em redes virtuais hospedadas no Bastion. Para obter mais informações, consulte Dissociar um endereço IP público de uma VM do Azure.
Observação
O Azure fornece um IP de acesso de saída padrão para VMs que não recebem um endereço IP público ou estão no pool de back-end de um balanceador de carga básico interno do Azure. O mecanismo IP de acesso de saída padrão fornece um endereço IP de saída que não é configurável.
O IP de acesso de saída padrão é desativado quando um dos seguintes eventos acontece:
- Um endereço IP público é atribuído à VM.
- A VM é colocada no pool de back-end de um balanceador de carga padrão, com ou sem regras de saída.
- Um recurso Azure NAT Gateway é atribuído à subrede da VM.
As VMs que você cria usando conjuntos de dimensionamento de máquina virtual no modo de orquestração flexível não têm acesso de saída padrão.
Para obter mais informações sobre conexões de saída no Azure, consulte Acesso de saída padrão no Azure e Usar SNAT (Conversão de Endereço de Rede de Origem) para conexões de saída.
Criar um grupo de recursos
Use New-AzResourceGroup para criar um grupo de recursos para hospedar a rede virtual. Execute o seguinte código para criar um grupo de recursos chamado test-rg na região eastus2 Azure:
$rg = @{
Name = 'test-rg'
Location = 'eastus2'
}
New-AzResourceGroup @rg
Criar uma rede virtual
Use New-AzVirtualNetwork para criar uma rede virtual chamada vnet-1 com prefixo de endereço IP 10.0.0.0/16 no grupo de recursos test-rg e no local eastus2:
$vnet = @{
Name = 'vnet-1'
ResourceGroupName = 'test-rg'
Location = 'eastus2'
AddressPrefix = '10.0.0.0/16'
}
$virtualNetwork = New-AzVirtualNetwork @vnet
O Azure implanta recursos em uma sub-rede dentro de uma rede virtual. Use Add-AzVirtualNetworkSubnetConfig para criar uma configuração de sub-rede chamada subnet-1 com prefixo de endereço 10.0.0.0/24:
$subnet = @{
Name = 'subnet-1'
VirtualNetwork = $virtualNetwork
AddressPrefix = '10.0.0.0/24'
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
Associe a configuração da sub-rede à rede virtual usando Set-AzVirtualNetwork:
$virtualNetwork | Set-AzVirtualNetwork
Implementar o Azure Bastion
O Azure Bastion usa seu navegador para se conectar a VMs em sua rede virtual por meio de Secure Shell (SSH) ou RDP (Remote Desktop Protocol) usando seus endereços IP privados. As VMs não precisam de endereços IP públicos, software cliente ou configuração especial. Para obter mais informações sobre Bastion, consulte O que é o Azure Bastion?.
A faturação horária inicia-se no momento em que o Bastion é implantado, independentemente do uso de dados enviados. Para obter mais informações, consulte Preços e SKUs. Se estiver a implementar o Bastion como parte de um tutorial ou teste, recomendamos que elimine este recurso após terminar de o utilizar.
Configure uma sub-rede Bastion para sua rede virtual. Esta sub-rede é reservada exclusivamente para recursos Bastion e deve ser chamada AzureBastionSubnet.
$subnet = @{
Name = 'AzureBastionSubnet'
VirtualNetwork = $virtualNetwork
AddressPrefix = '10.0.1.0/26'
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
Defina a configuração:
$virtualNetwork | Set-AzVirtualNetwork
Crie um endereço IP público para Bastion. O host Bastion usa o IP público para acessar SSH e RDP pela porta 443.
$ip = @{
ResourceGroupName = 'test-rg'
Name = 'public-ip'
Location = 'eastus2'
AllocationMethod = 'Static'
Sku = 'Standard'
Zone = 1,2,3
}
New-AzPublicIpAddress @ip
Utilize o comando New-AzBastion para criar um novo Bastion host Standard SKU no AzureBastionSubnet:
$bastion = @{
Name = 'bastion'
ResourceGroupName = 'test-rg'
PublicIpAddressRgName = 'test-rg'
PublicIpAddressName = 'public-ip'
VirtualNetworkRgName = 'test-rg'
VirtualNetworkName = 'vnet-1'
Sku = 'Basic'
}
New-AzBastion @bastion
Leva cerca de 10 minutos para implantar os recursos do Bastion. Você pode criar VMs na próxima seção enquanto o Bastion é implementado na sua rede virtual.
Criar máquinas virtuais
Use New-AzVM para criar duas VMs chamadas vm-1 e vm-2 na sub-rede 1 da rede virtual. Quando você for solicitado a fornecer credenciais, insira nomes de usuário e senhas para as VMs.
Para criar a primeira VM, use o seguinte código:
# Set the administrator and password for the VM. ##
$cred = Get-Credential
## Place the virtual network into a variable. ##
$vnet = Get-AzVirtualNetwork -Name 'vnet-1' -ResourceGroupName 'test-rg'
## Create a network interface for the VM. ##
$nic = @{
Name = "nic-1"
ResourceGroupName = 'test-rg'
Location = 'eastus2'
Subnet = $vnet.Subnets[0]
}
$nicVM = New-AzNetworkInterface @nic
## Create a virtual machine configuration. ##
$vmsz = @{
VMName = "vm-1"
VMSize = 'Standard_DS1_v2'
}
$vmos = @{
ComputerName = "vm-1"
Credential = $cred
}
$vmimage = @{
PublisherName = 'Canonical'
Offer = '0001-com-ubuntu-server-jammy'
Skus = '22_04-lts-gen2'
Version = 'latest'
}
$vmConfig = New-AzVMConfig @vmsz `
| Set-AzVMOperatingSystem @vmos -Linux `
| Set-AzVMSourceImage @vmimage `
| Add-AzVMNetworkInterface -Id $nicVM.Id
## Create the VM. ##
$vm = @{
ResourceGroupName = 'test-rg'
Location = 'eastus2'
VM = $vmConfig
}
New-AzVM @vm
Para criar a segunda VM, use o seguinte código:
# Set the administrator and password for the VM. ##
$cred = Get-Credential
## Place the virtual network into a variable. ##
$vnet = Get-AzVirtualNetwork -Name 'vnet-1' -ResourceGroupName 'test-rg'
## Create a network interface for the VM. ##
$nic = @{
Name = "nic-2"
ResourceGroupName = 'test-rg'
Location = 'eastus2'
Subnet = $vnet.Subnets[0]
}
$nicVM = New-AzNetworkInterface @nic
## Create a virtual machine configuration. ##
$vmsz = @{
VMName = "vm-2"
VMSize = 'Standard_DS1_v2'
}
$vmos = @{
ComputerName = "vm-2"
Credential = $cred
}
$vmimage = @{
PublisherName = 'Canonical'
Offer = '0001-com-ubuntu-server-jammy'
Skus = '22_04-lts-gen2'
Version = 'latest'
}
$vmConfig = New-AzVMConfig @vmsz `
| Set-AzVMOperatingSystem @vmos -Linux `
| Set-AzVMSourceImage @vmimage `
| Add-AzVMNetworkInterface -Id $nicVM.Id
## Create the VM. ##
$vm = @{
ResourceGroupName = 'test-rg'
Location = 'eastus2'
VM = $vmConfig
}
New-AzVM @vm
Sugestão
Você pode usar a -AsJob
opção para criar uma VM em segundo plano enquanto continua com outras tarefas. Por exemplo, execute New-AzVM @vm1 -AsJob
. Quando o Azure começa a criar a VM em segundo plano, você obtém algo como a seguinte saída:
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Long Running... AzureLongRun... Running True localhost New-AzVM
O Azure leva alguns minutos para criar as VMs. Quando o Azure termina de criar as VMs, ele retorna a saída para o PowerShell.
Observação
As VMs em uma rede virtual com um host Bastion não precisam de endereços IP públicos. Bastion fornece o IP público, e as VMs usam IPs privados para se comunicar dentro da rede. Você pode remover os IPs públicos de qualquer VM em redes virtuais hospedadas no Bastion. Para obter mais informações, consulte Dissociar um endereço IP público de uma VM do Azure.
Observação
O Azure fornece um IP de acesso de saída padrão para VMs que não recebem um endereço IP público ou estão no pool de back-end de um balanceador de carga básico interno do Azure. O mecanismo IP de acesso de saída padrão fornece um endereço IP de saída que não é configurável.
O IP de acesso de saída padrão é desativado quando um dos seguintes eventos acontece:
- Um endereço IP público é atribuído à VM.
- A VM é colocada no pool de back-end de um balanceador de carga padrão, com ou sem regras de saída.
- Um recurso Azure NAT Gateway é atribuído à subrede da VM.
As VMs que você cria usando conjuntos de dimensionamento de máquina virtual no modo de orquestração flexível não têm acesso de saída padrão.
Para obter mais informações sobre conexões de saída no Azure, consulte Acesso de saída padrão no Azure e Usar SNAT (Conversão de Endereço de Rede de Origem) para conexões de saída.
Criar um grupo de recursos
Use az group create para criar um grupo de recursos para hospedar a rede virtual. Use o código a seguir para criar um grupo de recursos chamado test-rg na região eastus2 Azure:
az group create \
--name test-rg \
--location eastus2
Criar uma rede virtual e uma sub-rede
Use az network vnet create para criar uma rede virtual chamada vnet-1 com uma sub-rede chamada subnet-1 no grupo de recursos test-rg :
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefix 10.0.0.0/16 \
--subnet-name subnet-1 \
--subnet-prefixes 10.0.0.0/24
Implementar o Azure Bastion
O Azure Bastion usa seu navegador para se conectar a VMs em sua rede virtual por meio de Secure Shell (SSH) ou RDP (Remote Desktop Protocol) usando seus endereços IP privados. As VMs não precisam de endereços IP públicos, software cliente ou configuração especial.
A faturação horária inicia-se no momento em que o Bastion é implantado, independentemente do uso de dados enviados. Para obter mais informações, consulte Preços e SKUs. Se estiver a implementar o Bastion como parte de um tutorial ou teste, recomendamos que elimine este recurso após terminar de o utilizar. Para obter mais informações sobre Bastion, consulte O que é o Azure Bastion?.
Use az network vnet subnet create para criar uma sub-rede Bastion para a sua rede virtual. Esta sub-rede é reservada exclusivamente para recursos Bastion e deve ser chamada AzureBastionSubnet.
az network vnet subnet create \
--name AzureBastionSubnet \
--resource-group test-rg \
--vnet-name vnet-1 \
--address-prefix 10.0.1.0/26
Crie um endereço IP público para Bastion. Este endereço IP é usado para se conectar ao host Bastion a partir da internet. Use az network public-ip create para criar um endereço IP público chamado public-ip no grupo de recursos test-rg :
az network public-ip create \
--resource-group test-rg \
--name public-ip \
--sku Standard \
--location eastus2 \
--zone 1 2 3
Use az network bastion create para criar um host Bastion no AzureBastionSubnet para sua rede virtual:
az network bastion create \
--name bastion \
--public-ip-address public-ip \
--resource-group test-rg \
--vnet-name vnet-1 \
--location eastus2
Leva cerca de 10 minutos para implantar os recursos do Bastion. Você pode criar VMs na próxima seção enquanto o Bastion é implementado na sua rede virtual.
Criar máquinas virtuais
Use az vm create para criar duas VMs chamadas vm-1 e vm-2 na sub-rede-1 da rede virtual. Quando lhe forem solicitadas credenciais, introduza nomes de utilizador e palavras-passe para as VMs.
Para criar a primeira VM, use o seguinte comando:
az vm create \
--resource-group test-rg \
--admin-username azureuser \
--authentication-type password \
--name vm-1 \
--image Ubuntu2204 \
--public-ip-address ""
Para criar a segunda VM, use o seguinte comando:
az vm create \
--resource-group test-rg \
--admin-username azureuser \
--authentication-type password \
--name vm-2 \
--image Ubuntu2204 \
--public-ip-address ""
Sugestão
Você também pode usar a --no-wait
opção para criar uma VM em segundo plano enquanto continua com outras tarefas.
A criação das VMs demora alguns minutos. Depois que o Azure cria cada VM, a CLI do Azure retorna uma saída semelhante à seguinte mensagem:
{
"fqdns": "",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Microsoft.Compute/virtualMachines/vm-2",
"location": "eastus2",
"macAddress": "00-0D-3A-23-9A-49",
"powerState": "VM running",
"privateIpAddress": "10.0.0.5",
"publicIpAddress": "",
"resourceGroup": "test-rg"
"zones": ""
}
Observação
As VMs em uma rede virtual com um host Bastion não precisam de endereços IP públicos. Bastion fornece o IP público, e as VMs usam IPs privados para se comunicar dentro da rede. Você pode remover os IPs públicos de qualquer VM em redes virtuais hospedadas no Bastion. Para obter mais informações, consulte Dissociar um endereço IP público de uma VM do Azure.
Observação
O Azure fornece um IP de acesso de saída padrão para VMs que não recebem um endereço IP público ou estão no pool de back-end de um balanceador de carga básico interno do Azure. O mecanismo IP de acesso de saída padrão fornece um endereço IP de saída que não é configurável.
O IP de acesso de saída padrão é desativado quando um dos seguintes eventos acontece:
- Um endereço IP público é atribuído à VM.
- A VM é colocada no pool de back-end de um balanceador de carga padrão, com ou sem regras de saída.
- Um recurso Azure NAT Gateway é atribuído à subrede da VM.
As VMs que você cria usando conjuntos de dimensionamento de máquina virtual no modo de orquestração flexível não têm acesso de saída padrão.
Para obter mais informações sobre conexões de saída no Azure, consulte Acesso de saída padrão no Azure e Usar SNAT (Conversão de Endereço de Rede de Origem) para conexões de saída.
Rever o modelo
O modelo que se usa neste início rápido é dos Modelos de Início Rápido do Azure.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.6.18.56646",
"templateHash": "10806234693722113459"
}
},
"parameters": {
"vnetName": {
"type": "string",
"defaultValue": "VNet1",
"metadata": {
"description": "VNet name"
}
},
"vnetAddressPrefix": {
"type": "string",
"defaultValue": "10.0.0.0/16",
"metadata": {
"description": "Address prefix"
}
},
"subnet1Prefix": {
"type": "string",
"defaultValue": "10.0.0.0/24",
"metadata": {
"description": "Subnet 1 Prefix"
}
},
"subnet1Name": {
"type": "string",
"defaultValue": "Subnet1",
"metadata": {
"description": "Subnet 1 Name"
}
},
"subnet2Prefix": {
"type": "string",
"defaultValue": "10.0.1.0/24",
"metadata": {
"description": "Subnet 2 Prefix"
}
},
"subnet2Name": {
"type": "string",
"defaultValue": "Subnet2",
"metadata": {
"description": "Subnet 2 Name"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
}
},
"resources": [
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2021-08-01",
"name": "[parameters('vnetName')]",
"location": "[parameters('location')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[parameters('vnetAddressPrefix')]"
]
},
"subnets": [
{
"name": "[parameters('subnet1Name')]",
"properties": {
"addressPrefix": "[parameters('subnet1Prefix')]"
}
},
{
"name": "[parameters('subnet2Name')]",
"properties": {
"addressPrefix": "[parameters('subnet2Prefix')]"
}
}
]
}
}
]
}
O modelo define os seguintes recursos do Azure:
Implementar o modelo
Implante o modelo do Gerenciador de Recursos no Azure:
Selecione Implantar no Azure para entrar no Azure e abrir o modelo. O modelo cria uma rede virtual com duas sub-redes.
No portal, na página Criar uma Rede Virtual com duas Sub-redes , insira ou selecione os seguintes valores:
-
Grupo de recursos: Selecione Criar novo, digite CreateVNetQS-rg para o nome do grupo de recursos e selecione OK.
-
Nome da Rede Virtual: Insira um nome para a nova rede virtual.
Selecione Rever + criar e, em seguida, selecione Criar.
Quando a implantação terminar, selecione o botão Ir para o recurso para revisar os recursos implantados.
Analisar os recursos implementados
Explore os recursos que você criou com a rede virtual navegando pelos painéis de configurações para VNet1:
Para saber mais sobre a sintaxe JSON e as propriedades de uma rede virtual em um modelo, consulte Microsoft.Network/virtualNetworks.
Criar a rede virtual e as VMs
Este guia de início rápido usa o modelo Duas VMs em VNET do Azure Resource Manager Modelos de Início Rápido para criar a rede virtual, a sub-rede de recursos e as VMs. O modelo Bicep define os seguintes recursos do Azure:
Revise o arquivo 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
Implantar o modelo Bicep
Salve o arquivo Bicep em seu computador local como main.bicep.
Implante o arquivo Bicep usando a CLI do Azure ou o Azure PowerShell:
Interface de Linha de Comandos (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
Quando a implantação for concluída, uma mensagem indica que a implantação foi bem-sucedida.
Implementar o Azure Bastion
Bastion usa seu navegador para se conectar a VMs em sua rede virtual através de Secure Shell (SSH) ou Remote Desktop Protocol (RDP) usando seus endereços IP privados. As VMs não precisam de endereços IP públicos, software cliente ou configuração especial. Para obter mais informações sobre Bastion, consulte O que é o Azure Bastion?.
Observação
A faturação horária inicia-se no momento em que o Bastion é implantado, independentemente do uso de dados enviados. Para obter mais informações, consulte Preços e SKUs. Se estiver a implementar o Bastion como parte de um tutorial ou teste, recomendamos que elimine este recurso após terminar de o utilizar.
Use o modelo Azure Bastion as a Service Bicep dos Modelos de Início Rápido do Azure Resource Manager para implantar e configurar o Bastion em sua rede virtual. Este modelo Bicep define os seguintes recursos do Azure:
Revise o arquivo 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
}
}
}
]
}
}
Implantar o modelo Bicep
Salve o arquivo Bicep em seu computador local como bastion.bicep.
Use um editor de texto ou código para fazer as seguintes alterações no arquivo:
- Linha 2: Mude
param vnetName string
de 'vnet01'
para 'VNet'
.
- Linha 5: Mude
param vnetIpPrefix string
de '10.1.0.0/16'
para '10.0.0.0/16'
.
- Linha 12: Mude
param vnetNewOrExisting string
de 'new'
para 'existing'
.
- Linha 15: Mude
param bastionSubnetIpPrefix string
de '10.1.1.0/26'
para '10.0.1.0/26'
.
- Linha 18: Mude
param bastionHostName string
para param bastionHostName = 'VNet-bastion'
.
As primeiras 18 linhas do seu ficheiro Bicep agora devem ficar como este exemplo:
@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'
Salve o arquivo bastion.bicep .
Implante o arquivo Bicep usando a CLI do Azure ou o Azure PowerShell:
Interface de Linha de Comandos (CLI)
az deployment group create \
--resource-group TestRG \
--template-file bastion.bicep
PowerShell
$deploymentParams = @{
ResourceGroupName = 'TestRG'
TemplateFile = 'bastion.bicep'
}
New-AzResourceGroupDeployment @deploymentParams
Quando a implantação for concluída, uma mensagem indica que a implantação foi bem-sucedida.
Observação
As VMs em uma rede virtual com um host Bastion não precisam de endereços IP públicos. Bastion fornece o IP público, e as VMs usam IPs privados para se comunicar dentro da rede. Você pode remover os IPs públicos de qualquer VM em redes virtuais hospedadas no Bastion. Para obter mais informações, consulte Dissociar um endereço IP público de uma VM do Azure.
Analisar os recursos implementados
Use a CLI do Azure, o Azure PowerShell ou o portal do Azure para revisar os recursos implantados:
Interface de Linha de Comandos (CLI)
az resource list --resource-group TestRG
PowerShell
Get-AzResource -ResourceGroupName TestRG
Portais
No portal do Azure, procure e selecione grupos de recursos.
Na página Grupos de recursos, selecione TestRG na lista de grupos de recursos.
Na página Visão geral do TestRG, revise todos os recursos que você criou, incluindo a rede virtual, as duas VMs e o host Bastion.
Selecione a rede virtual VNet . Na página Visão geral da VNet, observe o espaço de endereço definido de 10.0.0.0/16.
No menu à esquerda, selecione Sub-redes.
Na página Sub-redes, observe as sub-redes implantadas de backendSubnet e AzureBastionSubnet com os valores atribuídos a partir dos ficheiros Bicep.