Aracılığıyla paylaş


Azure CLI ile eksiksiz bir Linux sanal makinesi oluşturma

Şunlar için geçerlidir: ✔️ Linux VM'leri

Azure'da hızla bir sanal makine (VM) oluşturmak için, gerekli destek kaynaklarını oluşturmak için varsayılan değerleri kullanan tek bir Azure CLI komutu kullanabilirsiniz. Sanal ağ, genel IP adresi ve ağ güvenlik grubu kuralları gibi kaynaklar otomatik olarak oluşturulur. Üretim kullanımında ortamınızı daha fazla kontrol etmek için bu kaynakları önceden oluşturabilir ve ardından VM'lerinizi bunlara ekleyebilirsiniz. Bu makale, bir VM'yi ve destekleyici kaynakların her birini tek tek oluşturma konusunda size yol gösterir.

En son Azure CLI'yi yüklediğinizden ve az login ile bir Azure hesabında oturum açtığınızdan emin olun.

Aşağıdaki örneklerde, örnek parametre adlarını kendi değerlerinizle değiştirin. Örnek parametre adları myResourceGroup, myVnet ve myVM'dir.

Kaynak grubu oluşturma

Azure kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır. Bir sanal makineden önce ve destekleyen sanal ağ kaynaklarında bir kaynak grubu oluşturulmalıdır. az group create ile kaynak grubunu oluşturun. Aşağıdaki örnek eastus konumunda myResourceGroup adlı bir kaynak grubu oluşturur:

az group create --name myResourceGroup --location eastus

Varsayılan olarak, Azure CLI komutlarının çıkışı JSON 'dadır (JavaScript Nesne Gösterimi). Varsayılan çıkışı bir liste veya tabloyla değiştirmek için, örneğin az config set core.output=table komutunu kullanın. Çıkış biçiminde bir kerelik değişiklik için herhangi bir komuta da ekleyebilirsiniz --output . Aşağıdaki örnekte komutundan alınan JSON çıkışı gösterilmektedir az group create :

