Hızlı Başlangıç: ARM şablonu kullanarak Ubuntu Linux sanal makinesi oluşturma
Şunlar için geçerlidir: ✔️ Linux VM'leri
Bu hızlı başlangıçta, Azure'da Ubuntu Linux sanal makinesi (VM) dağıtmak için Azure Resource Manager şablonunun (ARM şablonu) nasıl kullanılacağı gösterilmektedir.
Azure Resource Manager şablonu, projenizin altyapısını ve yapılandırmasını tanımlayan bir JavaScript Nesne Gösterimi (JSON) dosyasıdır. Bu şablonda, bildirim temelli sözdizimi kullanılır. Dağıtımı oluşturmak için programlama komutlarının sırasını yazmadan hedeflenen dağıtımınızı açıklarsınız.
Ortamınız önkoşulları karşılıyorsa ve ARM şablonları hakkında bilginiz varsa Azure'a Dağıt düğmesini seçin. Şablon Azure portalında açılır.
Önkoşullar
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Şablonu gözden geçirme
Bu şablon hakkında daha fazla bilgi için bkz . Basit bir Ubuntu Linux VM 18.04-LTS dağıtma.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.25.53.49325",
"templateHash": "2386182166504519146"
}
},
"parameters": {
"vmName": {
"type": "string",
"defaultValue": "simpleLinuxVM",
"metadata": {
"description": "The name of your Virtual Machine."
}
},
"adminUsername": {
"type": "string",
"metadata": {
"description": "Username for the Virtual Machine."
}
},
"authenticationType": {
"type": "string",
"defaultValue": "password",
"allowedValues": [
"sshPublicKey",
"password"
],
"metadata": {
"description": "Type of authentication to use on the Virtual Machine. SSH key is recommended."
}
},
"adminPasswordOrKey": {
"type": "securestring",
"metadata": {
"description": "SSH Key or password for the Virtual Machine. SSH key is recommended."
}
},
"dnsLabelPrefix": {
"type": "string",
"defaultValue": "[toLower(format('{0}-{1}', parameters('vmName'), uniqueString(resourceGroup().id)))]",
"metadata": {
"description": "Unique DNS Name for the Public IP used to access the Virtual Machine."
}
},
"ubuntuOSVersion": {
"type": "string",
"defaultValue": "Ubuntu-2004",
"allowedValues": [
"Ubuntu-2004",
"Ubuntu-2204"
],
"metadata": {
"description": "The Ubuntu version for the VM. This will pick a fully patched image of this given Ubuntu version."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"vmSize": {
"type": "string",
"defaultValue": "Standard_D2s_v3",
"metadata": {
"description": "The size of the VM"
}
},
"virtualNetworkName": {
"type": "string",
"defaultValue": "vNet",
"metadata": {
"description": "Name of the VNET"
}
},
"subnetName": {
"type": "string",
"defaultValue": "Subnet",
"metadata": {
"description": "Name of the subnet in the virtual network"
}
},
"networkSecurityGroupName": {
"type": "string",
"defaultValue": "SecGroupNet",
"metadata": {
"description": "Name of the Network Security Group"
}
},
"securityType": {
"type": "string",
"defaultValue": "TrustedLaunch",
"allowedValues": [
"Standard",
"TrustedLaunch"
],
"metadata": {
"description": "Security Type of the Virtual Machine."
}
}
},
"variables": {
"imageReference": {
"Ubuntu-2004": {
"publisher": "Canonical",
"offer": "0001-com-ubuntu-server-focal",
"sku": "20_04-lts-gen2",
"version": "latest"
},
"Ubuntu-2204": {
"publisher": "Canonical",
"offer": "0001-com-ubuntu-server-jammy",
"sku": "22_04-lts-gen2",
"version": "latest"
}
},
"publicIPAddressName": "[format('{0}PublicIP', parameters('vmName'))]",
"networkInterfaceName": "[format('{0}NetInt', parameters('vmName'))]",
"osDiskType": "Standard_LRS",
"subnetAddressPrefix": "10.1.0.0/24",
"addressPrefix": "10.1.0.0/16",
"linuxConfiguration": {
"disablePasswordAuthentication": true,
"ssh": {
"publicKeys": [
{
"path": "[format('/home/{0}/.ssh/authorized_keys', parameters('adminUsername'))]",
"keyData": "[parameters('adminPasswordOrKey')]"
}
]
}
},
"securityProfileJson": {
"uefiSettings": {
"secureBootEnabled": true,
"vTpmEnabled": true
},
"securityType": "[parameters('securityType')]"
},
"extensionName": "GuestAttestation",
"extensionPublisher": "Microsoft.Azure.Security.LinuxAttestation",
"extensionVersion": "1.0",
"maaTenantName": "GuestAttestation",
"maaEndpoint": "[substring('emptystring', 0, 0)]"
},
"resources": [
{
"type": "Microsoft.Network/networkInterfaces",
"apiVersion": "2023-09-01",
"name": "[variables('networkInterfaceName')]",
"location": "[parameters('location')]",
"properties": {
"ipConfigurations": [
{
"name": "ipconfig1",
"properties": {
"subnet": {
"id": "[reference(resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName')), '2023-09-01').subnets[0].id]"
},
"privateIPAllocationMethod": "Dynamic",
"publicIPAddress": {
"id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))]"
}
}
}
],
"networkSecurityGroup": {
"id": "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('networkSecurityGroupName'))]"
}
},
"dependsOn": [
"[resourceId('Microsoft.Network/networkSecurityGroups', parameters('networkSecurityGroupName'))]",
"[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))]",
"[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworkName'))]"
]
},
{
"type": "Microsoft.Network/networkSecurityGroups",
"apiVersion": "2023-09-01",
"name": "[parameters('networkSecurityGroupName')]",
"location": "[parameters('location')]",
"properties": {
"securityRules": [
{
"name": "SSH",
"properties": {
"priority": 1000,
"protocol": "Tcp",
"access": "Allow",
"direction": "Inbound",
"sourceAddressPrefix": "*",
"sourcePortRange": "*",
"destinationAddressPrefix": "*",
"destinationPortRange": "22"
}
}
]
}
},
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2023-09-01",
"name": "[parameters('virtualNetworkName')]",
"location": "[parameters('location')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[variables('addressPrefix')]"
]
},
"subnets": [
{
"name": "[parameters('subnetName')]",
"properties": {
"addressPrefix": "[variables('subnetAddressPrefix')]",
"privateEndpointNetworkPolicies": "Enabled",
"privateLinkServiceNetworkPolicies": "Enabled"
}
}
]
}
},
{
"type": "Microsoft.Network/publicIPAddresses",
"apiVersion": "2023-09-01",
"name": "[variables('publicIPAddressName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Basic"
},
"properties": {
"publicIPAllocationMethod": "Dynamic",
"publicIPAddressVersion": "IPv4",
"dnsSettings": {
"domainNameLabel": "[parameters('dnsLabelPrefix')]"
},
"idleTimeoutInMinutes": 4
}
},
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2023-09-01",
"name": "[parameters('vmName')]",
"location": "[parameters('location')]",
"properties": {
"hardwareProfile": {
"vmSize": "[parameters('vmSize')]"
},
"storageProfile": {
"osDisk": {
"createOption": "FromImage",
"managedDisk": {
"storageAccountType": "[variables('osDiskType')]"
}
},
"imageReference": "[variables('imageReference')[parameters('ubuntuOSVersion')]]"
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]"
}
]
},
"osProfile": {
"computerName": "[parameters('vmName')]",
"adminUsername": "[parameters('adminUsername')]",
"adminPassword": "[parameters('adminPasswordOrKey')]",
"linuxConfiguration": "[if(equals(parameters('authenticationType'), 'password'), null(), variables('linuxConfiguration'))]"
},
"securityProfile": "[if(equals(parameters('securityType'), 'TrustedLaunch'), variables('securityProfileJson'), null())]"
},
"dependsOn": [
"[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaceName'))]"
]
},
{
"condition": "[and(and(equals(parameters('securityType'), 'TrustedLaunch'), variables('securityProfileJson').uefiSettings.secureBootEnabled), variables('securityProfileJson').uefiSettings.vTpmEnabled)]",
"type": "Microsoft.Compute/virtualMachines/extensions",
"apiVersion": "2023-09-01",
"name": "[format('{0}/{1}', parameters('vmName'), variables('extensionName'))]",
"location": "[parameters('location')]",
"properties": {
"publisher": "[variables('extensionPublisher')]",
"type": "[variables('extensionName')]",
"typeHandlerVersion": "[variables('extensionVersion')]",
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": true,
"settings": {
"AttestationConfig": {
"MaaSettings": {
"maaEndpoint": "[variables('maaEndpoint')]",
"maaTenantName": "[variables('maaTenantName')]"
}
}
}
},
"dependsOn": [
"[resourceId('Microsoft.Compute/virtualMachines', parameters('vmName'))]"
]
}
],
"outputs": {
"adminUsername": {
"type": "string",
"value": "[parameters('adminUsername')]"
},
"hostname": {
"type": "string",
"value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName')), '2023-09-01').dnsSettings.fqdn]"
},
"sshCommand": {
"type": "string",
"value": "[format('ssh {0}@{1}', parameters('adminUsername'), reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName')), '2023-09-01').dnsSettings.fqdn)]"
}
}
}
Şablonda çeşitli kaynaklar tanımlanır:
- Microsoft.Network/virtualNetworks/subnets: bir alt ağ oluşturun.
- Microsoft.Storage/storageAccounts: bir depolama hesabı oluşturun.
- Microsoft.Network/networkInterfaces: bir NIC oluşturun.
- Microsoft.Network/networkSecurityGroups: bir ağ güvenlik grubu oluşturun.
- Microsoft.Network/virtualNetworks: bir sanal ağ oluşturun.
- Microsoft.Network/publicIPAddresses: bir genel IP adresi oluşturun.
- Microsoft.Compute/virtualMachines: bir sanal makine oluşturun.
Şablonu dağıtma
Aşağıdaki görüntüyü seçerek Azure'da oturum açıp bir şablon açın. Şablon bir anahtar kasası ve bir gizli dizi oluşturur.
Aşağıdaki değerleri seçin veya girin. Kullanılabilir olduğunda varsayılan değerleri kullanın.
- Abonelik: Bir Azure aboneliği seçin.
- Kaynak grubu: Açılan listeden mevcut bir kaynak grubunu seçin veya Yeni oluştur'u seçin, kaynak grubu için benzersiz bir ad girin ve Tamam'ı seçin.
- Bölge: Bir bölge seçin. Örneğin Orta ABD.
- Yönetici kullanıcı adı: azureuser gibi bir kullanıcı adı girin.
- Kimlik doğrulama türü: SSH anahtarı veya parola arasından seçim yapabilirsiniz.
- Kimlik doğrulama türü için ne seçtiğinize bağlı olarak Yönetici Parolası veya Anahtarı :
- Parolayı seçerseniz, parolanın en az 12 karakter uzunluğunda olması ve tanımlanan karmaşıklık gereksinimlerini karşılaması gerekir.
- sshPublicKey'i seçerseniz, ortak anahtarınızın içeriğini yapıştırın.
- DNS etiketi ön eki: DNS etiketinin bir parçası olarak kullanılacak benzersiz bir tanımlayıcı girin.
- Ubuntu işletim sistemi sürümü: VM'de hangi Ubuntu sürümünü çalıştırmak istediğinizi seçin.
- Konum: Varsayılan, zaten varsa kaynak grubuyla aynı konumdur.
- VM boyutu: VM için kullanılacak boyutu seçin.
- Sanal Ağ Adı: sanal ağ için kullanılacak ad.
- Alt Ağ Adı: VM'nin kullanması gereken alt ağın adı.
- Ağ Güvenlik Grubu Adı: NSG'nin adı.
Gözden geçir ve oluştur’u seçin. Doğrulama tamamlandıktan sonra OLUŞTUR'u seçerek VM'yi oluşturun ve dağıtın.
Maliyet bilgileri, Azure portalında olduğu gibi ARM şablonları için sanal makine oluşturma işlemi sırasında sunulmaz. Sanal makineler için maliyetin nasıl çalıştığı hakkında daha fazla bilgi edinmek istiyorsanız Maliyet iyileştirmeye Genel Bakış sayfasına bakın.
Şablonu dağıtmak için Azure portalı kullanılır. Azure portalına ek olarak Azure CLI, Azure PowerShell ve REST API'yi de kullanabilirsiniz. Diğer dağıtım yöntemlerini öğrenmek için bkz . Şablonları dağıtma.
Dağıtılan kaynakları gözden geçirme
Oluşturulan VM'yi ve diğer kaynakları denetlemek için Azure portalını kullanabilirsiniz. Dağıtım tamamlandıktan sonra VM'yi ve diğer kaynakları görmek için Kaynak grupları'nı seçin.
Kaynakları temizleme
Artık gerekli olmadığında kaynak grubunu silin; bu da VM'yi ve kaynak grubundaki tüm kaynakları siler.
- Kaynak grubunu seçin.
- Kaynak grubunun sayfasında Kaynak grubunu sil'i seçin.
- İstendiğinde, kaynak grubunun adını yazın ve sil'i seçin.
Sonraki adımlar
Bu hızlı başlangıçta, BIR ARM şablonu kullanarak bir sanal makine dağıttınız. Azure sanal makineleri hakkında daha fazla bilgi için Linux VM’lerine yönelik öğreticiye geçin.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin