📄
Azure Cloud Shellだけで、BicepとARMを変換できる
はじめに
Bicepという、AzureでIaCを行う際の記法があります。簡単な使い方は以前記事にしました。
内部では、Bicepの記法からAzure Resource Manager(ARM)のjson形式に変換してリソースをデプロイしているようです。なので相互変換が(完全ではないですが)でき、行うにはBicep CLIが必要です。
Bicep CLIはAzure Cloud Shellには既にインストールされていますので、準備不要で使えます。
今回は少し触ってみましたので記事にしました。
概要
Azure Cloud Shellで以下のことが出来ます。
- BicepからARMに変換(Build)
- ARMからBicepに変換(Decompile)
- 保障されていないので、要確認
やってみた
使うコマンドはaz bicep
です。詳細は--help
で確認できます。
準備
Cloud Shellを起動して、サンプルのBicepファイルを作成します。
touch main.bicep
# エディタでファイルを開きます
code main.bicep
コードは以前と同じものです。
main.bicep
targetScope = 'subscription'
resource newRG 'Microsoft.Resources/resourceGroups@2022-09-01' = {
name: 'sampleResourceGroup'
location: 'japaneast'
}
BicepからARMに変換(Build)
作成したBicepファイルをARMに変換するコマンドは以下です。
# main.jsonとして生成されます
az bicep build --file main.bicep
# ファイルを開きます
code main.json
変換結果は以下でした。
main.json
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.26.54.24096",
"templateHash": "10182944597636828594"
}
},
"resources": [
{
"type": "Microsoft.Resources/resourceGroups",
"apiVersion": "2022-09-01",
"name": "sampleResourceGroup",
"location": "japaneast"
}
]
}
ARMからBicepに変換(Decompile)
今度は生成されたARMのファイルをBicepに変換します。
コマンドは以下です、一度ファイル名をmain2.json
にしています。
# 一旦ファイル名を変更
mv main.json main2.json
# main2.bicepとして生成されます
az bicep decompile --file main2.json
# ファイルを開きます
code main2.bicep
以下のようなファイルが生成されました。
main2.bicep
targetScope = 'subscription'
resource sampleResourceGroup 'Microsoft.Resources/resourceGroups@2022-09-01' = {
name: 'sampleResourceGroup'
location: 'japaneast'
}
おわりに
今回はCloud Shellを使って、準備不要でBicepとARMの変換をしてみました。
「Bicepで管理していたけど、急ぎだったからコンソールから作ってしまった」という場合には、大変有用かと思います。
この記事がどなたかのお役に立てれば幸いです。
Discussion