إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
ينطبق على: ✔️ أجهزة Linux الظاهرية
يوضح لك هذا التشغيل السريع كيفية استخدام قالب Azure Resource Manager (قالب ARM) لنشر جهاز ظاهري Ubuntu Linux (VM) في Azure.
قالب Azure Resource Manager هو ملف JavaScript Object Notation (JSON) الذي يحدد البنية الأساسية والتكوين لمشروعك. يستخدم القالب عبارات توضيحية. يمكنك وصف النشر المقصود دون كتابة تسلسل أوامر البرمجة لإنشاء النشر.
إذا كانت بيئتك تفي بالمتطلبات الأساسية وكنت على دراية بقوالب ARM، فحدد الزر توزيع إلى Azure . سيتم فتح القالب في مدخل Azure.
المتطلبات الأساسية
في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.
مراجعة القالب
لمزيد من المعلومات حول هذا القالب، راجع نشر جهاز ظاهري بسيط Ubuntu Linux 18.04-LTS.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.34.1.11899",
"templateHash": "6608977399677963554"
}
},
"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": {
"networkSecurityGroup": {
"id": "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('networkSecurityGroupName'))]"
},
"addressPrefix": "[variables('subnetAddressPrefix')]",
"privateEndpointNetworkPolicies": "Enabled",
"privateLinkServiceNetworkPolicies": "Enabled"
}
}
]
},
"dependsOn": [
"[resourceId('Microsoft.Network/networkSecurityGroups', parameters('networkSecurityGroupName'))]"
]
},
{
"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)]"
}
}
}
يتم تحديد العديد من الموارد في القالب:
- Microsoft.Network/virtualNetworks/subnets: إنشاء شبكة فرعية.
- Microsoft.Storage/storageAccounts: قم بإنشاء حساب تخزين.
- Microsoft.Network/networkInterfaces: قم بإنشاء بطاقة واجهة شبكة (NIC).
- Microsoft.Network/networkSecurityGroups: قم بإنشاء مجموعة أمان شبكة.
- Microsoft.Network/virtualNetworks: قم بإنشاء شبكة ظاهرية.
- Microsoft.Network/publicIPAddresses: إنشاء عنوان IP عام.
- Microsoft.Compute/virtualMachines: قم بإنشاء جهاز ظاهري.
نشر القالب
حدد الصورة التالية لتسجيل الدخول إلى Azure وفتح قالب. ينشئ القالب مخزناً رئيسياً وبيانات سرية.
حدد القيم التالية أو أدخلها. استخدم القيم الافتراضية، عند توفرها.
- الاشتراك: «select an Azure subscription».
- مجموعة الموارد: حدد مجموعة موارد موجودة من القائمة المنسدلة، أو حدد إنشاء جديد، وأدخل اسما فريدا لمجموعة الموارد، وحدد موافق.
- المنطقة: حدد منطقة. على سبيل المثال، وسط الولايات المتحدة.
- اسم مستخدم المسؤول: قم بتوفير اسم مستخدم، مثل azureuser.
- نوع المصادقة: يمكنك الاختيار بين مفتاح SSH أو كلمة مرور.
-
كلمة مرور المسؤول أو مفتاح المسؤول حسب ما تختاره لنوع المصادقة:
- إذا اخترت كلمة المرور، فيجب أن تتكون كلمة المرور من 12 حرفا على الأقل وأن تفي بمتطلبات التعقيد المحددة.
- إذا اخترت sshPublicKey ، فقم بلصق محتويات مفتاحك العام.
- بادئة تسمية DNS: أدخل معرفا فريدا لاستخدامه كجزء من تصنيف DNS.
- إصدار نظام التشغيل Ubuntu: حدد إصدار Ubuntu الذي تريد تشغيله على الجهاز الظاهري.
- الموقع: الافتراضي هو نفس موقع مجموعة الموارد، إذا كانت موجودة بالفعل.
- حجم الجهاز الظاهري: حدد الحجم المراد استخدامه للجهاز الظاهري.
- اسم الشبكة الظاهرية: الاسم الذي سيتم استخدامه للشبكة الظاهرية.
- اسم الشبكة الفرعية: اسم الشبكة الفرعية التي يجب أن يستخدمها الجهاز الظاهري.
- اسم مجموعة أمان الشبكة: اسم مجموعة أمان الشبكة.
حدد "Review + create". بعد اكتمال التحقق من الصحة، حدد إنشاء لإنشاء الجهاز الظاهري ونشره.
لا يتم تقديم معلومات التكلفة أثناء عملية إنشاء الجهاز الظاهري لقوالب ARM كما هو الحال بالنسبة لمدخل Microsoft Azure. إذا كنت تريد معرفة المزيد حول كيفية عمل التكلفة للأجهزة الظاهرية، فراجع صفحة نظرة عامة على تحسين التكلفة.
يُستخدم مدخل Microsoft Azure لنشر القالب. بالإضافة إلى مدخل Microsoft Azure، يمكنك أيضا استخدام Azure CLI وAzure PowerShell وREST API. لمعرفة طرق النشر الأخرى، راجع نشر القوالب.
مراجعة الموارد الموزعة
يمكنك استخدام مدخل Microsoft Azure للتحقق من الجهاز الظاهري والموارد الأخرى التي تم إنشاؤها. بعد انتهاء التوزيع، حدد مجموعات الموارد لرؤية الجهاز الظاهري والموارد الأخرى.
تنظيف الموارد
عندما لا تكون هناك حاجة إلى ذلك، احذف مجموعة الموارد، التي تحذف الجهاز الظاهري وجميع الموارد الموجودة في مجموعة الموارد.
- حددResource group.
- في صفحة مجموعة الموارد، حدد حذف مجموعة الموارد.
- عند المطالبة، اكتب اسم مجموعة الموارد ثم حدد حذف.
الخطوات التالية
في هذا التشغيل السريع، قمت بنشر جهاز ظاهري باستخدام قالب ARM. لمعرفة المزيد عن الأجهزة الظاهرية Azure، تابع البرنامج التعليمي لنظام إدارة البرامج لينكس.