问题描述
我需要通过ARM模板存储帐户创建->文件共享->具有已安装文件共享的容器。
依赖性为:
如何获取Fileshare的ReferenceId?
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#","contentVersion": "1.0.0.0","parameters": {
"storageAccountType": {
"type": "string","defaultValue": "Standard_lrs","allowedValues": [
"Standard_lrs","Standard_GRS"
],"Metadata": {
"description": "Storage account type (SKU)"
}
},"fileShareName": {
"type": "string","minLength": 3,"maxLength": 63,"defaultValue": "sftp","Metadata": {
"description": "Name of the File Share to be created. "
}
}
},"variables": {
"deploymentLocation": "[resourceGroup().location]","storageAccountName": "[concat('sftpstr',uniqueString(resourceGroup().id))]"
},"resources": [
{
"type": "Microsoft.Storage/storageAccounts","name": "[variables('storageAccountName')]","apiVersion": "2019-06-01","location": "[variables('deploymentLocation')]","sku": {
"name": "[parameters('storageAccountType')]"
},"kind": "StorageV2","properties": {
"accesstier": "Hot"
}
},{
"type": "Microsoft.Storage/storageAccounts/fileServices/shares","properties": {
"accesstier": "Hot"
},"name": "[concat(variables('storageAccountName'),'/default/',parameters('fileShareName'))]","dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts',variables('storageAccountName'))]"
]
},{
"type": "Microsoft.ContainerInstance/containerGroups","name": "sftp-container-group","apiVersion": "2018-04-01","dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/fileServices/shares',????? )]" //how to get reference to specific Fileshare??? I've tried > [concat(variables('storageAccountName'),parameters('fileShareName'))] but it didn't work
],"properties": {
.......
}
}
]
}
而且我不知道如何设置对Fileshare的依赖性:
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/fileServices/shares',????? )]" //how to get reference to specific Fileshare???
],
我尝试过[concat(variables('storageAccountName'),parameters('fileShareName'))]
,但没有用。
有什么主意吗?
谢谢
解决方法
使用以下格式:
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/fileServices/shares',variables('storageAccountName'),'default',parameters('fileShareName') )]"
],
,
您可以创建两个单独的资源Microsoft.Storage/storageAccounts/fileServices
和Microsoft.Storage/storageAccounts/fileServices/shares
,然后尝试设置对Fileshare的依赖性,如下所示:
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/fileServices/shares',parameters('fileShareName') )]"
],
或者,建议通过容器实例中的azure-CLI创建存储帐户和文件共享,并参考this quickstart template。
"variables": {
"image": "microsoft/azure-cli","cpuCores": "1.0","memoryInGb": "1.5","containerGroupName": "createshare-containerinstance","containerName": "createshare"
},"resources": [
{
"type": "Microsoft.Storage/storageAccounts","name": "[parameters('storageAccountName')]","apiVersion": "2019-06-01","location": "[parameters('location')]","sku": {
"name": "[parameters('storageAccountType')]"
},"kind": "StorageV2"
},{
"name": "[variables('containerGroupName')]","type": "Microsoft.ContainerInstance/containerGroups","apiVersion": "2019-12-01","location": "[parameters('containerInstanceLocation')]","dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/',parameters('storageAccountName'))]"
],"properties": {
"containers": [
{
"name": "[variables('containerName')]","properties": {
"image": "[variables('image')]","command": [
"az","storage","share","create","--name","[parameters('fileShareName')]"
],"environmentVariables": [
{
"name": "AZURE_STORAGE_KEY","value": "[listKeys(parameters('storageAccountName'),'2019-06-01').keys[0].value]"
},{
"name": "AZURE_STORAGE_ACCOUNT","value": "[parameters('storageAccountName')]"
}
],"resources": {
"requests": {
"cpu": "[variables('cpuCores')]","memoryInGb": "[variables('memoryInGb')]"
}
}
}
}
],"restartPolicy": "OnFailure","osType": "Linux"
}
}
]