Я попытался настроить резервное копирование файлового ресурса Azure с помощью развертывания шаблона ARM. Ниже представлен шаблон, который я пытаюсь развернуть. Сначала я создаю хранилище Azure, Vault и политику резервного копирования, а затем пытаюсь настроить резервное копирование для общей папки.
Но он развертывает большую часть ресурсов, хотя в конце концов терпит неудачу и выдает мне следующую ошибку:
Есть еще одна проблема, которая связана со свойством "protectedItems". Некоторые блоги советуют использовать имя файлового ресурса, хотя немногие советуют использовать какой-то уникальный номер, упомянутый в этой ссылке. что это за число, мы можем присвоить ему любое случайное значение. пробовал различные перестановки и комбинации, пока не добился успеха.
Вставляю сюда весь мой шаблон
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "canadacentral",
"metadata": {
"description": "The region where Azure will house the deployment."
},
"minLength": 5
}
},
"variables": {
"namespace": "jira",
"jira": {
"storage": {
"name": "[concat(variables('namespace'), 'storage', uniqueString(resourceGroup().id))]",
"sharedHomeName": "[concat(variables('namespace'), '-shared-home')]",
"diagnostics": "[concat(variables('namespace'), 'diag', uniqueString(resourceGroup().id))]",
"skuName": "Premium_LRS",
"skuTier": "Premium"
}
},
"vaultName": "[concat(variables('namespace'), '-vault-', uniqueString(resourceGroup().id))]",
"policyName": "SharedHomeBackupPolicy",
"schedule": {
"scheduleRunFrequency": "Daily",
"scheduleRunDays": null,
"scheduleRunTimes": [
"2020-01-01T10:00:00.000Z"
],
"schedulePolicyType": "SimpleSchedulePolicy"
},
"retention": {
"dailySchedule": {
"retentionTimes": [
"2020-01-01T10:00:00.000Z"
],
"retentionDuration": {
"count": 30,
"durationType": "Days"
}
},
"weeklySchedule": null,
"monthlySchedule": null,
"yearlySchedule": null,
"retentionPolicyType": "LongTermRetentionPolicy"
},
"timeZone": "UTC",
"fabricName": "Azure",
"protectionContainers": "[array(concat('storagecontainer;storage;', resourceGroup().name, ';', variables('jira').storage.name))]",
"sharedHomeSizeInGb": "128",
"protectedItems": "[array(concat('azurefileshare;', variables('jira').storage.sharedHomeName))]",
"skuName": "RS0",
"skuTier": "Standard"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"comments": "Only have this resource in this template because not allowed to return keys/secrets in output pararms.",
"apiVersion": "2019-06-01",
"name": "[variables('jira').storage.name]",
"location": "[parameters('location')]",
"sku": {
"name": "[variables('jira').storage.skuName]",
"tier": "[variables('jira').storage.skuTier]"
},
"kind": "FileStorage",
"properties": {
"largeFileSharesState": "Enabled",
"networkAcls": {
"bypass": "AzureServices",
"defaultAction": "Allow"
},
"supportsHttpsTrafficOnly": true,
"encryption": {
"services": {
"file": {
"keyType": "Account",
"enabled": true
},
"blob": {
"keyType": "Account",
"enabled": true
}
},
"keySource": "Microsoft.Storage"
}
}
},
{
"type": "Microsoft.Storage/storageAccounts/fileServices",
"apiVersion": "2019-06-01",
"name": "[concat(variables('jira').storage.name, '/default')]",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', variables('jira').storage.name)]"
],
"sku": {
"name": "[variables('jira').storage.skuName]"
}
},
{
"type": "Microsoft.Storage/storageAccounts/fileServices/shares",
"apiVersion": "2019-06-01",
"name": "[concat(variables('jira').storage.name, '/default/', variables('jira').storage.sharedHomeName)]",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/fileServices', variables('jira').storage.name, 'default')]",
"[resourceId('Microsoft.Storage/storageAccounts', variables('jira').storage.name)]"
],
"properties": {
"shareQuota": "[variables('sharedHomeSizeInGb')]"
}
},
{
"type": "Microsoft.RecoveryServices/vaults",
"apiVersion": "2018-01-10",
"name": "[variables('vaultName')]",
"location": "[parameters('location')]",
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts/fileServices/shares', variables('jira').storage.name, 'default', variables('jira').storage.sharedHomeName)]"
],
"sku": {
"name": "[variables('skuName')]",
"tier": "[variables('skuTier')]"
},
"properties": {}
},
{
"type": "Microsoft.RecoveryServices/vaults/backupPolicies",
"apiVersion": "2019-05-13",
"name": "[concat(variables('vaultName'), '/', variables('policyName'))]",
"dependsOn":[
"[resourceId('Microsoft.RecoveryServices/vaults', variables('vaultName'))]"
],
"properties": {
"backupManagementType": "AzureStorage",
"WorkloadType": "AzureFileShare",
"schedulePolicy": "[variables('schedule')]",
"retentionPolicy": "[variables('retention')]",
"TimeZone": "[variables('timeZone')]"
}
},
{
"type": "Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems",
"apiVersion": "2019-05-13",
"name": "[concat(variables('vaultName'), '/', variables('fabricName'), '/',variables('protectionContainers')[copyIndex()], '/', variables('protectedItems')[copyIndex()])]",
"dependsOn": [
"[concat('Microsoft.RecoveryServices/vaults', '/', variables('vaultName'), '/backupPolicies/', variables('policyName'))]"
],
"properties": {
"backupManagementType": "AzureStorage",
"workloadType": "AzureFileShare",
"protectedItemType": "AzureFileShareProtectedItem",
"policyId": "[resourceId('Microsoft.RecoveryServices/vaults/backupPolicies', variables('vaultName'), variables('policyName'))]",
"sourceResourceId": "[resourceId('Microsoft.Storage/storageAccounts',variables('jira').storage.name)]"
},
"copy": {
"name": "protectedItemsCopy",
"count": "[length(variables('protectedItems'))]"
}
}
],
"outputs": {
}
}
Я вставляю сюда весь шаблон, чтобы вы могли попробовать его на своем уровне.