إلغاء التحويل البرمجي لقالب JSON Azure Resource Manager إلى Bicep
توضح هذه المقالة كيفية إلغاء التحويل البرمجي لقوالب Azure Resource Manager (قوالب ARM) إلى ملفات Bicep. يجب أن يكون لديك Bicep CLI مثبتاً لتشغيل أوامر التحويل.
إشعار
من Visual Studio Code، يمكنك إنشاء إعلانات الموارد مباشرة عن طريق الاستيراد من الموارد الموجودة. لمزيد من المعلومات، راجع أوامر Bicep.
يمكنك Visual Studio Code من لصق JSON ك Bicep. يقوم تلقائيا بتشغيل decompile
الأمر. لمزيد من المعلومات، راجع لصق JSON ك Bicep.
يساعدك إلغاء تحويل البرمجية لقالب ARM على البدء في تطوير Bicep. إذا كانت لديك مكتبة من قوالب ARM وترغب في استخدام Bicep للتطوير المستقبلي، فيمكنك إلغاء تحويل برمجية تجميعها إلى Bicep. ومع ذلك، قد يحتاج ملف Bicep إلى مراجعات لتنفيذ أفضل الممارسات لـ Bicep.
توضح هذه المقالة كيفية تشغيل الأمر decompile
في Azure CLI. إذا كنت لا تستخدم Azure CLI، فشغِّل الأمر دون az
في بداية الأمر. على سبيل المثال، يصبح az bicep decompile
bicep decompile
.
إلغاء تحويل برمجية من JSON إلى Bicep
لإلغاء التحويل البرمجي لقالب ARM JSON إلى Bicep، استخدم:
az bicep decompile --file main.json
ينشئ هذا الأمر ملفا باسم main.bicep في نفس الدليل مثل main.json. إذا كان main.bicep موجودا في نفس الدليل، فاستخدم --force switch للكتابة فوق ملف Bicep الموجود.
يمكنك أيضا إلغاء تحويل قالب ARM JSON إلى Bicep من Visual Studio Code باستخدام Decompile into Bicep
الأمر في Visual Studio Code. لمزيد من المعلومات، راجع إلغاء التحويل البرمجي إلى Bicep.
تنبيه
يحاول إلغاء التحويل البرمجي تحويل الملف، ولكن لا يوجد تعيين مضمون من قوالب JSON ARM إلى Bicep. قد تحتاج إلى إصلاح التحذيرات والأخطاء في ملف Bicep الذي تم إنشاؤه. أو، يمكن أن تفشل عملية إلغاء تحويل برمجية التجميع إذا لم يكن التحويل الدقيق ممكناً. إنشاء مشكلة للإبلاغ عن أي مشكلات أو تحويلات غير دقيقة.
ينتج الأمران decompile وbuild قوالب مكافئة وظيفياً. ومع ذلك، قد لا تكون هي نفسها تماما أثناء التنفيذ. قد يؤدي تحويل قالب من JSON إلى Bicep ثم العودة إلى JSON إلى إنتاج قالب ببناء جملة مختلف عن القالب الأصلي. عند التوزيع، تنتج القوالب المحولة نفس النتائج.
إصلاح مشاكل التحويل
افترض أن لديك نموذج ARM التالي:
{
"$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": "2023-04-01",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
],
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[variables('storageAccountName')]"
}
}
}
عند إلغاء تحويل برمجيتها، تحصل على:
@allowed([
'Standard_LRS'
'Standard_GRS'
'Standard_ZRS'
'Premium_LRS'
])
@description('Storage Account type')
param storageAccountType string = 'Standard_LRS'
@description('Location for all resources.')
param location string = resourceGroup().location
var storageAccountName = 'store${uniqueString(resourceGroup().id)}'
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: storageAccountName
location: location
sku: {
name: storageAccountType
}
kind: 'StorageV2'
properties: {}
}
output storageAccountName string = storageAccountName
يعمل الملف الذي تم إلغاء تحويل برمجيته، ولكن لديه بعض الأسماء التي قد ترغب في تغييرها. المتغير var storageAccountName_var
له اصطلاح تسمية غير معتاد. يمكنك تغييره إلى:
var uniqueStorageName = 'store${uniqueString(resourceGroup().id)}'
لإعادة التسمية عبر الملف، انقر بزر الماوس الأيمن فوق الاسم، ثم حدد إعادة تسمية الرمز. يمكنك أيضا استخدام مفتاح التشغيل السريع F2 .
المورد له اسم رمزي قد ترغب في تغييره. بدلاً من storageAccountName
للاسم الرمزي، استخدم exampleStorage
.
resource exampleStorage 'Microsoft.Storage/storageAccounts@2023-04-01' = {
الملف الكامل هو:
@allowed([
'Standard_LRS'
'Standard_GRS'
'Standard_ZRS'
'Premium_LRS'
])
@description('Storage Account type')
param storageAccountType string = 'Standard_LRS'
@description('Location for all resources.')
param location string = resourceGroup().location
var uniqueStorageName = 'store${uniqueString(resourceGroup().id)}'
resource exampleStorage 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: uniqueStorageName
location: location
sku: {
name: storageAccountType
}
kind: 'StorageV2'
properties: {}
}
output storageAccountName string = uniqueStorageName
تصدير القالب وتحويله
يمكنك تصدير القالب لمجموعة موارد ثم تمريره مباشرة إلى decompile
الأمر . توضح الأمثلة التالية كيفية إلغاء التحويل البرمجي لقالب تم تصديره:
az group export --name "your_resource_group_name" > main.json
az bicep decompile --file main.json
عرض جنباً إلى جنب
يسمح لك Bicep Playground بعرض قوالب ARM المكافئة وملفات Bicep جنبا إلى جنب. يمكنك تحديد نموذج القالب لمشاهدة كلا الإصدارين، أو تحديد Decompile لتحميل قالب ARM الخاص بك وعرض ملف Bicep المكافئ.
الخطوات التالية
للتعرف على جميع أوامر Bicep CLI في هذا الوقت، راجع أوامر Bicep CLI.