Bicepを試してみた-ストレージアカウント作成編-

はじめに

前回の記事では、Bicep実行環境の準備と、Bicepを用いたリソースグループの作成を行いました。

blog.jbs.co.jp

本記事では、前回作成したリソースグループにストレージアカウントとAzureファイル共有を作成していきます。

前提条件

前回の記事を参照し、Bicepの実行環境の準備とリソースグループが作成されていることを前提とします。

ストレージアカウント作成

Bicepファイルの作成

今回は「storageaccount.bicep」というファイルを用意して、Visual Studio Codeで開きます。

ターゲットスコープの追加

ターゲットスコープは、デフォルトでは「resourceGroup」に設定されます。
今回はリソースグループレベルでのデプロイのため明示的な指定は必要ありませんが、
ソースを一目見ただけでリソースグループへのデプロイだと分かるようにするため、ファイルの先頭に以下を記載します。

targetScope = 'resourceGroup'

ストレージアカウントスぺニットの追加

ファイル内で「storage」と入力し、ストレージアカウントのリソーススぺニットを選択します。

前回の記事同様、パラメーターを追加しました。

ストレージアカウント名は3~24文字である必要があるため、パラメーターで文字数を指定しています。

@minLength(3)
@maxLength(24)
param StorageAccountName string = 'demobicepstorageaccount'

Azureファイル共有スぺニットの追加

今回はAzureファイル共有も作成するため、Azureファイル共有のリソーススぺニットを追加します。
Bicep拡張機能のオートコンプリートでは見つからなかったため、 以下URLを参考にしてリソーススぺニットを追加していきます。

learn.microsoft.com

learn.microsoft.com

リソーススぺニットを2つ追加しました。

依存関係の指定

Azureファイル共有とストレージアカウントには依存関係があるため、依存関係を指定する必要があります。

BicepはARM Templateと比べて依存関係の記載が非常に分かりやすいです。

リソースが依存関係にある場合、parentプロパティを使用することで、依存関係を指定することができます。 learn.microsoft.com

以下のように修正しました。

dependsOnプロパティも使用することができますが、公式では基本的にparentプロパティの使用が推奨されています。 learn.microsoft.com

これでBicepファイルは完成です!(長いため、折りたたみ表示しています)

storageaccount.bicep

targetScope = 'resourceGroup'

// パラメーターを定義
@minLength(3)
@maxLength(24)
param StorageAccountName string = 'demobicepstorageaccount' // ストレージアカウント名

param Location string = resourceGroup().location // ストレージアカウントの場所
param StorageAccountSKU string = 'Standard_LRS' // ストレージアカウントのSKU

@minLength(3)
@maxLength(63)
param ShareName string = 'demo-bicep-files' //Azureファイル共有名

resource storageaccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
  name: StorageAccountName
  location: Location
  kind: 'StorageV2'
  sku: {
    name: StorageAccountSKU
  }
}

resource fileservice 'Microsoft.Storage/storageAccounts/fileServices@2022-05-01' = {
  name: 'default'
  parent: storageaccount
}

resource share 'Microsoft.Storage/storageAccounts/fileServices/shares@2022-05-01' = {
  name: ShareName
  parent: fileservice
}

余談ですが、BicepファイルはARM Templateと異なり、コメントを追加することができます。便利ですね。

param ShareName string = 'demo-bicep-files' //Azureファイル共有名

パラメーターファイルの作成

BicepはARM Template同様パラメーターファイルを指定してデプロイすることができるため、 今回はパラメーターファイルも作成します。 learn.microsoft.com

Visual Studio CodeのBicep拡張機能でパラメーターファイルの生成ができるようなので、実際に生成してみます。

生成してみましたが、"parameters": {}の中身が空でした…

parametersの中身にパラメーターを追加していきます。 作成したパラメーターファイルは以下の通りです。

storageaccount.parameters.json

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "StorageAccountName": {
      "value": "demobicepstorageaccount"
    },
    "Location": {
      "value": "japaneast"
    },
    "StorageAccountSKU": {
      "value": "Standard_LRS"
    },
    "ShareName": {
      "value": "demo-bicep-files"
    }
  }
}

Bicepファイルとパラメーターファイルが完成したので、デプロイしていきます!

デプロイ

まずはAzureにログインします。

az login

今回はリソースグループレベルでのデプロイとなるため、前回とはコマンドが異なります。
以下のコマンドでデプロイします。

az deployment group create --resource-group <リソースグループ名> --template-file <Bicepファイル名> --parameters <パラメータファイル名>

しばらく待つと、JSONが表示されました。デプロイ完了です!

まとめ

今回はBicepを使用して、ストレージアカウントとAzureファイル共有を作成しました。

これまでBicepを使用してみた所管ですが、 ARM Templateの知識が多少あれば、Bicepも抵抗なく始めることができると思いました。
Bicepは情報はまだ少ない印象ですが、慣れてしまえばとても使いやすいため、 積極的に使っていきたいです。

執筆担当者プロフィール
近藤 結梨香

近藤 結梨香(日本ビジネスシステムズ株式会社)

業務では主にAzureに携わっています。映画好きで良く映画館に籠っています。

担当記事一覧