Dekompilování šablony Azure Resource Manageru JSON do Bicep
Tento článek popisuje, jak dekompilovat šablony Azure Resource Manageru (šablony ARM) do souborů Bicep. Abyste mohli spouštět příkazy převodu , musíte mít nainstalované rozhraní příkazového řádku Bicep.
Poznámka:
V editoru Visual Studio Code můžete přímo vytvořit deklarace prostředků importem z existujících prostředků. Další informace najdete v tématu Příkazy Bicep.
Visual Studio Code umožňuje vložit JSON jako Bicep. Automaticky spustí decompile
příkaz. Další informace najdete v tématu Vložení JSON jako Bicep.
Dekompilování šablony ARM vám pomůže začít s vývojem Bicep. Pokud máte knihovnu šablon ARM a chcete použít Bicep pro budoucí vývoj, můžete je dekompilovat do Bicep. Soubor Bicep ale může potřebovat revize k implementaci osvědčených postupů pro Bicep.
Tento článek ukazuje, jak spustit decompile
příkaz v Azure CLI. Pokud nepoužíváte Azure CLI, spusťte příkaz bez az
spuštění příkazu. Například z az bicep decompile
se stane bicep decompile
.
Dekompilování z JSON do Bicep
Pokud chcete dekompilovat JSON šablony ARM do Bicep, použijte:
az bicep decompile --file main.json
Tento příkaz vytvoří soubor main.bicep ve stejném adresáři jako main.json. Pokud main.bicep existuje ve stejném adresáři, použijte přepínač --force k přepsání existujícího souboru Bicep.
Kód JSON šablony ARM můžete dekompilovat také do Bicep ze sady Visual Studio Code pomocí příkazu v editoru Decompile into Bicep
Visual Studio Code. Další informace naleznete v tématu Decompile into Bicep.
Upozornění
Dekompilace se pokusí převést soubor, ale neexistuje žádné zaručené mapování ze šablon JSON ARM na Bicep. Možná budete muset opravit upozornění a chyby ve vygenerovaném souboru Bicep. Nebo dekompilace může selhat, pokud není možný přesný převod. Vytvořte problém , který nahlásí všechny problémy nebo nepřesné převody.
Příkazy dekompilu a sestavení vytvářejí šablony, které jsou funkčně ekvivalentní. Během implementace ale nemusí být úplně stejné. Převod šablony z FORMÁTU JSON na Bicep a pak zpět do FORMÁTU JSON může vytvořit šablonu s jinou syntaxí než původní šablona. Při nasazení vytvoří převedené šablony stejné výsledky.
Řešení problémů s převodem
Předpokládejme, že máte následující šablonu 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')]"
}
}
}
Když ji dekompilujete, získáte:
@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
Dekompilovaný soubor funguje, ale má několik názvů, které můžete chtít změnit. Proměnná var storageAccountName_var
má neobvyklou konvenci pojmenování. Můžete ho změnit na:
var uniqueStorageName = 'store${uniqueString(resourceGroup().id)}'
Pokud chcete soubor přejmenovat, klikněte pravým tlačítkem myši na název a pak vyberte Přejmenovat symbol. Můžete také použít klávesu F2 .
Prostředek má symbolický název, který můžete chtít změnit. storageAccountName
Místo symbolického názvu použijte exampleStorage
.
resource exampleStorage 'Microsoft.Storage/storageAccounts@2023-04-01' = {
Úplný soubor je:
@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
Export šablony a převodu
Šablonu pro skupinu prostředků můžete exportovat a předat ji přímo do decompile
příkazu. Následující příklady ukazují, jak dekompilovat exportovanou šablonu:
az group export --name "your_resource_group_name" > main.json
az bicep decompile --file main.json
Zobrazení vedle sebe
Bicep Playground umožňuje zobrazit ekvivalentní šablony ARM a soubory Bicep vedle sebe. Pokud chcete zobrazit obě verze, můžete vybrat ukázkovou šablonu , nebo vybrat Možnost Decompile (Decompile ) a nahrát vlastní šablonu ARM a zobrazit ekvivalentní soubor Bicep.
Další kroky
Další informace o všech příkazech rozhraní příkazového řádku Bicep v tuto chvíli najdete v tématu Příkazy rozhraní příkazového řádku Bicep.