Azure ARMテンプレートをBicepに変換してデプロイを行う手順
Bicepとは
Azure リソースをデプロイするための Bicep 言語 - Azure Resource Manager | Microsoft Docs
Bicep は、宣言型の構文を使用して Azure リソースをデプロイするドメイン固有言語 (DSL) です。 簡潔な構文、信頼性の高いタイプ セーフ、およびコードの再利用のサポートが提供されます。 Microsoft では、Bicep によって Azure のコード ソリューションとしてのインフラストラクチャに最適な作成エクスペリエンスが提供されると信じています。
これまでのJson形式だったARMテンプレートより、完結で分かりやすくなった。
かつ、ARMテンプレートをDecompileすることでBicepテンプレートとして出力できるため今までの資産が無駄にならない。
変換
az cli
$ az bicep decompile --file main.json
変換前JSONファイル例
main.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."
}
}
},
"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')]"
}
}
}
変換後Bicepファイル例
main.bicep
@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
Bicepデプロイ方法
az cli
$ az deployment group create --resource-group cloudshelltest --template-file main.bicep
パラメータファイルがある場合はJSON形式のまま使用する
$ az deployment group create --resource-group cloudshelltest --template-file main.bicep --parameters main-parameters.json