1. はじめに
1-1 ご挨拶
初めまして、井村と申します。
今更ですが Azure リソースをデプロイするドメイン固有言語 (DSL) であるBicepが使いやすいそうです。その為、mslearnを用いて勉強をしてみました。本番環境と開発環境へAzureサービスをリリースする際に、Azureサービスのスペックを切り替えるBicepテンプレートを作成します。
1-2 対象読者
- Azureに興味がある
- Bicepに興味がある
1-3 成果物
Bicepテンプレートを作成し、成果物としては下図の通りストレージアカウントを作成します。ポイントは2点です。
・リソースグループと同様のロケーションで作成
・本番環境はゾーン冗長、開発環境はローカル冗長で作成
※事前にAzureアカウントは作成済みです。Azure CLI、Bicepはインストール済みです。
2. 構築
それでは、構築始めます。リソースグループはAzure CLIで作成します。
2-1 リソースグループの作成
# 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テンプレート少し解説します。
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で実行します。
# 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 開発環境のリソースグループ
場所は西日本リージョンで作成されてますね。
3-2 開発環境のストレージアカウント
場所は西日本リージョン、レプリケーションはローカル冗長(LRS)で作成されてますね。
3-3 本番環境のリソースグループ
場所は東日本リージョンで作成されてますね。
3-4 本番環境のストレージアカウント
場所は東日本リージョン、レプリケーションはゾーン冗長(ZRS)で作成されてますね。
4. おわりに
本記事を最後まで読んで頂きましてありがとうございます。
初めてBicepを触りましたが、ARMテンプレートをごりごり操作するより、
だいぶ使いやすい印象でした。しばらく勉強しようと思います。