{
  "id": "/subscriptions/guid/resourceGroups/myResourceGroup",
  "location": "eastus",
  "name": "myResourceGroup",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

Sanal ağ ve alt ağ oluşturma

Ardından Azure'da bir sanal ağ ve içinde VM'lerinizi oluşturabileceğiniz bir alt ağ oluşturacaksınız. 192.168.0.0/16 adres ön eki ile myVnet adlı bir sanal ağ oluşturmak için az network vnet create komutunu kullanın. Ayrıca adres ön eki 192.168.1.0/24 olan mySubnet adlı bir alt ağ da eklersiniz:

az network vnet create \
    --resource-group myResourceGroup \
    --name myVnet \
    --address-prefix 192.168.0.0/16 \
    --subnet-name mySubnet \
    --subnet-prefix 192.168.1.0/24

Çıktı, alt ağın sanal ağ içinde mantıksal olarak oluşturulduğunu gösterir:

{
  "addressSpace": {
    "addressPrefixes": [
      "192.168.0.0/16"
    ]
  },
  "dhcpOptions": {
    "dnsServers": []
  },
  "etag": "W/\"e95496fc-f417-426e-a4d8-c9e4d27fc2ee\"",
  "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet",
  "location": "eastus",
  "name": "myVnet",
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "resourceGuid": "ed62fd03-e9de-430b-84df-8a3b87cacdbb",
  "subnets": [
    {
      "addressPrefix": "192.168.1.0/24",
      "etag": "W/\"e95496fc-f417-426e-a4d8-c9e4d27fc2ee\"",
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet",
      "ipConfigurations": null,
      "name": "mySubnet",
      "networkSecurityGroup": null,
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
      "resourceNavigationLinks": null,
      "routeTable": null
    }
  ],
  "tags": {},
  "type": "Microsoft.Network/virtualNetworks",
  "virtualNetworkPeerings": null
}

Genel IP adresi oluşturma

Şimdi az network public-ip create ile bir genel IP adresi oluşturalım. Bu genel IP adresi, vm'lerinize İnternet'ten bağlanmanızı sağlar. Varsayılan adres dinamik olduğundan parametresiyle --domain-name-label adlandırılmış bir DNS girişi oluşturun. Aşağıdaki örnek, mypublicdns DNS adıyla myPublicIP adlı bir genel IP oluşturur. DNS adının benzersiz olması gerektiğinden, kendi benzersiz DNS adınızı girin:

az network public-ip create \
    --resource-group myResourceGroup \
    --name myPublicIP \
    --dns-name mypublicdns

Çıkış:

{
  "publicIp": {
    "dnsSettings": {
      "domainNameLabel": "mypublicdns",
      "fqdn": "mypublicdns.eastus.cloudapp.azure.com",
      "reverseFqdn": null
    },
    "etag": "W/\"2632aa72-3d2d-4529-b38e-b622b4202925\"",
    "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIP",
    "idleTimeoutInMinutes": 4,
    "ipAddress": null,
    "ipConfiguration": null,
    "location": "eastus",
    "name": "myPublicIP",
    "provisioningState": "Succeeded",
    "publicIpAddressVersion": "IPv4",
    "publicIpAllocationMethod": "Dynamic",
    "resourceGroup": "myResourceGroup",
    "resourceGuid": "4c65de38-71f5-4684-be10-75e605b3e41f",
    "tags": null,
    "type": "Microsoft.Network/publicIPAddresses"
  }
}

Ağ güvenlik grubu oluşturma

VM'lerinize gelen ve giden trafik akışını denetlemek için sanal NIC'ye veya alt ağa bir ağ güvenlik grubu uygulayın. Aşağıdaki örnekte az network nsg create komutu kullanılarak myNetworkSecurityGroup adlı bir ağ güvenlik grubu oluşturulur:

az network nsg create \
    --resource-group myResourceGroup \
    --name myNetworkSecurityGroup

Belirli trafiğe izin veren veya trafiği reddeden kurallar tanımlarsınız. 22 numaralı bağlantı noktasında gelen bağlantılara izin vermek için ( SSH erişimini etkinleştirmek için az network nsg rule create ile bir gelen kuralı oluşturun. Aşağıdaki örnek myNetworkSecurityGroupRuleSSH adlı bir kural oluşturur:

az network nsg rule create \
    --resource-group myResourceGroup \
    --nsg-name myNetworkSecurityGroup \
    --name myNetworkSecurityGroupRuleSSH \
    --protocol tcp \
    --priority 1000 \
    --destination-port-range 22 \
    --access allow

80 numaralı bağlantı noktasında (web trafiği için) gelen bağlantılara izin vermek için başka bir ağ güvenlik grubu kuralı ekleyin. Aşağıdaki örnek myNetworkSecurityGroupRuleHTTP adlı bir kural oluşturur:

az network nsg rule create \
    --resource-group myResourceGroup \
    --nsg-name myNetworkSecurityGroup \
    --name myNetworkSecurityGroupRuleWeb \
    --protocol tcp \
    --priority 1001 \
    --destination-port-range 80 \
    --access allow

az network nsg show ile ağ güvenlik grubunu ve kurallarını inceleyin:

az network nsg show --resource-group myResourceGroup --name myNetworkSecurityGroup

Çıkış:

{
  "defaultSecurityRules": [
    {
      "access": "Allow",
      "description": "Allow inbound traffic from all VMs in VNET",
      "destinationAddressPrefix": "VirtualNetwork",
      "destinationPortRange": "*",
      "direction": "Inbound",
      "etag": "W/\"3371b313-ea9f-4687-a336-a8ebdfd80523\"",
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNetworkSecurityGroup/defaultSecurityRules/AllowVnetInBound",
      "name": "AllowVnetInBound",
      "priority": 65000,
      "protocol": "*",
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
      "sourceAddressPrefix": "VirtualNetwork",
      "sourcePortRange": "*"
    },
    {
      "access": "Allow",
      "description": "Allow inbound traffic from azure load balancer",
      "destinationAddressPrefix": "*",
      "destinationPortRange": "*",
      "direction": "Inbound",
      "etag": "W/\"3371b313-ea9f-4687-a336-a8ebdfd80523\"",
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNetworkSecurityGroup/defaultSecurityRules/AllowAzureLoadBalancerInBou",
      "name": "AllowAzureLoadBalancerInBound",
      "priority": 65001,
      "protocol": "*",
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
      "sourceAddressPrefix": "AzureLoadBalancer",
      "sourcePortRange": "*"
    },
    {
      "access": "Deny",
      "description": "Deny all inbound traffic",
      "destinationAddressPrefix": "*",
      "destinationPortRange": "*",
      "direction": "Inbound",
      "etag": "W/\"3371b313-ea9f-4687-a336-a8ebdfd80523\"",
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNetworkSecurityGroup/defaultSecurityRules/DenyAllInBound",
      "name": "DenyAllInBound",
      "priority": 65500,
      "protocol": "*",
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
      "sourceAddressPrefix": "*",
      "sourcePortRange": "*"
    },
    {
      "access": "Allow",
      "description": "Allow outbound traffic from all VMs to all VMs in VNET",
      "destinationAddressPrefix": "VirtualNetwork",
      "destinationPortRange": "*",
      "direction": "Outbound",
      "etag": "W/\"3371b313-ea9f-4687-a336-a8ebdfd80523\"",
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNetworkSecurityGroup/defaultSecurityRules/AllowVnetOutBound",
      "name": "AllowVnetOutBound",
      "priority": 65000,
      "protocol": "*",
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
      "sourceAddressPrefix": "VirtualNetwork",
      "sourcePortRange": "*"
    },
    {
      "access": "Allow",
      "description": "Allow outbound traffic from all VMs to Internet",
      "destinationAddressPrefix": "Internet",
      "destinationPortRange": "*",
      "direction": "Outbound",
      "etag": "W/\"3371b313-ea9f-4687-a336-a8ebdfd80523\"",
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNetworkSecurityGroup/defaultSecurityRules/AllowInternetOutBound",
      "name": "AllowInternetOutBound",
      "priority": 65001,
      "protocol": "*",
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
      "sourceAddressPrefix": "*",
      "sourcePortRange": "*"
    },
    {
      "access": "Deny",
      "description": "Deny all outbound traffic",
      "destinationAddressPrefix": "*",
      "destinationPortRange": "*",
      "direction": "Outbound",
      "etag": "W/\"3371b313-ea9f-4687-a336-a8ebdfd80523\"",
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNetworkSecurityGroup/defaultSecurityRules/DenyAllOutBound",
      "name": "DenyAllOutBound",
      "priority": 65500,
      "protocol": "*",
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
      "sourceAddressPrefix": "*",
      "sourcePortRange": "*"
    }
  ],
  "etag": "W/\"3371b313-ea9f-4687-a336-a8ebdfd80523\"",
  "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNetworkSecurityGroup",
  "location": "eastus",
  "name": "myNetworkSecurityGroup",
  "networkInterfaces": null,
  "provisioningState": "Succeeded",
  "resourceGroup": "myResourceGroup",
  "resourceGuid": "47a9964e-23a3-438a-a726-8d60ebbb1c3c",
  "securityRules": [
    {
      "access": "Allow",
      "description": null,
      "destinationAddressPrefix": "*",
      "destinationPortRange": "22",
      "direction": "Inbound",
      "etag": "W/\"9e344b60-0daa-40a6-84f9-0ebbe4a4b640\"",
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNetworkSecurityGroup/securityRules/myNetworkSecurityGroupRuleSSH",
      "name": "myNetworkSecurityGroupRuleSSH",
      "priority": 1000,
      "protocol": "Tcp",
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
      "sourceAddressPrefix": "*",
      "sourcePortRange": "*"
    },
    {
      "access": "Allow",
      "description": null,
      "destinationAddressPrefix": "*",
      "destinationPortRange": "80",
      "direction": "Inbound",
      "etag": "W/\"9e344b60-0daa-40a6-84f9-0ebbe4a4b640\"",
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNetworkSecurityGroup/securityRules/myNetworkSecurityGroupRuleWeb",
      "name": "myNetworkSecurityGroupRuleWeb",
      "priority": 1001,
      "protocol": "Tcp",
      "provisioningState": "Succeeded",
      "resourceGroup": "myResourceGroup",
      "sourceAddressPrefix": "*",
      "sourcePortRange": "*"
    }
  ],
  "subnets": null,
  "tags": null,
  "type": "Microsoft.Network/networkSecurityGroups"
}

Sanal NIC oluşturma

Sanal ağ arabirim kartları (NIC' ler) program aracılığıyla kullanılabilir çünkü kullanımlarına kurallar uygulayabilirsiniz. VM boyutuna bağlı olarak, bir VM'ye birden çok sanal NIC ekleyebilirsiniz. Aşağıdaki az network nic create komutunda myNic adlı bir NIC oluşturur ve bunu ağ güvenlik grubunuzla ilişkilendirirsiniz. myPublicIP genel IP adresi de sanal NIC ile ilişkilendirilir.

az network nic create \
    --resource-group myResourceGroup \
    --name myNic \
    --vnet-name myVnet \
    --subnet mySubnet \
    --public-ip-address myPublicIP \
    --network-security-group myNetworkSecurityGroup

Çıkış:

{
  "NewNIC": {
    "dnsSettings": {
      "appliedDnsServers": [],
      "dnsServers": [],
      "internalDnsNameLabel": null,
      "internalDomainNameSuffix": "brqlt10lvoxedgkeuomc4pm5tb.bx.internal.cloudapp.net",
      "internalFqdn": null
    },
    "enableAcceleratedNetworking": false,
    "enableIpForwarding": false,
    "etag": "W/\"04b5ab44-d8f4-422a-9541-e5ae7de8466d\"",
    "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myNic",
    "ipConfigurations": [
      {
        "applicationGatewayBackendAddressPools": null,
        "etag": "W/\"04b5ab44-d8f4-422a-9541-e5ae7de8466d\"",
        "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myNic/ipConfigurations/ipconfig1",
        "loadBalancerBackendAddressPools": null,
        "loadBalancerInboundNatRules": null,
        "name": "ipconfig1",
        "primary": true,
        "privateIpAddress": "192.168.1.4",
        "privateIpAddressVersion": "IPv4",
        "privateIpAllocationMethod": "Dynamic",
        "provisioningState": "Succeeded",
        "publicIpAddress": {
          "dnsSettings": null,
          "etag": null,
          "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIP",
          "idleTimeoutInMinutes": null,
          "ipAddress": null,
          "ipConfiguration": null,
          "location": null,
          "name": null,
          "provisioningState": null,
          "publicIpAddressVersion": null,
          "publicIpAllocationMethod": null,
          "resourceGroup": "myResourceGroup",
          "resourceGuid": null,
          "tags": null,
          "type": null
        },
        "resourceGroup": "myResourceGroup",
        "subnet": {
          "addressPrefix": null,
          "etag": null,
          "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVnet/subnets/mySubnet",
          "ipConfigurations": null,
          "name": null,
          "networkSecurityGroup": null,
          "provisioningState": null,
          "resourceGroup": "myResourceGroup",
          "resourceNavigationLinks": null,
          "routeTable": null
        }
      }
    ],
    "location": "eastus",
    "macAddress": null,
    "name": "myNic",
    "networkSecurityGroup": {
      "defaultSecurityRules": null,
      "etag": null,
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkSecurityGroups/myNetworkSecurityGroup",
      "location": null,
      "name": null,
      "networkInterfaces": null,
      "provisioningState": null,
      "resourceGroup": "myResourceGroup",
      "resourceGuid": null,
      "securityRules": null,
      "subnets": null,
      "tags": null,
      "type": null
    },
    "primary": null,
    "provisioningState": "Succeeded",
    "resourceGroup": "myResourceGroup",
    "resourceGuid": "b3dbaa0e-2cf2-43be-a814-5cc49fea3304",
    "tags": null,
    "type": "Microsoft.Network/networkInterfaces",
    "virtualMachine": null
  }
}

Kullanılabilirlik kümesi oluşturma

Kullanılabilirlik kümeleri, VM'lerinizi hata etki alanları ve güncelleştirme etki alanları arasında yaymanıza yardımcı olur. Şu anda yalnızca bir VM oluştursanız da, gelecekte genişletmeyi kolaylaştırmak için kullanılabilirlik kümelerini kullanmak en iyi yöntemdir.

Hata etki alanları, ortak bir güç kaynağını ve ağ anahtarını paylaşan bir sanal makine gruplandırma tanımlar. Varsayılan olarak, kullanılabilirlik kümenizde yapılandırılan sanal makineler en fazla üç hata etki alanı arasında ayrılır. Bu hata etki alanlarından birinde oluşan bir donanım sorunu, uygulamanızı çalıştıran her VM'yi etkilemez.

Güncelleştirme etki alanları, aynı anda yeniden başlatılabilir sanal makine gruplarını ve temel alınan fiziksel donanımları gösterir. Planlı bakım sırasında güncelleştirme etki alanlarının yeniden başlatılma sırası sıralı olmayabilir, ancak aynı anda yalnızca bir güncelleştirme etki alanı yeniden başlatılır.

Azure, vm'leri bir kullanılabilirlik kümesine yerleştirirken hata ve güncelleştirme etki alanları arasında otomatik olarak dağıtır. Daha fazla bilgi için bkz. VM'lerin kullanılabilirliğini yönetme.

az vm availability-set create ile VM'niz için bir kullanılabilirlik kümesi oluşturun. Aşağıdaki örnek myAvailabilitySet adında bir kullanılabilirlik kümesi oluşturur:

az vm availability-set create \
    --resource-group myResourceGroup \
    --name myAvailabilitySet

Çıkış, hata etki alanlarını ve güncelleştirme etki alanlarını not eder:

{
  "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Compute/availabilitySets/myAvailabilitySet",
  "location": "eastus",
  "managed": null,
  "name": "myAvailabilitySet",
  "platformFaultDomainCount": 2,
  "platformUpdateDomainCount": 5,
  "resourceGroup": "myResourceGroup",
  "sku": {
    "capacity": null,
    "managed": true,
    "tier": null
  },
  "statuses": null,
  "tags": {},
  "type": "Microsoft.Compute/availabilitySets",
  "virtualMachines": []
}

VM oluşturma

İnternet'e erişilebilir VM'leri desteklemek için ağ kaynaklarını oluşturdunuz. Şimdi bir VM oluşturun ve bunu bir SSH anahtarıyla güvenli bir şekilde sağlayın. Bu örnekte, en son LTS'yi temel alan bir Ubuntu VM oluşturalım. Azure VM görüntülerini bulma bölümünde açıklandığı gibi az vm image list ile ek görüntüler bulabilirsiniz.

Kimlik doğrulaması için kullanılacak bir SSH anahtarı belirtin. SSH ortak anahtar çifti yoksa, bunları oluşturabilir veya sizin için oluşturmak için parametresini kullanabilirsiniz --generate-ssh-keys . Zaten bir anahtar çifti varsa, bu parametre içindeki ~/.sshmevcut anahtarları kullanır.

Az vm create komutuyla tüm kaynakları ve bilgileri bir araya getirerek VM'yi oluşturun . Aşağıdaki örnek myVM adlı bir VM oluşturur:

az vm create \
    --resource-group myResourceGroup \
    --name myVM \
    --location eastus \
    --availability-set myAvailabilitySet \
    --nics myNic \
    --image Ubuntu2204 \
    --admin-username azureuser \
    --generate-ssh-keys

Genel IP adresini oluştururken sağladığınız DNS girişiyle VM'nize SSH. Bu fqdn , VM'nizi oluştururken çıktıda gösterilir:

{
  "fqdns": "mypublicdns.eastus.cloudapp.azure.com",
  "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM",
  "location": "eastus",
  "macAddress": "00-0D-3A-13-71-C8",
  "powerState": "VM running",
  "privateIpAddress": "192.168.1.5",
  "publicIpAddress": "13.90.94.252",
  "resourceGroup": "myResourceGroup"
}
ssh azureuser@mypublicdns.eastus.cloudapp.azure.com

Çıkış:

The authenticity of host 'mypublicdns.eastus.cloudapp.azure.com (13.90.94.252)' can't be established.
ECDSA key fingerprint is SHA256:SylINP80Um6XRTvWiFaNz+H+1jcrKB1IiNgCDDJRj6A.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'mypublicdns.eastus.cloudapp.azure.com,13.90.94.252' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.11.0-1016-azure x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  Get cloud support with Ubuntu Advantage Cloud Guest:
    https://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.


The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

azureuser@myVM:~$

NGINX'i yükleyebilir ve VM'ye giden trafik akışını görebilirsiniz. NGINX'i aşağıdaki gibi yükleyin:

sudo apt-get install -y nginx

Varsayılan NGINX sitesini uygulamada görmek için web tarayıcınızı açın ve FQDN'nizi girin:

VM'nizdeki varsayılan NGINX sitesi

Şablon olarak dışarı aktarma

Şimdi aynı parametrelere veya onunla eşleşen bir üretim ortamına sahip ek bir geliştirme ortamı oluşturmak istiyorsanız ne olur? Resource Manager ortamınız için tüm parametreleri tanımlayan JSON şablonlarını kullanır. Bu JSON şablonuna başvurarak ortamların tamamını oluşturursunuz. JSON şablonlarını el ile oluşturabilir veya sizin için JSON şablonunu oluşturmak için var olan bir ortamı dışarı aktarabilirsiniz. Kaynak grubunuzu dışarı aktarmak için az group export komutunu aşağıdaki gibi kullanın:

az group export --name myResourceGroup > myResourceGroup.json

Bu komut, myResourceGroup.json dosyayı geçerli çalışma dizininizde oluşturur. Bu şablondan bir ortam oluşturduğunuzda, tüm kaynak adları istenir. Komutuna parametresini az group export ekleyerek --include-parameter-default-value şablon dosyanızda bu adları doldurabilirsiniz. Kaynak adlarını belirtmek için JSON şablonunuzu düzenleyin veya kaynak adlarını belirten bir parameters.json dosyası oluşturun .

Şablonunuzdan bir ortam oluşturmak için az deployment group create komutunu aşağıdaki gibi kullanın:

az deployment group create \
    --resource-group myNewResourceGroup \
    --template-file myResourceGroup.json

Şablonlardan dağıtma hakkında daha fazla bilgi edinmek isteyebilirsiniz. Ortamları artımlı olarak güncelleştirme, parametre dosyasını kullanma ve şablonlara tek bir depolama konumundan erişme hakkında bilgi edinin.

Sonraki adımlar

Artık birden çok ağ bileşeni ve VM ile çalışmaya başlamaya hazırsınız. Burada tanıtılan temel bileşenleri kullanarak uygulamanızı oluşturmak için bu örnek ortamı kullanabilirsiniz.