2
Help us understand the problem. What are the problem?

【Azure】Bicepを用いて環境を切り替えながらストレージアカウントをデプロイする

1. はじめに

1-1 ご挨拶

初めまして、井村と申します。
今更ですが Azure リソースをデプロイするドメイン固有言語 (DSL) であるBicepが使いやすいそうです。その為、mslearnを用いて勉強をしてみました。本番環境と開発環境へAzureサービスをリリースする際に、Azureサービスのスペックを切り替えるBicepテンプレートを作成します。

1-2 対象読者

  • Azureに興味がある
  • Bicepに興味がある

1-3 成果物

Bicepテンプレートを作成し、成果物としては下図の通りストレージアカウントを作成します。ポイントは2点です。
・リソースグループと同様のロケーションで作成
・本番環境はゾーン冗長、開発環境はローカル冗長で作成

構成図.png

※事前にAzureアカウントは作成済みです。Azure CLI、Bicepはインストール済みです。

2. 構築

それでは、構築始めます。リソースグループはAzure CLIで作成します。

2-1 リソースグループの作成

bash
# Azureへログイン
az login

#変数宣言
myResourceGroupDev=dev-rg
myResourceGroupPro=pro-rg

locationDev=japanwest
locationPro=japaneast

# 開発環境リソースグループの作成
az group create -l $locationDev -n $myResourceGroupDev

# 本番環境リソースグループの作成
az group create -l $locationPro -n $myResourceGroupPro

上記を実行して東日本リージョン(本番環境)、西日本リージョン(開発環境)それぞれにリソースグループを作成します。
続いてストレージアカウントを作成するBicepテンプレートになります。

2-2 Bicepテンプレートの作成

以下がBicepテンプレートになります。Bicepテンプレートを作成するときは、Visual Studio CodeにBicep拡張機能をインストールして作成するのが便利です。

Bicepテンプレート.png

上記Bicepテンプレート少し解説します。
2行目のallowedで本番環境なら'pro'、開発環境なら'dev'を選択します。Bicepテンプレートをデプロイする際に指定します。
9行目の'resourceGroup()'関数にてリソースグループのロケーションを取得します。
15行目はif文みたいなものです。2行目で'pro'を指定した場合、'Standard_ZRS'が選択されます。これがゾーン冗長になります。
18行目以下がストレージアカウントの設定になります。上記指定したパラメータ、変数を代入しています。

コピーされる方は以下にテンプレートを折りたたんでいます。

元のBicepテンプレート


@description('Bash実行時に本番環境または開発環境を選択する')
@allowed([
  'pro'
  'dev'
])
param environmentType string

@description('リージョンはリソースグループに依存する')
param location string = resourceGroup().location

@description('ストレージアカウントの名前。 環境 + st + tkimura')
param storageAccountName string = '${environmentType}sttkimura'

@description('本番環境はゾーン冗長、開発環境はローカル冗長')
var storageAccountSkuName = (environmentType == 'pro') ? 'Standard_ZRS' : 'Standard_LRS'

@description('ストレージアカウント生成')
resource storageAccount 'Microsoft.Storage/storageAccounts@2022-05-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: storageAccountSkuName
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}


2-3 ストレージアカウントをデプロイ

以下コマンドをbashで実行します。

bash
# Azureへログイン
az login

#変数宣言
myResourceGroupDev=dev-rg
myResourceGroupPro=pro-rg

# 開発環境でのストレージアカウント作成
az deployment group create --resource-group $myResourceGroupDev --template-file main.bicep --parameters environmentType=dev

# 本番環境でのストレージアカウント作成
az deployment group create --resource-group $myResourceGroupPro --template-file main.bicep --parameters environmentType=pro

上記コマンドにて'--parameters'の引数はBicepテンプレートで2行目で指定する'pro'か'dev'に該当します。

3. 確認

3-1 開発環境のリソースグループ

dev-rg.jpg

場所は西日本リージョンで作成されてますね。

3-2 開発環境のストレージアカウント

dev-st.jpg

場所は西日本リージョン、レプリケーションはローカル冗長(LRS)で作成されてますね。

3-3 本番環境のリソースグループ

pro-rg.jpg

場所は東日本リージョンで作成されてますね。

3-4 本番環境のストレージアカウント

pro-st.jpg

場所は東日本リージョン、レプリケーションはゾーン冗長(ZRS)で作成されてますね。

4. おわりに

本記事を最後まで読んで頂きましてありがとうございます。
初めてBicepを触りましたが、ARMテンプレートをごりごり操作するより、
だいぶ使いやすい印象でした。しばらく勉強しようと思います。

5. 参考記事

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
2
Help us understand the problem. What are the problem?