🍇

Bicepを上手く早く書くコツ

2023/06/20に公開

Azure Bicepを上手く/早く書くコツをまとめます。

1. Azure Developer CLIを使う

Azure Developer CLIは2023/5にリリースされたツールです。
https://learn.microsoft.com/ja-jp/azure/developer/azure-developer-cli/overview

BicepのようなIaCコードとアプリのデプロイ方法をひとまとめに定義することができ、
Azure Developer CLIの定める規約に則って作られたプロジェクトでは

azd up

というコマンド一発でクラウド環境の構築とアプリのデプロイまでを一括して行うことが可能です。

利用者側からするとLinuxのパッケージをソースコードをDLしてコンパイルしなくてもrpmやyum等で便利にインストールできるのと同じ感覚でクラウド環境を構築できるようになるため、MSの公式も最近はクラウドのアーキテクチャサンプルをazd形式で配布するようになっています。

アプリの不要なIaCコードを書くだけの場合でもAzure Developer CLI(コマンド名azd)を使うことが可能です。

$ azd init

というコマンドで必要なファイル構成がすぐにできるため、ここを土台に書き始めるのが良いかと思います。

上記コマンドを実行すると以下のような選択肢が現れます。

Initializing a new project (azd init)

? Select a project template:  [Use arrows to move, type to filter]
> Minimal
  Starter - Bicep
  Starter - Terraform
  React Web App with C# API and MongoDB
  React Web App with C# API and SQL Database
  React Web App with Java API and MongoDB
  React Web App with Node.js API and MongoDB
  React Web App with Node.js API and MongoDB - Terraform
  React Web App with Python API and MongoDB
  React Web App with Python API and MongoDB - Terraform
  Containerized React Web App with Java API and MongoDB
  Containerized React Web App with Node.js API and MongoDB
  Containerized React Web App with Python API and MongoDB
  Static React Web App + Functions with C# API and SQL Database
  Static React Web App + Functions with Node.js API and MongoDB
  Static React Web App + Functions with Python API and MongoDB
  Kubernetes React Web App with Node.js API and MongoDB

最小限から自分で書き始めたければMinimalStarter - bicepを、目的に近い構成が選択肢にあればそれを使いましょう。各選択肢でデフォルトで生成コードがかなり丁寧に書かれてるのでBicep等の書き方の参考にするのも良いと思います。

2. リソースリファレンスを見る

Bicepでは

resource rg 'Microsoft.Resources/resourceGroups@2021-04-01' = {
  name: resourceGroupName
  location: location
  tags: tags
}

のようにリソースを記述しますが、このMicrosoft.Resources/resourceGroupsなどのリソース種別毎にリファレンスが整備されています。(例えば上記に該当するリファレンスはこれ
常に対象リソースのリファレンスを開きながら書くのをお勧めします。

3. 先人のコードを見る

リファレンスを見るだけで使い方がわからなかった場合、先人のコードを読みましょう。
Google等で検索してもよいのですが、Githubでリソース名を検索するのもおすすめです

4. 最新版のリソースを使う

Microsoft.Resources/resourceGroups@2021-04-01 のようにリソースにはバージョンがあります。

各リソースのリファレンスにはそのリソースをサポートするバージョンの履歴ページへのリンクが上記のように必ずあるためここを参照して最新版のリソース定義を使うようにしましょう。
Bicepは新機能や新オプションの追加が頻繁にあるため、「〇〇のオプション指定したけどエラーが出る...」みたいなときにはバージョンを新しくすると解決することもよくあります。

IaCコードの寿命も延びるため最新版リソースを使うようにしましょう

Discussion