📝
Bicep で Azure Files のディレクトリを作る
はじめに
Azure Files のリソース作成時にディレクトリまで作るメモ。
Bicep
リファレンスを見てもそれらしい定義はありません。
Azure Portal の「テンプレートのダウンロード」でも、ディレクトリは含まれていません。
そもそも ARM Template が対応していない?
Azure CLI
Azure CLI ではディレクトリ作成がサポートされています。
az storage directory create --name <directory_name> --account-name <storage_account_name> --share-name <file_share_name> --account-key <storage_account_key>
従って、デプロイスクリプトでこのコマンドを実行すれば実現できそうです。
デプロイスクリプト
必要最小限の定義は以下のようになります。
resource script 'Microsoft.Resources/deploymentScripts@2020-10-01' = {
name: 'CreateFileShareDirectory'
location: location
kind: 'AzureCLI'
properties: {
azCliVersion: '2.39.0'
retentionInterval: 'P1D'
scriptContent: 'az storage directory create --name <directory_name> --account-name <storage_account_name> --share-name <file_share_name> --account-key <storage_account_key>'
}
}
アカウントキーなどは環境変数や引数として Azure CLI に渡すことができます。
@description('location')
param location string = resourceGroup().location
@description('Storage account name')
param storageAccountName string = 'fileshare${uniqueString(resourceGroup().id)}'
// Create storage Account
resource sa 'Microsoft.Storage/storageAccounts@2021-09-01' = {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
}
// Create file share
param shareName string = 'share'
resource share 'Microsoft.Storage/storageAccounts/fileServices/shares@2021-09-01' = {
name: '${sa.name}/default/${shareName}'
}
// Create file share directory.
// ${shareName}/foo/bar
param dir1 string = 'foo'
param dir2 string = 'bar'
var accountKey = listKeys(sa.id, sa.apiVersion).keys[0].value
resource script 'Microsoft.Resources/deploymentScripts@2020-10-01' = {
name: 'CreateFileShareDir'
location: location
kind: 'AzureCLI'
properties: {
azCliVersion: '2.29.0'
retentionInterval: 'P1D'
arguments: '${dir1} ${dir2}'
environmentVariables: [
{
name: 'accountName'
value: sa.name
}
{
name: 'shareName'
value: shareName
}
{
name: 'accountKey'
value: accountKey
}
]
scriptContent: '''
az storage directory create --name $1 --account-name $accountName --share-name $shareName --account-key $accountKey
az storage directory create --name $1/$2 --account-name $accountName --share-name $shareName --account-key $accountKey
'''
}
}
デプロイします。
az deployment group create -g bicep -f share.bicep
できました。
おわりに
カスタムスクリプトを使って、Azure Files のファイル共有ディレクトリを作ることができました。
Discussion