APC 技術ブログ

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

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

入門Azure Bicep 4

f:id:turtle2005:20210609141446p:plain

APC 亀崎です。前回 に続き、第4回になります。

モジュールを使って定義ファイルを再利用する

Azure BicepはAzureリソースデプロイを宣言的に記述できるDSLです。Azureのリソースデプロイ用の定義ファイルARM(Azure Resource Management) Templateを拡張したものになります。

前回はモジュールの利用を簡単に紹介しました。コード一式はこちらに公開しています。

postgresq.bicep は第1回、第2回で紹介したものとほぼ同じ内容で、resource を使用してAzure Database for PostgreSQLをデプロイします。これにVNETやPrivate Linkといったリソースを追加するようにしています。VNetやPrivate Linkもそれぞれ個別のファイルで resource から始まる文で定義しています。

これらをまとめ、組み合わせて利用しているのが以下のものです。

deploy azure database for PostgreSQL with private…

  • 14行目~21行目はvnetの参照呼出し

  • 23行目~31行目はpostgresqlの参照呼出し

  • 36行目~50行目はprivate endpointの参照呼出し

  • 52行目~58行目はprivate dnsの参照呼出し

  • 60行目~75行目はdns record追加の参照呼出し

になっています。vnetやpostgresqlのファイルについてはそれぞれ個別のリソースの定義方法について記述し、それを組み合わせて利用するかを呼び出し側のファイルに定義することで、個別のリソース定義ファイルの再利用性が高まります。

さて、こうしたリソースの組み合わせをする際、リソース間で依存関係があることはありませんか? Bicepではそうした依存関係も簡単に記述することができます。

上記の例では private endpointの定義で行われています。40行目では vnetで定義したsubnetのIDを参照、43行目ではpostgresqlのリソースIDを参照しています。

ARM Templateではこうした依存関係がある場合は明示的に dependsOn で定義しなければなりませんがBicepでは別リソースを参照すると自動的に依存関係が挿入されるためほとんど意識する必要がありません。ただ、明示的に記述することもできます。それが71行目~74行目です。こちらではリソース定義ではpostgresqやendpointの内容を直接参照していませんが、間接的にこれらのリソースに依存しています。このため明示的に dependsOn を記述しました。

あとはこのファイルを利用して デプロイを実行するだけ。実行の際にappNameというパラメータに 別の名称を指定すると同じ内容でリソースをデプロイできます。例えば開発環境用のをもう1つ作るということも簡単です。

いかがでしたでしょうか。これまで4回、Azure Bicepを利用したリソースのデプロイの記述内容をご紹介してきました。簡単に定義できることが少しはわかっていただけましたでしょうか。

今後もBicepの書き方やサンプルなどを不定期にご紹介していきたいと思いますので、ご期待いただければと思います。