🐱

既存のApp ServiceをBicepでテンプレート化してみたメモ

2022/10/16に公開

Azure App Service を使って作成したサービスを Bicep でテンプレート化したいと思った時に、Bicep ファイルを 1 から書くのは嫌だったので色々読んでみたところ、ARM テンプレートのエクスポート → Bicep ファイルへのデコンパイルができるらしいのでやってみた際のメモ

ARM テンプレートのデコンパイル機能

手順

以下手順で Bicep ファイルでのテンプレート化が可能

  1. 既存リソースから ARM テンプレートのエクスポート
  2. エクスポートされた ARM テンプレートを Bicep ファイルにデコンパイル
  3. Bicep ファイルの修正

ARM テンプレートのエクスポート

Azure CLI、Azure Portal どちらからでもエクスポート可能だが、bicep もどうせ CLI で実行するしテンプレート化するリソースグループ名指定すればいいだけなので Azure CLI がおすすめ

https://learn.microsoft.com/ja-jp/azure/azure-resource-manager/bicep/decompile?tabs=azure-cli#export-template-and-convert

Azure CLI の場合

下記コマンドで簡単にエクスポート可能

az group export --name <resouce-group-name> > <filename>.json

Azure Portal の場合

任意のリソース管理画面に飛んでサイドメニューの下の方を見ると「テンプレートのエクスポート」があるのでそこからエクスポート可能

ARM テンプレートのデコンパイル

出力された json ファイルから下記コマンドで Bicep ファイルを出力する

az bicep decompile --file <filename>.json

アプリケーション設定

App Service のリソースをエクスポートしデコンパイルした際、アプリケーション設定がエクスポートされていなかった。

Bicep ファイルの App Service の項目にアプリケーション設定を追加する。

resource website 'Microsoft.Web/sites@2022-03-01' = {
    //省略
    properties: {
        //省略
        appSettings: [
            {
                name: 'Name'
                value: 'Value'
            }
        ]
    }
}

参考

Azure のクイックスタートテンプレートのリポジトリにさまざまなケースの Bicep ファイルが公開されているのでとても参考になる。

https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts

https://learn.microsoft.com/ja-jp/azure/app-service/samples-bicep

GitHubで編集を提案

Discussion