APC 技術ブログ

株式会社エーピーコミュニケーションズの技術ブログです。

株式会社 エーピーコミュニケーションズの技術ブログです。

Azure Bicepの学び方

Azure Bicepが使えそうなのはわかるんだけど、どうやって学習していったらいいんだろう? 先日そんなご質問を受けましたので私がどのように学習していったのかをご紹介します。

公式サイトのドキュメントを読む

とにもかくにも公式サイトを訪れるのが第一歩です。

github.com

最終的にはすべてに目を通すことをお勧めしますが、まずは チュートリアルの最初の部分を読んで雰囲気を掴みましょう。

さらに本ブログで掲載した 入門Azure Bicepもご一読いただけると嬉しいですね

スクラッチでBicepファイルを作成する

PostgreSQLを例にとりましょう。ARM Template ReferenceをみるとJSON形式と並んでBicep形式のサンプルが記載されています。

docs.microsoft.com

こちらを参考にご自身でスクラッチで bicep ファイルを作成してみましょう。

実際にデプロイするだけではなく、作成したファイルからARM Template JSONファイルを作成することができますので、ご自身が書いたBicepファイルがどういった内容になるか確認してみましょう。

az bicep build -f file.bicep

記述した内容とARM Templateの記述の関係性がわかってくると、既存のARM Templateファイルの内容をBicep形式に読み替えることができるようになってきます。これができてくればBicepの大半をマスターしたことになります。

Azure Portalの内容の逆コンパイル

Azure Portalでリソースを作成する際、その内容がARM Templateとしてダウンロードできるのをご存じでしょうか。リソース作成時の確認画面に Automationのテンプレートをダウンロードする というリンクがあります。ここをクリックすることで実行するARM Templateそのものを取得できます。

f:id:turtle2005:20210429210455p:plain
Portalでの確認画面

BicepではARM Template JSONファイルから decompileする機能がありますので、Portalからダウンロードしたtemplate.jsonファイルを使ってdecompileすることができます。

az bicep decompile -f template.json

template.json ファイルから template.bicep ファイルが生成されます。

WARNING: Decompilation is a best-effort process, as there is no guaranteed mapping from ARM JSON to Bicep.
You may need to fix warnings and errors in the generated bicep file(s), or decompilation may fail entirely if an accurate conversion is not possible.

と表示される通り、decompileは必ずしも正確ではありません。今回の例でも手作業で修正しなければならない箇所があります。 さらにPortalで実行するTemplateが複雑な場合 decompile そのものがエラーになることもあります。

また、decompileはあくまでもJSONファイルをそのまま変換するため、モジュール分割などは行ってくれません。この点はご自身で作業する必要があります。

とはいえ、ある程度参考にできますし、スクラッチから作成する手間も省くことができます。

いくつかのリソースを組み合わせてデプロイする

簡単な例の場合はここまでの内容でわりと早くキャッチアップできてくると思います。 あとは経験あるのみです。まずは何かご自身でやりたいことを想定してみましょう。

入門Azure Bicep 3、4で示したようなVNetやPrivate Linkを足してみてもよいです。 実際の例はGitHubでも公開しています。

github.com

最初はどうすればいいかわからないと思いますので、まずはAzure Portalでデプロイしてみましょう。その際に Automation テンプレートのダウンロード をお忘れなく。このファイルのtemplate.jsonを参照し、 decompileではなく、ご自身でやりたいことをスクラッチで書き起こしてみましょう。さらにいくつかのものを組み合わせてやることも考えてみましょう。そうすると if文のような条件式、 配列などのループといったことも欲しいと感じることでしょう。ここであらためて公式ドキュメントをあたってみると実はそうした機能も用意されています。

ここまでくれば普通のプログラミング言語と同じです。やりたいことが出てきたらそのやり方を公式ドキュメントやネット情報から習得していく。習得したものはご自身の資産として集積していく。どんどん共通・汎用的なファイルが作成されてくると思います。

今後このブログでも、いくつかの事例等をご紹介していきたいと考えていますのでブログを引き続きフォローしていただくこともお忘れなく!!