ARM-sablon JSON-ból Bicep-be való lebontása

Ez a cikk az Azure Resource Manager-sablonok (ARM-sablonok) Bicep-fájlokra bontását ismerteti. A konvertálási parancsok futtatásához telepítve kell lennie a Bicep CLI-nek .

Megjegyzés

A Visual Studio Code-ból közvetlenül hozhat létre erőforrás-deklarációkat a meglévő erőforrások importálásával. További információ: Bicep-parancsok.

A Visual Studio Code lehetővé teszi, hogy a JSON-t Bicepként illessze be. Automatikusan futtatja a decompile parancsot. További információ: JSON beillesztése Bicepként.

Az ARM-sablonok felbontásával megkezdheti a Bicep-fejlesztést. Ha rendelkezik ARM-sablontárral, és a Bicep-et szeretné használni a jövőbeli fejlesztéshez, a Bicep-hez bonthatja őket. Előfordulhat azonban, hogy a Bicep-fájlnak változatokra van szüksége a Bicep ajánlott eljárásainak megvalósításához.

Ez a cikk bemutatja, hogyan futtathatja a parancsot az decompile Azure CLI-ben. Ha nem az Azure CLI-t használja, futtassa a parancsot az anélkül, hogy a parancs elején futna. Például a következő leszbicep decompile: az bicep decompile .

Lebontás JSON-ról Bicepre

Az ARM-sablon JSON-ból Bicep-be való lebontásához használja a következőt:

az bicep decompile --file main.json

A parancs létrehoz egy main.bicep nevű fájlt ugyanabban a könyvtárban, mint a main.json fájl. Ha a main.bicep ugyanabban a könyvtárban található, a --force kapcsolóval írja felül a meglévő Bicep-fájlt.

Az ARM-sablon JSON-sablonját a Visual Studio Code-ból a Bicep-be történő lebontás paranccsal is le lehet bontani a Bicep-be. További információ: Visual Studio Code.

Figyelemfelhívás

A felbontás megpróbálja konvertálni a fájlt, de nincs garantált leképezés az ARM-sablon JSON-járól a Bicepre. Előfordulhat, hogy ki kell javítania a létrehozott Bicep-fájl figyelmeztetéseit és hibáit. Vagy a felbontás meghiúsulhat, ha a pontos átalakítás nem lehetséges. Ha bármilyen problémát vagy pontatlan konverziót szeretne jelenteni, hozzon létre egy problémát.

A lebontási és buildelési parancsok funkcionálisan egyenértékű sablonokat hoznak létre. Előfordulhat azonban, hogy a megvalósítás során nem teljesen azonosak. Ha JSON-ról Bicepre konvertál egy sablont, majd vissza a JSON-ra, az valószínűleg az eredeti sablontól eltérő szintaxisú sablont eredményez. Az üzembe helyezéskor a konvertált sablonok ugyanazokat az eredményeket hozzák létre.

Konvertálási problémák elhárítása

Tegyük fel, hogy a következő ARM-sablonnal rendelkezik:

{
  "$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": "2019-06-01",
      "name": "[variables('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "properties": {}
    }
  ],
  "outputs": {
    "storageAccountName": {
      "type": "string",
      "value": "[variables('storageAccountName')]"
    }
  }
}

A felbontásakor a következőt kapja:

@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_var = 'store${uniqueString(resourceGroup().id)}'

resource storageAccountName 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: storageAccountName_var
  location: location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

output storageAccountName string = storageAccountName_var

A bontott fájl működik, de vannak olyan nevei, amelyeket érdemes lehet módosítani. A változó var storageAccountName_var elnevezése szokatlan. Módosítsa a következőre:

var uniqueStorageName = 'store${uniqueString(resourceGroup().id)}'

Ha át szeretné nevezni a fájlt, kattintson a jobb gombbal a névre, majd válassza az Átnevezés szimbólumot. Az F2 gyorsbillentyűt is használhatja.

Az erőforrásnak van egy szimbolikus neve, amelyet érdemes lehet módosítani. storageAccountName A szimbolikus név helyett használja a következőtexampleStorage: .

resource exampleStorage 'Microsoft.Storage/storageAccounts@2019-06-01' = {

A teljes fájl a következő:

@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@2019-06-01' = {
  name: uniqueStorageName
  location: location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {}
}

output storageAccountName string = uniqueStorageName

Sablon exportálása és konvertálása

Exportálhatja egy erőforráscsoport sablonját, majd közvetlenül a decompile parancsnak adhatja át. Az alábbi példa bemutatja, hogyan bonthat le egy exportált sablont.

az group export --name "your_resource_group_name" > main.json
az bicep decompile --file main.json

Egymás melletti nézet

A Bicep Playground lehetővé teszi, hogy egymás mellett tekintse meg az egyenértékű ARM-sablonokat és Bicep-fájlokat. A mintasablon kiválasztásával mindkét verziót megtekintheti. Vagy válassza a Decompile lehetőséget a saját ARM-sablon feltöltéséhez és a megfelelő Bicep-fájl megtekintéséhez.

Következő lépések

Az összes Bicep CLI-parancsról további információt a Bicep CLI-parancsok című témakörben talál.