APC 亀崎です。 前回の入門Azure Bicep 1に続いて第2回目となります。
Bicep Step by Step
Azure BicepはAzureリソースデプロイを宣言的に記述できるDSLです。2021年3月にAzコマンドなどにも組み込まれ、Microsoftのドキュメントでも紹介され始めているので見かけた方も増えてきたのではないでしょうか。
前回はAzure Bicepをインストールし、Azure Database for PostgreSQLをデプロイしました。 今回はあらためて設定ファイルの内容を確認していきましょう。
紹介しているコードは以下の3つの部分からなります。
1行目~21行目 入力値指定
param
で指定する項目はコマンドラインの--parameters オプションなどで指定することができる内容です。
それぞれの項目は @
で始まるアノテーションで情報を付加することができます。
@description('comment')
はその入力項目の用途や意味を指定できるものです。
@allowed([ ... ])
はプログラミング言語で言えばenumに該当するもので指定できる入力値を制限するものです。12行目~16行目の例では Basic、 GeneralPurpose、MemoryOptimizedの3つの文字列のいずれかしか指定することができず、それ以外の文字列を指定するとエラーとなります。
@secure()
は主にパスワードなど表示したくない文字列に指定します。このアノテーションを指定した場合、以下の画面のようにAzure Portalの画面等で表示されません。
このほか、文字数制限をする @minLength()/@maxLength()
、数値の上限下限を制限する @maxValue()/@minValue()
といったものが指定できます。範囲外の値を指定した場合はエラーとなります。
詳細は Bicepのドキュメント を確認してください。
23行目~24行目 内部変数指定
外部指定はさせたくない変数を指定する場合は var
で指定します。リソースの定義においては param
と var
に違いはありません。
26行目~40行目 デプロイするリソースの定義
デプロイするPostgreSQL リソースの宣言になります。 こちらで指定すべき内容、設定可能可能な内容は MicrosoftのTemplate Referenceに記載されています。PostgreSQLの場合はこちらになります。
変数を参照する
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の真価は複数のリソースをデプロイし、さらにそれを再利用するところにあります。 次回以降でそうした例を紹介していきたいと思います。