البدء السريع: إنشاء وتوزيع مواصفات القالب
مقالة 03/20/2024
5 من المساهمين
الملاحظات
في هذه المقالة
يوضح لك هذا البدء السريع كيفية تجميع قالب Azure Resource Manager (قالب ARM) في مواصفات القالب . بعد ذلك، تقوم بنشر مواصفات هذا القالب. تحتوي مواصفات النموذج الخاص بك على قالب ARM ينشر حساب تخزين.
المتطلبات الأساسية
حساب Azure مع اشتراك نشط. أنشئ حساباً مجاناً .
إنشاء قالب
إنشاء مواصفات قالب من قالب محلي. نسخ القالب التالي وحفظه محلياً إلى ملف اسمه azuredeploy.json . تفترض هذه البداية السريعة أنك قمت بحفظ مسارc:\Templates\azuredeploy.json ولكن يمكنك استخدام أي مسار.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.13.1.58284",
"templateHash": "13120038605368246703"
}
},
"parameters": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Premium_LRS",
"Premium_ZRS",
"Standard_GRS",
"Standard_GZRS",
"Standard_LRS",
"Standard_RAGRS",
"Standard_RAGZRS",
"Standard_ZRS"
],
"metadata": {
"description": "Storage Account type"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "The storage account location."
}
},
"storageAccountName": {
"type": "string",
"defaultValue": "[format('store{0}', uniqueString(resourceGroup().id))]",
"metadata": {
"description": "The name of the storage account"
}
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
],
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[parameters('storageAccountName')]"
},
"storageAccountId": {
"type": "string",
"value": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
}
}
}
إنشاء مواصفات القالب
مواصفات القالب هي نوع مورد يسمى Microsoft.Resources/templateSpecs
. لإنشاء مواصفات قالب، استخدم PowerShell أو Azure CLI أو المدخل أو قالب ARM.
إنشاء مجموعة موارد جديدة لاحتواء مواصفات القالب.
New-AzResourceGroup `
-Name templateSpecRG `
-Location westus2
إنشاء مواصفات القالب في مجموعة الموارد تلك. إعطاء المواصفات قالب جديد اسم storageSpec .
New-AzTemplateSpec `
-Name storageSpec `
-Version "1.0" `
-ResourceGroupName templateSpecRG `
-Location westus2 `
-TemplateFile "c:\Templates\azuredeploy.json"
إنشاء مجموعة موارد جديدة لاحتواء مواصفات القالب.
az group create \
--name templateSpecRG \
--location westus2
إنشاء مواصفات القالب في مجموعة الموارد تلك. إعطاء المواصفات قالب جديد اسم storageSpec .
az ts create \
--name storageSpec \
--version "1.0" \
--resource-group templateSpecRG \
--location "westus2" \
--template-file "c:\Templates\azuredeploy.json"
سجل الدخول إلى مدخل Azure .
ابحث عن مواصفات القالب . حدد مواصفات القالب من الخيارات المتاحة.
حدد استيراد قالب .
تحديد رمز المجلد.
انتقل إلى القالب المحلي الذي قمت بحفظه وحدده. حدد فتح .
حدد استيراد .
قم بتوفير القيم التالية:
الاسم : أدخل اسما لمواصفات القالب. على سبيل المثال، storageSpec
الاشتراك : حدد اشتراك Azure المستخدم لإنشاء مواصفات القالب.
Resource Group : حدد إنشاء جديد ، ثم أدخل اسم مجموعة موارد جديد. على سبيل المثال، templateSpecRG .
المنطقة : حدد موقعاً لمجموعة الموارد. على سبيل المثال، غرب الولايات المتحدة 2 .
الإصدار : أدخل إصدارا لمواصفات القالب. استخدم 1.0 .
حدد "استعراض + إنشاء" .
حدد إنشاء .
إشعار
بدلاً من استخدام قالب ARM، نوصي باستخدام PowerShell أو CLI لإنشاء مواصفات القالب. تقوم هذه الأدوات تلقائياً بتحويل القوالب المرتبطة إلى بيانات اصطناعية متصلة بالقالب الرئيسي. عند استخدام قالب ARM لإنشاء مواصفات القالب، يجب إضافة هذه القوالب المرتبطة يدويا كبيانات اصطناعية، والتي يمكن أن تكون معقدة.
عند استخدام قالب ARM لإنشاء مواصفات القالب، يتم تضمين القالب في تعريف المورد. هناك بعض التغييرات التي تحتاج إلى إجراءها على القالب المحلي. نسخ القالب التالي وحفظه محلياً إلى ملف اسمه azuredeploy.json .
إشعار
في القالب المضمن، يجب تخطي جميع تعبيرات القالب باستخدام قوس أيسر ثانٍ. استخدم "[[
بدلاً من "[
. صفائف JSON لا تزال تستخدم قوس أيسر واحد.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"functions": [],
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/templateSpecs",
"apiVersion": "2021-05-01",
"name": "storageSpec",
"location": "westus2",
"properties": {
"displayName": "Storage template spec"
},
"tags": {},
"resources": [
{
"type": "versions",
"apiVersion": "2021-05-01",
"name": "1.0",
"location": "westus2",
"dependsOn": [ "storageSpec" ],
"properties": {
"mainTemplate": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Premium_LRS"
],
"metadata": {
"description": "Storage Account type"
}
},
"location": {
"type": "string",
"defaultValue": "[[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
}
},
"variables": {
"storageAccountName": "[[concat('store', uniquestring(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[[variables('storageAccountName')]",
"location": "[[parameters('location')]",
"sku": {
"name": "[[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
],
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[[variables('storageAccountName')]"
}
}
}
},
"tags": {}
}
]
}
],
"outputs": {}
}
استخدم Azure CLI أو PowerShell لإنشاء مجموعة موارد جديدة.
New-AzResourceGroup `
-Name templateSpecRG `
-Location westus2
az group create \
--name templateSpecRG \
--location westus2
نشر القالب الخاص بك مع Azure CLI أو PowerShell.
New-AzResourceGroupDeployment `
-ResourceGroupName templateSpecRG `
-TemplateFile "c:\Templates\azuredeploy.json"
az deployment group create \
--resource-group templateSpecRG \
--template-file "c:\Templates\azuredeploy.json"
مواصفات قالب التوزيع
لنشر مواصفات قالب، استخدم نفس أوامر النشر التي ستستخدمها لنشر قالب. قم بتمرير معرف المورد لمواصفات القالب ليتم النشر.
قم بإنشاء مجموعة موارد لاحتواء حساب التخزين الجديد.
New-AzResourceGroup `
-Name storageRG `
-Location westus2
الحصول على معرف المورد من المواصفات القالب.
$id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "1.0").Versions.Id
نشر القالب المحدد.
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG
يمكنك توفير المعلمات تماما كما تفعل لقالب ARM. إعادة توزيع مواصفات القالب باستخدام معلمة لنوع حساب التخزين.
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG `
-storageAccountType Standard_GRS
قم بإنشاء مجموعة موارد لاحتواء حساب التخزين الجديد.
az group create \
--name storageRG \
--location westus2
الحصول على معرف المورد من المواصفات القالب.
id=$(az ts show --name storageSpec --resource-group templateSpecRG --version "1.0" --query "id")
إشعار
هناك مشكلة معروفة في الحصول على معرف مواصفات قالب وتعيينه إلى متغير في Windows PowerShell.
نشر القالب المحدد.
az deployment group create \
--resource-group storageRG \
--template-spec $id
يمكنك توفير المعلمات تماما كما تفعل لقالب ARM. إعادة توزيع مواصفات القالب باستخدام معلمة لنوع حساب التخزين.
az deployment group create \
--resource-group storageRG \
--template-spec $id \
--parameters storageAccountType='Standard_GRS'
حدد مواصفات القالب التي أنشأتها.
حدد نشر .
قم بتوفير القيم التالية:
الاشتراك : حدد اشتراك Azure لإنشاء المورد.
مجموعة الموارد : حدد إنشاء جديد ثم أدخل storageRG .
نوع حساب التخزين : حدد Standard_GRS .
حدد "Review + create ".
حدد إنشاء .
نسخ القالب التالي وحفظه محلياً إلى ملف اسمه storage.json .
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"functions": [],
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "demo",
"properties": {
"templateLink": {
"id": "[resourceId('templateSpecRG', 'Microsoft.Resources/templateSpecs/versions', 'storageSpec', '1.0')]"
},
"parameters": {
},
"mode": "Incremental"
}
}
],
"outputs": {}
}
استخدم Azure CLI أو PowerShell لإنشاء مجموعة موارد جديدة لحساب التخزين.
New-AzResourceGroup `
-Name storageRG `
-Location westus2
az group create \
--name storageRG \
--location westus2
نشر القالب الخاص بك مع Azure CLI أو PowerShell.
New-AzResourceGroupDeployment `
-ResourceGroupName storageRG `
-TemplateFile "c:\Templates\storage.json"
az deployment group create \
--resource-group storageRG \
--template-file "c:\Templates\storage.json"
منح حق الوصول
إذا كنت تريد السماح للمستخدمين الآخرين في مؤسستك بنشر مواصفات القالب، فستحتاج إلى منحهم حق الوصول للقراءة. يمكنك تعيين دور القارئ إلى مجموعة Microsoft Entra لمجموعة الموارد التي تحتوي على مواصفات القالب التي تريد مشاركتها. لمزيد من المعلومات، راجع البرنامج التعليمي: منح وصول مجموعة إلى موارد Azure باستخدام Azure PowerShell .
تحديث قالب
لنفترض أنك حددت تغييراً تريد إجراءه على القالب في مواصفات القالب الخاص بك. يتشابه القالب التالي مع القالب السابق إلا إنه يضيف بادئة لاسم حساب التخزين. نسخ القالب التالي وتحديث ملف azuredeploy.json.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Premium_LRS"
],
"metadata": {
"description": "Storage Account type"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"namePrefix": {
"type": "string",
"maxLength": 11,
"defaultValue": "store",
"metadata": {
"description": "Prefix for storage account name"
}
}
},
"variables": {
"storageAccountName": "[concat(parameters('namePrefix'), uniquestring(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
],
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[variables('storageAccountName')]"
}
}
}
تحديث إصدار مواصفات القالب
بدلاً من إنشاء مواصفات قالب جديدة للقالب المنقح، أضف إصداراً جديداً يسمى 2.0
إلى مواصفات القالب الموجودة.
إنشاء نسخة جديدة لمواصفات النموذج.
New-AzTemplateSpec `
-Name storageSpec `
-Version "2.0" `
-ResourceGroupName templateSpecRG `
-Location westus2 `
-TemplateFile "c:\Templates\azuredeploy.json"
لنشر الإصدار الجديد، احصل على معرف المورد 2.0
للإصدار.
$id = (Get-AzTemplateSpec -ResourceGroupName templateSpecRG -Name storageSpec -Version "2.0").Versions.Id
توزيع ذلك النموذج. توفير بادئة لاسم حساب التخزين.
New-AzResourceGroupDeployment `
-TemplateSpecId $id `
-ResourceGroupName storageRG `
-namePrefix "demoaccount"
إنشاء نسخة جديدة لمواصفات النموذج.
az ts create \
--name storageSpec \
--version "2.0" \
--resource-group templateSpecRG \
--location "westus2" \
--template-file "c:\Templates\azuredeploy.json"
لنشر الإصدار الجديد، احصل على معرف المورد 2.0
للإصدار.
id=$(az ts show --name storageSpec --resource-group templateSpecRG --version "2.0" --query "id")
توزيع ذلك النموذج. توفير بادئة لاسم حساب التخزين.
az deployment group create \
--resource-group storageRG \
--template-spec $id \
--parameters namePrefix='demoaccount'
في مواصفات القالب، حدد إنشاء إصدار جديد .
قم بتسمية الإصدار الجديد 2.0
وإضافة ملاحظات اختيارياً. ثم حدد قالب تعديل .
استبدل محتويات القالب بالقالب المحدث. حدد مراجعة + حفظ .
حدد حفظ التغييرات .
لنشر الإصدار الجديد، حدد إصدارات
بالنسبة للإصدار الذي تريد نشره، حدد النقاط الثلاث ثم انشر .
املأ الحقول كما فعلت عند نشر الإصدار السابق.
حدد "Review + create ".
حدد إنشاء .
مرة أخرى، يجب إجراء بعض التغييرات على القالب المحلي لجعله يعمل مع مواصفات القالب. نسخ القالب التالي وحفظه محلياً كـ azuredeploy.json.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"functions": [],
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/templateSpecs",
"apiVersion": "2021-05-01",
"name": "storageSpec",
"location": "westus2",
"properties": {
"displayName": "Storage template spec"
},
"tags": {},
"resources": [
{
"type": "versions",
"apiVersion": "2021-05-01",
"name": "2.0",
"location": "westus2",
"dependsOn": [ "storageSpec" ],
"properties": {
"mainTemplate": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Premium_LRS"
],
"metadata": {
"description": "Storage Account type"
}
},
"location": {
"type": "string",
"defaultValue": "[[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
},
"namePrefix": {
"type": "string",
"maxLength": 11,
"defaultValue": "store",
"metadata": {
"description": "Prefix for storage account name"
}
}
},
"variables": {
"storageAccountName": "[[concat(parameters('namePrefix'), uniquestring(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[[variables('storageAccountName')]",
"location": "[[parameters('location')]",
"sku": {
"name": "[[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
],
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[[variables('storageAccountName')]"
}
}
}
},
"tags": {}
}
]
}
],
"outputs": {}
}
لإضافة الإصدار الجديد إلى مواصفات القالب، قم بنشر القالب باستخدام Azure CLI أو PowerShell.
New-AzResourceGroupDeployment `
-ResourceGroupName templateSpecRG `
-TemplateFile "c:\Templates\azuredeploy.json"
az deployment group create \
--resource-group templateSpecRG \
--template-file "c:\Templates\azuredeploy.json"
نسخ القالب التالي وحفظه محلياً إلى ملف اسمه storage.json .
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"functions": [],
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "demo",
"properties": {
"templateLink": {
"id": "[resourceId('templateSpecRG', 'Microsoft.Resources/templateSpecs/versions', 'storageSpec', '2.0')]"
},
"parameters": {
},
"mode": "Incremental"
}
}
],
"outputs": {}
}
نشر القالب الخاص بك مع Azure CLI أو PowerShell.
New-AzResourceGroupDeployment `
-ResourceGroupName storageRG `
-TemplateFile "c:\Templates\storage.json"
az deployment group create \
--resource-group storageRG \
--template-file "c:\Templates\storage.json"
تنظيف الموارد
لتنظيف المورد الذي قمت بنشره في هذه البداية السريعة، حذف كل من مجموعات الموارد التي قمت بإنشائها.
من مدخل Azure، حدد مجموعة الموارد من القائمة اليمنى.
أدخل اسم مجموعة الموارد (templateSpecRG وstorageRG) في حقل التصفية حسب الاسم.
حدد اسم مجموعة الموارد.
حدد Delete resource group من القائمة.
الخطوات التالية
للتعرف على كيفية إنشاء مواصفات قالب تتضمن قوالب مرتبطة، راجع إنشاء مواصفات قالب لقالب مرتبط.