【Bicep入門#15】ARMテンプレートをBicepに変換する方法

この記事の内容

  • ARMテンプレートしか存在しないリソースをBicepで管理したいときの対処法を紹介します
  • az bicep decompile コマンドを使ったARMテンプレート→Bicep変換の手順を解説します
  • 変換はベストエフォート方式であり、出力結果は必ず自分で確認する必要があります
  • 変換後のBicepファイルにはパラメーターや変数が自動生成されます
  • このコマンドを知っておくことで、Bicep統一環境への移行がスムーズになります

背景:ARMテンプレートはあるのにBicepがない問題

Bicepで環境を構築していると、よくある悩みが「ARMテンプレートは公開されているのにBicepファイルがない」という状況です。

たとえばVMの作成などよく使われるリソースはBicepテンプレートも提供されていますが、マイナーなリソースや古いテンプレートではBicepファイルが用意されていないケースが多くあります。

そのような場合に、ARMテンプレートをそのまま使うという選択肢もあります。しかしARMテンプレートはBicepに比べて冗長で読みにくく、Bicepで統一管理している環境に混在させるのは望ましくありません。

そこで活用できるのが、ARMテンプレートをBicepに変換する decompile(デコンパイル) という手法です。


decompileコマンドの使い方

変換は az bicep decompile コマンドで行います。変換したいARMテンプレートのJSONファイルを --file オプションで指定するだけです。

az bicep decompile --file template.json

コマンドを実行すると、指定したJSONファイルに対応するBicepファイルが自動的に生成されます。


変換結果の確認

生成されたBicepファイルには、元のARMテンプレートの内容に基づいてパラメーターや変数が自動で作成されます。必須パラメーターとして adminUsername などが含まれていたり、オプション扱いのパラメーターが適切に整理されていたりと、それなりに実用的なBicepファイルが出力されます。


注意点:ベストエフォート方式

decompileコマンドを実行すると、以下のような警告が表示されることがあります。

このプロセスはベストエフォートです。変換できる限り頑張りますが、結果を保証するものではありません。

つまり、変換が成功しても動作を保証するものではないということです。変換後のBicepファイルは必ず内容を確認し、実際にデプロイできるかどうかをテスト環境で検証するようにしてください。


まとめ

ARMテンプレートしか存在しないリソースをBicepで管理したい場合は、az bicep decompile コマンドを使うことでBicepファイルに変換できます。

az bicep decompile --file template.json

変換結果はパラメーターや変数が自動生成され、Bicepファイルとして理解しやすい形になります。ただしベストエフォート方式のため、生成されたファイルは必ず自分で確認・検証することが重要です。

Bicepで環境を統一している場合、このコマンドを知っておくことで既存のARMテンプレート資産をそのまま活用できるようになります。ぜひ覚えておきましょう。