
Estoy intentando realizar una restauración automática de un bacpac a la máquina virtual azure mssql cuando está aprovisionada, pero no puedo hacerlo usando extensiones de scripts personalizados. Generé la plantilla ARM de VM MSSSQL de Azure usando scripts de automatización en el portal y, si veo esto en detalle, veo que ya está usando una extensión personalizada para configurar mssql en el aprovisionamiento posterior de la VM. Si necesito restaurar una base de datos además de ella después del aprovisionamiento, necesito otro recurso de extensión de script personalizado. No se me ocurre ninguna otra manera. Pero no importa lo que intente, sigo recibiendo un error de sintaxis en la segunda extensión de script personalizada, la etiqueta 'DependsOn'. Cualquier ayuda para hacer esto será apreciada. Tenga en cuenta que he intentado agregar nombres de recursos de varias maneras en DependsOn pero sigo recibiendo errores.
"message": "Error en la validación de la plantilla de implementación: 'El recurso de plantilla 'dbrestore' en la línea '1' y la columna '7717' no es válido: el identificador de recurso 'bugtvm/SqlIaasExtension' tiene un formato incorrecto. Consultehttps://aka.ms/arm-template-expressions/#referencepara obtener detalles de uso. Consultehttps://aka.ms/arm-template-expressionspara detalles de uso.'.", "target": null
Gracias
{
"name": "[parameters('virtualMachineName')]",
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2016-04-30-preview",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Network/networkInterfaces/', parameters('networkInterfaceName'))]",
"[concat('Microsoft.Storage/storageAccounts/', parameters('diagnosticsStorageAccountName'))]"
],
"properties": {
"osProfile": {
"computerName": "[parameters('virtualMachineName')]",
"adminUsername": "[parameters('adminUsername')]",
"adminPassword": "[parameters('adminPassword')]",
"windowsConfiguration": {
"provisionVmAgent": "true"
}
},
"hardwareProfile": {
"vmSize": "[parameters('virtualMachineSize')]"
},
"storageProfile": {
"imageReference": {
"publisher": "MicrosoftSQLServer",
"offer": "SQL2016SP1-WS2016",
"sku": "Web",
"version": "latest"
},
"osDisk": {
"createOption": "fromImage",
"managedDisk": {
"storageAccountType": "Standard_LRS"
}
},
"dataDisks": [
{
"createOption": "empty",
"lun": 0,
"diskSizeGB": "128",
"caching": "ReadOnly",
"managedDisk": {
"storageAccountType": "Standard_LRS"
}
}
]
},
"networkProfile": {
"networkInterfaces": [
{
"id": "[resourceId('Microsoft.Network/networkInterfaces', parameters('networkInterfaceName'))]"
}
]
},
"diagnosticsProfile": {
"bootDiagnostics": {
"enabled": true,
"storageUri": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('diagnosticsStorageAccountName')), '2015-06-15').primaryEndpoints['blob']]"
}
}
}
},
{
"apiVersion": "2015-06-15",
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "[concat(parameters('virtualMachineName'), '/SqlIaasExtension')]",
"location": "[parameters('location')]",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', parameters('virtualMachineName'))]"
],
"properties": {
"type": "SqlIaaSAgent",
"publisher": "Microsoft.SqlServer.Management",
"typeHandlerVersion": "1.2",
"autoUpgradeMinorVersion": "true",
"settings": {
"AutoTelemetrySettings": {
"Region": "[parameters('location')]"
},
"AutoPatchingSettings": {
"PatchCategory": "WindowsMandatoryUpdates",
"Enable": true,
"DayOfWeek": "[parameters('sqlAutopatchingDayOfWeek')]",
"MaintenanceWindowStartingHour": "[parameters('sqlAutopatchingStartHour')]",
"MaintenanceWindowDuration": "[parameters('sqlAutopatchingWindowDuration')]"
},
"AutoBackupSettings": {
"Enable": true,
"RetentionPeriod": "[parameters('sqlAutobackupRetentionPeriod')]",
"EnableEncryption": false
},
"KeyVaultCredentialSettings": {
"Enable": false,
"CredentialName": ""
},
"ServerConfigurationsManagementSettings": {
"SQLConnectivityUpdateSettings": {
"ConnectivityType": "[parameters('sqlConnectivityType')]",
"Port": "[parameters('sqlPortNumber')]"
},
"SQLWorkloadTypeUpdateSettings": {
"SQLWorkloadType": "[parameters('sqlStorageWorkloadType')]"
},
"SQLStorageUpdateSettings": {
"DiskCount": "[parameters('sqlStorageDisksCount')]",
"NumberOfColumns": "[parameters('sqlStorageDisksCount')]",
"StartingDeviceID": "[parameters('sqlStorageStartingDeviceId')]",
"DiskConfigurationType": "[parameters('sqlStorageDisksConfigurationType')]"
},
"AdditionalFeaturesServerConfigurations": {
"IsRServicesEnabled": "[parameters('rServicesEnabled')]"
}
}
},
"protectedSettings": {
"StorageUrl": "[reference(resourceId('Microsoft.Storage/storageAccounts', parameters('diagnosticsStorageAccountName')), '2015-06-15').primaryEndpoints['blob']]",
"StorageAccessKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('diagnosticsStorageAccountName')), '2015-06-15').key1]",
"SQLAuthUpdateUserName": "[parameters('sqlAuthenticationLogin')]",
"SQLAuthUpdatePassword": "[parameters('sqlAuthenticationPassword')]"
}
}
},
{
"apiVersion": "2015-06-15",
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "dbrestore",
"location": "[resourceGroup().location]",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', parameters('virtualMachineName') )]",
"[concat(parameters('virtualMachineName'),'/', 'SqlIaasExtension')]"
],
"properties": {
"publisher": "Microsoft.Compute",
"type": "CustomScriptExtension",
"typeHandlerVersion": "1.9",
"autoUpgradeMinorVersion": true,
"settings": {
"fileUris": [
"https://somestoragehere.blob.core.windows.net/dbbackups/restorescript.ps1"
]
},
"protectedSettings": {
"commandToExecute": "powershell -ExecutionPolicy Unrestricted -File restorescript.ps1",
"storageAccountName": "some storage here",
"storageAccountKey": "some key here"
}
}
},
Respuesta1
La razón fundamental es "[concat(parameters('virtualMachineName'),'/', 'SqlIaasExtension')]"
que no existe. Deberías modificarlo como se muestra a continuación:
"[concat('Microsoft.Compute/virtualMachines/', parameters('virtualMachineName'),'/extensions/SqlIaasExtension')]"
Podrías comprobar estoenlace.
Actualización del OP:
El error de segmento desapareció una vez que cambié el campo de nombre de 'restedb' a "[concat(parameters('virtualMachineName'),'/restoredb')]"
. no tuvo nada que ver con múltiples extensiones de script personalizadas