ARM şablonu JSON'ı Bicep'e derleme
Bu makalede, Azure Resource Manager şablonlarını (ARM şablonları) Bicep dosyalarına dönüştürme açıklanmaktadır. Dönüştürme komutlarını çalıştırmak için Bicep CLI yüklü olmalıdır.
Not
Visual Studio Code'dan, mevcut kaynaklardan içeri aktararak doğrudan kaynak bildirimleri oluşturabilirsiniz. Daha fazla bilgi için bkz . Bicep komutları.
Visual Studio Code, JSON'ı Bicep olarak yapıştırmanızı sağlar. Otomatik olarak decompile komutunu çalıştırır. Daha fazla bilgi için bkz . JSON'ı Bicep olarak yapıştırma.
ARM şablonunun kodunun derlenmesi, Bicep geliştirmeyi kullanmaya başlamanıza yardımcı olur. ARM şablonları kitaplığınız varsa ve gelecekteki geliştirmeler için Bicep'i kullanmak istiyorsanız, bunları Bicep'e göre koda aktarabilirsiniz. Ancak Bicep dosyasının Bicep için en iyi yöntemleri uygulamak için düzeltmelere ihtiyacı olabilir.
Bu makalede, Komutun Azure CLI'da nasıl çalıştırılacakları decompile
gösterilmektedir. Azure CLI kullanmıyorsanız, komutun başında olmadan az
komutunu çalıştırın. Örneğin az bicep decompile
, bicep decompile
olur.
JSON'dan Bicep'e kaynak kod çözme
ARM şablonu JSON'ı Bicep'e derlemek için şunu kullanın:
az bicep decompile --file main.json
komutu, main.json ile aynı dizinde main.bicep adlı bir dosya oluşturur. Main.bicep aynı dizinde varsa var olan Bicep dosyasının üzerine yazmak için --force anahtarını kullanın.
Ayrıca, Bicep'e Kaynak Koda Dönüştür komutunu kullanarak ARM şablonu JSON'ı Visual Studio Code'dan Bicep'e dönüştürebilirsiniz. Daha fazla bilgi için bkz . Visual Studio Code.
Dikkat
Ayrıştırma, dosyayı dönüştürmeye çalışır, ancak ARM şablonu JSON'dan Bicep'e garantili eşleme yoktur. Oluşturulan Bicep dosyasındaki uyarıları ve hataları düzeltmeniz gerekebilir. Veya doğru bir dönüştürme mümkün değilse, kod çözme başarısız olabilir. Sorunları veya yanlış dönüştürmeleri bildirmek için bir sorun oluşturun.
Kod çözme ve derleme komutları, işlevsel olarak eşdeğer şablonlar oluşturur. Ancak, uygulamada tam olarak aynı olmayabilirler. Bir şablonuN JSON'dan Bicep'e ve sonra da JSON'a dönüştürülmesi, büyük olasılıkla özgün şablondan farklı söz dizimine sahip bir şablona neden olur. Dağıtıldığında, dönüştürülen şablonlar aynı sonuçları üretir.
Dönüştürme sorunlarını düzeltme
Aşağıdaki ARM şablonunuz olduğunu varsayalım:
{
"$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')]"
}
}
}
Bu koda çözüm getirdiğinizde şunları elde edersiniz:
@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
Koda dönüştürülmüş dosya çalışır, ancak değiştirmek isteyebileceğiniz bazı adlara sahiptir. Değişkenin var storageAccountName_var
olağan dışı bir adlandırma kuralı vardır. Şimdi şu şekilde değiştirelim:
var uniqueStorageName = 'store${uniqueString(resourceGroup().id)}'
Dosya genelinde yeniden adlandırmak için ada sağ tıklayın ve ardından Simgeyi yeniden adlandır'ı seçin. F2 kısayol tuşlarını da kullanabilirsiniz.
Kaynağın değiştirmek isteyebileceğiniz sembolik bir adı var. storageAccountName
Sembolik ad yerine kullanınexampleStorage
.
resource exampleStorage 'Microsoft.Storage/storageAccounts@2023-04-01' = {
Dosyanın tamamı:
@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
Şablonu dışarı aktarma ve dönüştürme
Bir kaynak grubu için şablonu dışarı aktarabilir ve ardından doğrudan komutuna decompile
geçirebilirsiniz. Aşağıdaki örnekte, dışarı aktarılan bir şablonun nasıl koda dönüştürülecekleri gösterilmektedir.
az group export --name "your_resource_group_name" > main.json
az bicep decompile --file main.json
Yan yana görünüm
Bicep Playground, eşdeğer ARM şablonunu ve Bicep dosyalarını yan yana görüntülemenizi sağlar. Her iki sürümü de görmek için Örnek Şablon'ı seçebilirsiniz. Alternatif olarak, Kendi ARM şablonunuzu karşıya yüklemek ve eşdeğer Bicep dosyasını görüntülemek için Kaynak koda ayırma'yı seçin.
Sonraki adımlar
Tüm Bicep CLI komutları hakkında bilgi edinmek için bkz . Bicep CLI komutları.