APC 技術ブログ

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

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

入門Azure Bicep 2

f:id:turtle2005:20210609141446p:plain

APC 亀崎です。 前回の入門Azure Bicep 1に続いて第2回目となります。

Bicep Step by Step

Azure BicepはAzureリソースデプロイを宣言的に記述できるDSLです。2021年3月にAzコマンドなどにも組み込まれ、Microsoftのドキュメントでも紹介され始めているので見かけた方も増えてきたのではないでしょうか。

github.com

前回はAzure Bicepをインストールし、Azure Database for PostgreSQLをデプロイしました。 今回はあらためて設定ファイルの内容を確認していきましょう。

入門Azure Bicep

紹介しているコードは以下の3つの部分からなります。

1行目~21行目 入力値指定

param で指定する項目はコマンドラインの--parameters オプションなどで指定することができる内容です。
それぞれの項目は @ で始まるアノテーションで情報を付加することができます。
@description('comment') はその入力項目の用途や意味を指定できるものです。
@allowed([ ... ]) はプログラミング言語で言えばenumに該当するもので指定できる入力値を制限するものです。12行目~16行目の例では Basic GeneralPurposeMemoryOptimizedの3つの文字列のいずれかしか指定することができず、それ以外の文字列を指定するとエラーとなります。
@secure() は主にパスワードなど表示したくない文字列に指定します。このアノテーションを指定した場合、以下の画面のようにAzure Portalの画面等で表示されません。

f:id:turtle2005:20210411180422p:plain
Azure Portalのデプロイ表示

このほか、文字数制限をする @minLength()/@maxLength()、数値の上限下限を制限する @maxValue()/@minValue() といったものが指定できます。範囲外の値を指定した場合はエラーとなります。

詳細は Bicepのドキュメント を確認してください。

23行目~24行目 内部変数指定

外部指定はさせたくない変数を指定する場合は var で指定します。リソースの定義においては paramvar に違いはありません。

26行目~40行目 デプロイするリソースの定義

デプロイするPostgreSQL リソースの宣言になります。 こちらで指定すべき内容、設定可能可能な内容は MicrosoftのTemplate Referenceに記載されています。PostgreSQLの場合はこちらになります。

docs.microsoft.com

変数を参照する

paramやvarの変数は、それぞれ他の項目で参照することができます。 たとえば30行目では name: skuName となっています。 変数をそのまま利用する場合は skuName のようになにもつけずに参照することができます。 また、前後に文字を付加したり、複数の変数を組み合わせて利用する場合は ${x} のように記載します。24行目の '${skuNamePrefix}_${skuFamily}_${skuCapacity}' がその例です。 また、== や ?: などの条件演算子も利用可能です。
23行目の skuNamePrefix = skuTier == 'GeneralPurpose' ? 'GP' : (skuTier == 'Basic' ? 'B' : 'OM')

  • skuTierが GeneralPurposeだった場合は GPを、
  • Basicだったら Bを、
  • それ以外はOM

skuNamePrefixに代入するというものです。

さらにその先へ

いかがでしょうか。どこかプログラミングっぽいところもありつつARM Templateの記載ができることがイメージできましたでしょうか。しかし満足するのはまだ早いです。 1つのリソースをデプロイするくらいならAzコマンドで実行することもできますし、まだARM Templateをそのまま利用することとそれほど差がありません(それでも多少見やすさは向上していると思いますが) Azure Bicepの真価は複数のリソースをデプロイし、さらにそれを再利用するところにあります。 次回以降でそうした例を紹介していきたいと思います。