Bu hızlı başlangıçta Azure portal, Azure CLI, Azure PowerShell, Resource Manager şablonu, Bicep şablonu ve Terraform kullanarak Azure Sanal Ağ (VNet) oluşturmayı öğrenin. Aynı sanal ağdaki sanal makineler arasındaki bağlantıyı test etmek için iki sanal makine ve bir Azure Bastion konağı dağıtılır. Azure Bastion konağı, sanal makinelere ssl üzerinden doğrudan Azure portalında güvenli ve sorunsuz RDP ve SSH bağlantısı sağlar.
Sanal ağ, Azure'daki özel ağlar için temel yapı taşıdır. Azure Sanal Ağ, VM'ler gibi Azure kaynaklarının birbirleriyle ve İnternet ile güvenli bir şekilde iletişim kurmasını sağlar.
Azure'a Giriş Yap
Azure hesabınızla Azure portalında oturum açın.
Sanal ağ ve Azure Bastion konağı oluşturma
Aşağıdaki işlem, bir kaynak alt ağı, Azure Bastion alt ağı ve Bastion ana bilgisayarı içeren bir sanal ağ oluşturur:
Portalda Sanal ağlar'ı arayın ve seçin.
Sanal ağlar sayfasında + Oluştur'u seçin.
Sanal ağ oluştur'un Temel Bilgiler sekmesinde aşağıdaki bilgileri girin veya seçin:
Ayarlar |
Değer |
Proje ayrıntıları |
|
Abonelik |
Aboneliğinizi seçin. |
Kaynak grubu |
Yeni Oluştur'u seçin.
Ad olarak test-rg girin.
Tamam'ı seçin. |
Örnek ayrıntıları |
|
İsim |
vnet-1 girin. |
Bölge |
Doğu ABD 2’yi seçin. |
Güvenlik sekmesine gitmek için İleri'yi seçin.
Azure Bastion bölümünde Azure Bastion'ı Etkinleştir'i seçin.
Bastion, özel IP adreslerini kullanarak Secure Shell (SSH) veya Uzak Masaüstü Protokolü (RDP) üzerinden sanal ağınızdaki VM'lere bağlanmak için tarayıcınızı kullanır. VM'lerin genel IP adreslerine, istemci yazılımına veya özel yapılandırmaya ihtiyacı yoktur. Daha fazla bilgi için bkz. Azure Bastion nedir?.
Uyarı
Saatlik fiyatlandırma, giden veri kullanımına bakılmaksızın Bastion dağıtıldığından itibaren başlar. Daha fazla bilgi için bkz . Fiyatlandırma ve SKU'lar. Bastion'ı bir öğretici veya test kapsamında dağıtıyorsanız, kullanmayı bitirdikten sonra bu kaynağı silmenizi öneririz.
Azure Bastion'da aşağıdaki bilgileri girin veya seçin:
Ayarlar |
Değer |
Azure Bastion sunucu adı |
Bastion yazın. |
Azure Bastion genel IP adresi |
Genel IP adresi oluştur seçeneğini belirleyin.
Ad alanına public-ip-bastion yazın.
Tamam'ı seçin. |
IP Adresleri sekmesine gitmek için İleri'yi seçin.
Alt ağlar'daki adres alanı kutusunda varsayılan alt ağı seçin.
Alt ağı düzenle bölümünde aşağıdaki bilgileri girin veya seçin:
Ayarlar |
Değer |
Alt ağ amacı |
Varsayılan ayarını Default olarak bırakın. |
İsim |
subnet-1'i girin. |
IPv4 |
|
IPv4 adres aralığı |
Varsayılan değeri 10.0.0.0/16 olarak bırakın. |
Başlangıç adresi |
Varsayılan değeri 10.0.0.0 olarak bırakın. |
Boyut |
Varsayılan değeri /24 (256 adres) olarak bırakın. |
Kaydetseçeneğini seçin.
Pencerenin alt kısmındaki Gözden geçir + oluştur'u seçin. Doğrulama başarılı olduğunda Oluştur'u seçin.
Sanal makine oluşturma
Aşağıdaki yordam, sanal ağda vm-1 ve vm-2 adlı iki VM oluşturur:
Portalda Sanal makineler'i arayın ve seçin.
Sanal makineler'de, + Oluştur'u seçin ve ardından Azure sanal makinesini seçin.
Sanal makine oluşturmanın Temel Bilgiler sekmesinde aşağıdaki bilgileri girin veya seçin:
Ayarlar |
Değer |
Proje ayrıntıları |
|
Abonelik |
Aboneliğinizi seçin. |
Kaynak grubu |
test-rg öğesini seçin. |
Örnek ayrıntıları |
|
Sanal makine ismi |
vm-1'i girin. |
Bölge |
Doğu ABD 2’yi seçin. |
Kullanılabilirlik seçenekleri |
Altyapı yedekliliği gerekmiyor seçeneğini seçin. |
Güvenlik türü |
Standart varsayılanını değiştirmeyin. |
Resim |
Ubuntu Server 22.04 LTS - x64 Gen2'yi seçin. |
VM mimarisi |
Varsayılan ayar olarak x64'ü bırakın. |
Boyut |
Bir boyut seçin. |
Yönetici hesabı |
|
Doğrulama türü |
Parola'ya tıklayın. |
Kullanıcı adı |
azureuser yazın. |
Şifre |
Bir parola girin. |
Parolayı onaylayın |
Parolayı yeniden girin. |
Giriş bağlantı noktası kuralları |
|
Genel Erişime Açık Gelen Bağlantı Noktaları |
Yok'a tıklayın. |
Ağ sekmesini seçin. Aşağıdaki bilgileri girin veya seçin:
Ayarlar |
Değer |
Ağ arabirimi |
|
Sanal ağ |
vnet-1'i seçin. |
Alt ağ (subnet) |
subnet-1 (10.0.0.0/24) öğesini seçin. |
Halka Açık IP |
Yok'a tıklayın. |
NIC ağ güvenlik grubu |
Gelişmiş'i seçin. |
Ağ güvenlik grubunu yapılandırma |
Yeni Oluştur'u seçin.
Ad olarak nsg-1 girin.
Gerisini varsayılan değerlerde bırakın ve Tamam'ı seçin. |
Ayarların geri kalanını varsayılan ayarlarda bırakın ve Gözden geçir ve oluştur'u seçin.
Ayarları gözden geçirin ve Oluştur'u seçin.
İlk sanal makinenin dağıtılması için bekleyin, ardından aşağıdaki ayarlarla ikinci bir sanal makine oluşturmak için önceki adımları yineleyin:
Ayarlar |
Değer |
Sanal makine ismi |
Girin vm-2. |
Sanal ağ |
vnet-1'i seçin. |
Alt ağ (subnet) |
subnet-1 (10.0.0.0/24) öğesini seçin. |
Halka Açık IP |
Yok'a tıklayın. |
NIC ağ güvenlik grubu |
Gelişmiş'i seçin. |
Ağ güvenlik grubunu yapılandırma |
nsg-1'i seçin. |
Uyarı
Azure Bastion konağı olan bir sanal ağdaki sanal makinelerin genel IP adreslerine ihtiyacı yoktur. Bastion genel IP'yi sağlar ve VM'ler ağ içinde iletişim kurmak için özel IP'ler kullanır. Bastion tarafından barındırılan sanal ağlardaki tüm VM'lerden genel IP'leri kaldırabilirsiniz. Daha fazla bilgi için Azure VM'den genel bir IP adresini ayırma konusuna bakın.
Uyarı
Azure, ya genel bir IP adresi atanmamış olan ya da iç Azure temel yük dengeleyicisinin arka uç havuzunda bulunan VM'ler için varsayılan bir dışa giden erişim IP'si sağlar. Varsayılan giden erişim IP mekanizması, yapılandırılamayan bir giden IP adresi sağlar.
Aşağıdaki olaylardan biri gerçekleştiğinde varsayılan giden erişim IP'si devre dışı bırakılır:
Sanal makine ölçek kümelerini esnek düzenleme modunda kullanarak oluşturduğunuz VM'lerin varsayılan giden erişimi yoktur.
Azure'daki giden bağlantılar hakkında daha fazla bilgi için bkz . Azure'da varsayılan giden erişim ve giden bağlantılar için Kaynak Ağ Adresi Çevirisi'ni (SNAT) kullanma.
Bir kaynak grubu oluşturun
New-AzResourceGroup kullanarak sanal ağı barındıracak bir kaynak grubu oluşturun.
eastus2 Azure bölgesinde test-rg adlı bir kaynak grubu oluşturmak için aşağıdaki kodu çalıştırın:
$rg = @{
Name = 'test-rg'
Location = 'eastus2'
}
New-AzResourceGroup @rg
Sanal ağ oluşturma
New-AzVirtualNetwork komutunu kullanarak test-rg kaynak grubunda ve eastus2 konumunda IP adresi ön eki 10.0.0.0/16 olan vnet-1 adlı bir sanal ağ oluşturun:
$vnet = @{
Name = 'vnet-1'
ResourceGroupName = 'test-rg'
Location = 'eastus2'
AddressPrefix = '10.0.0.0/16'
}
$virtualNetwork = New-AzVirtualNetwork @vnet
Azure, kaynakları sanal ağ içindeki bir alt ağa dağıtır. Adres ön eki 10.0.0.0/24 olan subnet-1 adlı bir alt ağ yapılandırması oluşturmak için Add-AzVirtualNetworkSubnetConfig komutunu kullanın:
$subnet = @{
Name = 'subnet-1'
VirtualNetwork = $virtualNetwork
AddressPrefix = '10.0.0.0/24'
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
Set-AzVirtualNetwork komutunu kullanarak alt ağ yapılandırmasını sanal ağ ile ilişkilendirin:
$virtualNetwork | Set-AzVirtualNetwork
Azure Bastion’ı dağıtma
Azure Bastion, özel IP adreslerini kullanarak Secure Shell (SSH) veya Uzak Masaüstü Protokolü (RDP) üzerinden sanal ağınızdaki VM'lere bağlanmak için tarayıcınızı kullanır. VM'lerin genel IP adreslerine, istemci yazılımına veya özel yapılandırmaya ihtiyacı yoktur. Bastion hakkında daha fazla bilgi için bkz . Azure Bastion nedir?.
Saatlik fiyatlandırma, giden veri kullanımına bakılmaksızın Bastion dağıtıldığından itibaren başlar. Daha fazla bilgi için bkz . Fiyatlandırma ve SKU'lar. Bastion'ı bir öğretici veya test kapsamında dağıtıyorsanız, kullanmayı bitirdikten sonra bu kaynağı silmenizi öneririz.
Sanal ağınız için bir Bastion alt ağı yapılandırın. Bu alt ağ yalnızca Bastion kaynakları için ayrılmıştır ve AzureBastionSubnet olarak adlandırılmalıdır.
$subnet = @{
Name = 'AzureBastionSubnet'
VirtualNetwork = $virtualNetwork
AddressPrefix = '10.0.1.0/26'
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subnet
Yapılandırmayı ayarlayın:
$virtualNetwork | Set-AzVirtualNetwork
Bastion için bir genel IP adresi oluşturun. Bastion konağı, 443 numaralı bağlantı noktası üzerinden SSH ve RDP'ye erişmek için genel IP'yi kullanır.
$ip = @{
ResourceGroupName = 'test-rg'
Name = 'public-ip'
Location = 'eastus2'
AllocationMethod = 'Static'
Sku = 'Standard'
Zone = 1,2,3
}
New-AzPublicIpAddress @ip
AzureBastionSubnet'te yeni bir Standart SKU Bastion konağı oluşturmak için New-AzBastion komutunu kullanın:
$bastion = @{
Name = 'bastion'
ResourceGroupName = 'test-rg'
PublicIpAddressRgName = 'test-rg'
PublicIpAddressName = 'public-ip'
VirtualNetworkRgName = 'test-rg'
VirtualNetworkName = 'vnet-1'
Sku = 'Basic'
}
New-AzBastion @bastion
Bastion kaynaklarının dağıtılması yaklaşık 10 dakika sürer. Bastion sanal ağınıza dağıtılırken sonraki bölümde VM'ler oluşturabilirsiniz.
Sanal makine oluşturma
New-AzVM kullanarak sanal ağın alt ağı-1 alt ağında vm-1 ve vm-2 adlı iki VM oluşturun. Kimlik bilgileri istendiğinde VM'ler için kullanıcı adlarını ve parolaları girin.
İlk VM'yi oluşturmak için aşağıdaki kodu kullanın:
# 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
İkinci VM'yi oluşturmak için aşağıdaki kodu kullanın:
# 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
İpucu
-AsJob
seçeneğini kullanarak diğer görevlerinize devam ederken arka planda bir VM oluşturabilirsiniz. Örneğin, komutunu çalıştırın New-AzVM @vm1 -AsJob
. Azure arka planda VM oluşturmaya başladığında aşağıdaki çıkışa benzer bir şey elde edersiniz:
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Long Running... AzureLongRun... Running True localhost New-AzVM
Azure'ın VM'leri oluşturması birkaç dakika sürer. Azure VM'leri oluşturmayı tamamladığında PowerShell'e çıkış döndürür.
Uyarı
Bastion konağı olan bir sanal ağdaki VM'lerin genel IP adreslerine ihtiyacı yoktur. Bastion genel IP'yi sağlar ve VM'ler ağ içinde iletişim kurmak için özel IP'ler kullanır. Bastion tarafından barındırılan sanal ağlardaki tüm VM'lerden genel IP'leri kaldırabilirsiniz. Daha fazla bilgi için Azure VM'den genel bir IP adresini ayırma konusuna bakın.
Uyarı
Azure, ya genel bir IP adresi atanmamış olan ya da iç Azure temel yük dengeleyicisinin arka uç havuzunda bulunan VM'ler için varsayılan bir dışa giden erişim IP'si sağlar. Varsayılan giden erişim IP mekanizması, yapılandırılamayan bir giden IP adresi sağlar.
Aşağıdaki olaylardan biri gerçekleştiğinde varsayılan giden erişim IP'si devre dışı bırakılır:
Sanal makine ölçek kümelerini esnek düzenleme modunda kullanarak oluşturduğunuz VM'lerin varsayılan giden erişimi yoktur.
Azure'daki giden bağlantılar hakkında daha fazla bilgi için bkz . Azure'da varsayılan giden erişim ve giden bağlantılar için Kaynak Ağ Adresi Çevirisi'ni (SNAT) kullanma.
Bir kaynak grubu oluşturun
Az group create komutunu kullanarak sanal ağı barındıracak bir kaynak grubu oluşturun. eastus2 Azure bölgesinde test-rg adlı bir kaynak grubu oluşturmak için aşağıdaki kodu kullanın:
az group create \
--name test-rg \
--location eastus2
Sanal ağ ve alt ağ oluşturma
az network vnet create komutunu kullanarak test-rg kaynak grubunda subnet-1 adlı bir alt ağa sahip vnet-1adlı bir sanal ağ oluşturun:
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
Azure Bastion’ı dağıtma
Azure Bastion, özel IP adreslerini kullanarak Secure Shell (SSH) veya Uzak Masaüstü Protokolü (RDP) üzerinden sanal ağınızdaki VM'lere bağlanmak için tarayıcınızı kullanır. VM'lerin genel IP adreslerine, istemci yazılımına veya özel yapılandırmaya ihtiyacı yoktur.
Saatlik fiyatlandırma, giden veri kullanımına bakılmaksızın Bastion dağıtıldığından itibaren başlar. Daha fazla bilgi için bkz . Fiyatlandırma ve SKU'lar. Bastion'ı bir öğretici veya test kapsamında dağıtıyorsanız, kullanmayı bitirdikten sonra bu kaynağı silmenizi öneririz. Bastion hakkında daha fazla bilgi için bkz . Azure Bastion nedir?.
Sanal ağınız için bir Bastion alt ağı oluşturmak için az network vnet subnet create komutunu kullanın. Bu alt ağ yalnızca Bastion kaynakları için ayrılmıştır ve AzureBastionSubnet olarak adlandırılmalıdır.
az network vnet subnet create \
--name AzureBastionSubnet \
--resource-group test-rg \
--vnet-name vnet-1 \
--address-prefix 10.0.1.0/26
Bastion için bir genel IP adresi oluşturun. Bu IP adresi, Bastion konağına internetten bağlanmak için kullanılır.
az network public-ip create komutunu test-rg kaynak grubunda public-ip adlı bir genel IP adresi oluşturmak için kullanın:
az network public-ip create \
--resource-group test-rg \
--name public-ip \
--sku Standard \
--location eastus2 \
--zone 1 2 3
AzureBastionSubnet'te sanal ağınız için bastion konağı oluşturmak için az network bastion create komutunu kullanın:
az network bastion create \
--name bastion \
--public-ip-address public-ip \
--resource-group test-rg \
--vnet-name vnet-1 \
--location eastus2
Bastion kaynaklarının dağıtılması yaklaşık 10 dakika sürer. Bastion sanal ağınıza dağıtılırken sonraki bölümde VM'ler oluşturabilirsiniz.
Sanal makine oluşturma
Az vm create komutunu kullanarak sanal ağın alt ağı-1 alt ağında vm-1 ve vm-2 adlı iki VM oluşturun. Kimlik bilgileri istendiğinde VM'ler için kullanıcı adları ve parolalar girin.
İlk VM'yi oluşturmak için aşağıdaki komutu kullanın:
az vm create \
--resource-group test-rg \
--admin-username azureuser \
--authentication-type password \
--name vm-1 \
--image Ubuntu2204 \
--public-ip-address ""
İkinci VM'yi oluşturmak için aşağıdaki komutu kullanın:
az vm create \
--resource-group test-rg \
--admin-username azureuser \
--authentication-type password \
--name vm-2 \
--image Ubuntu2204 \
--public-ip-address ""
İpucu
Diğer görevlere --no-wait
devam ederken arka planda vm oluşturmak için seçeneğini de kullanabilirsiniz.
Sanal makinelerin oluşturulması birkaç dakika sürebilir. Azure her VM'yi oluşturduğunda, Azure CLI aşağıdaki iletiye benzer bir çıktı döndürür:
{
"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": ""
}
Uyarı
Bastion konağı olan bir sanal ağdaki VM'lerin genel IP adreslerine ihtiyacı yoktur. Bastion genel IP'yi sağlar ve VM'ler ağ içinde iletişim kurmak için özel IP'ler kullanır. Bastion tarafından barındırılan sanal ağlardaki tüm VM'lerden genel IP'leri kaldırabilirsiniz. Daha fazla bilgi için Azure VM'den genel bir IP adresini ayırma konusuna bakın.
Uyarı
Azure, ya genel bir IP adresi atanmamış olan ya da iç Azure temel yük dengeleyicisinin arka uç havuzunda bulunan VM'ler için varsayılan bir dışa giden erişim IP'si sağlar. Varsayılan giden erişim IP mekanizması, yapılandırılamayan bir giden IP adresi sağlar.
Aşağıdaki olaylardan biri gerçekleştiğinde varsayılan giden erişim IP'si devre dışı bırakılır:
Sanal makine ölçek kümelerini esnek düzenleme modunda kullanarak oluşturduğunuz VM'lerin varsayılan giden erişimi yoktur.
Azure'daki giden bağlantılar hakkında daha fazla bilgi için bkz . Azure'da varsayılan giden erişim ve giden bağlantılar için Kaynak Ağ Adresi Çevirisi'ni (SNAT) kullanma.
Şablonu gözden geçir
Bu hızlı başlangıçta kullandığınız şablon Azure Hızlı Başlangıç Şablonları'ndan alınmıştı.
{
"$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')]"
}
}
]
}
}
]
}
Şablon aşağıdaki Azure kaynaklarını tanımlar:
Şablonu dağıt
Resource Manager şablonunu Azure'a dağıtma:
Azure'da oturum açmak ve şablonu açmak için Azure'a dağıt'ı seçin. Şablon, iki alt ağa sahip bir sanal ağ oluşturur.
Portalda, İki Alt Ağ ile Sanal Ağ oluştur sayfasında aşağıdaki değerleri girin veya seçin:
-
Kaynak grubu: Yeni oluştur'u seçin, kaynak grubu adı için CreateVNetQS-rg girin ve tamam'ı seçin.
-
Sanal Ağ Adı: Yeni sanal ağ için bir ad girin.
Gözden geçir ve oluştur'u seçin ve ardından Oluştur seçeneğini belirleyin.
Dağıtım tamamlandığında, dağıttığınız kaynakları gözden geçirmek için Kaynağa git düğmesini seçin.
Dağıtılmış kaynakları gözden geçir.
Sanal ağ1 için ayarlar bölmelerine göz atarak sanal ağ ile oluşturduğunuz kaynakları keşfedin:
Genel Bakış sekmesinde 10.0.0.0/16'nın tanımlı adres alanı gösterilir.
Alt Ağlar sekmesi, subnet1 ve Subnet2'nin dağıtılan alt ağlarını şablondan uygun değerlerle gösterir.
Şablondaki bir sanal ağın JSON söz dizimi ve özellikleri hakkında bilgi edinmek için Microsoft.Network/virtualNetworks bölümüne bkz.
Sanal ağı ve VM'leri oluşturma
Bu hızlı başlangıçta sanal ağı, kaynak alt ağını ve VM'leri oluşturmak için Azure Resource Manager Hızlı Başlangıç Şablonları'ndan VNET Bicep'teki iki VM şablonu kullanılmaktadır. Bicep şablonu aşağıdaki Azure kaynaklarını tanımlar:
Bicep dosyasını gözden geçirin:
@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 şablonunu dağıtma
Bicep dosyasını yerel bilgisayarınıza main.bicep olarak kaydedin.
Azure CLI veya Azure PowerShell kullanarak Bicep dosyasını dağıtın:
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
Dağıtım tamamlandığında, dağıtımın başarılı olduğunu belirten bir ileti görüntülenir.
Azure Bastion’ı dağıtma
Bastion, özel IP adreslerini kullanarak Secure Shell (SSH) veya Uzak Masaüstü Protokolü (RDP) üzerinden sanal ağınızdaki VM'lere bağlanmak için tarayıcınızı kullanır. VM'lerin genel IP adreslerine, istemci yazılımına veya özel yapılandırmaya ihtiyacı yoktur. Bastion hakkında daha fazla bilgi için bkz . Azure Bastion nedir?.
Uyarı
Saatlik fiyatlandırma, giden veri kullanımına bakılmaksızın Bastion dağıtıldığından itibaren başlar. Daha fazla bilgi için bkz . Fiyatlandırma ve SKU'lar. Bastion'ı bir öğretici veya test kapsamında dağıtıyorsanız, kullanmayı bitirdikten sonra bu kaynağı silmenizi öneririz.
Sanal ağınızda Bastion'ı dağıtmak ve yapılandırmak için Azure Resource Manager Hızlı Başlangıç Şablonları'ndanHizmet Olarak Azure Bastion Bicep şablonunu kullanın. Bu Bicep şablonu aşağıdaki Azure kaynaklarını tanımlar:
Bicep dosyasını gözden geçirin:
@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 şablonunu dağıtma
Bicep dosyasını yerel bilgisayarınıza bastion.bicep olarak kaydedin.
Dosyada aşağıdaki değişiklikleri yapmak için bir metin veya kod düzenleyicisi kullanın:
- 2. Satır: olarak
param vnetName string
'vnet01'
değiştirin'VNet'
.
- 5. Satır: olarak
param vnetIpPrefix string
'10.1.0.0/16'
değiştirin'10.0.0.0/16'
.
- 12. Satır: olarak
param vnetNewOrExisting string
'new'
değiştirin'existing'
.
- 15. Satır: olarak
param bastionSubnetIpPrefix string
'10.1.1.0/26'
değiştirin'10.0.1.0/26'
.
- 18. Satır: olarak
param bastionHostName string
değiştirinparam bastionHostName = 'VNet-bastion'
.
Bicep dosyanızın ilk 18 satırı şu örnekteki gibi görünmelidir:
@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 dosyasını kaydedin.
Azure CLI veya Azure PowerShell kullanarak Bicep dosyasını dağıtın:
CLI
az deployment group create \
--resource-group TestRG \
--template-file bastion.bicep
PowerShell
$deploymentParams = @{
ResourceGroupName = 'TestRG'
TemplateFile = 'bastion.bicep'
}
New-AzResourceGroupDeployment @deploymentParams
Dağıtım tamamlandığında, dağıtımın başarılı olduğunu belirten bir ileti görüntülenir.
Uyarı
Bastion konağı olan bir sanal ağdaki VM'lerin genel IP adreslerine ihtiyacı yoktur. Bastion genel IP'yi sağlar ve VM'ler ağ içinde iletişim kurmak için özel IP'ler kullanır. Bastion tarafından barındırılan sanal ağlardaki tüm VM'lerden genel IP'leri kaldırabilirsiniz. Daha fazla bilgi için Azure VM'den genel bir IP adresini ayırma konusuna bakın.
Dağıtılmış kaynakları gözden geçir.
Dağıtılan kaynakları gözden geçirmek için Azure CLI, Azure PowerShell veya Azure portalını kullanın:
CLI
az resource list --resource-group TestRG
PowerShell
Get-AzResource -ResourceGroupName TestRG
Portal
Azure portalında kaynak gruplarını arayın ve seçin.
Kaynak grupları sayfasında, kaynak grupları listesinden TestRG'yi seçin.
TestRG'nin Genel Bakış sayfasında sanal ağ, iki VM ve Bastion konağı dahil olmak üzere oluşturduğunuz tüm kaynakları gözden geçirin.
Sanal ağ sanal ağını seçin. Sanal ağın Genel Bakış sayfasında 10.0.0.0/16'nın tanımlı adres alanına dikkat edin.
Sol menüde Alt ağlar'ı seçin.
Alt ağlar sayfasında, bicep dosyalarından atanan değerlerle backendSubnet ve AzureBastionSubnet'in dağıtılan alt ağlarına dikkat edin.