
Estou tentando fazer a restauração automática de um bacpac para Azure mssql VM quando ele é provisionado, mas não consigo fazer isso usando extensões de scripts personalizados. Eu gerei o modelo Azure MSSSQL VM ARM usando scripts de automação no portal e se eu ver isso em detalhes, vejo que ele já está usando uma extensão personalizada para configurar o mssql no pós-provisionamento da VM. Se eu precisar restaurar um banco de dados após o provisionamento, preciso de outro recurso de extensão de script personalizado. Não consigo pensar em outra maneira. Mas não importa o que eu tente, continuo recebendo erros de sintaxe na segunda extensão de script personalizada, tag 'DependsOn'. qualquer ajuda para fazer isso será apreciada. Observe que tentei adicionar nomes de recursos de várias maneiras no DependsOn, mas continuo recebendo erros.
"message": "Falha na validação do modelo de implantação: 'O recurso de modelo 'dbrestore' na linha '1' e na coluna '7717' não é válido: o identificador de recurso 'bugtvm/SqlIaasExtension' está malformado. Consultehttps://aka.ms/arm-template-expressions/#referencepara obter detalhes de uso. Consultehttps://aka.ms/arm-template-expressionspara detalhes de uso.'.", "target": null
Obrigado
{
"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"
}
}
},
Responder1
A razão raiz é "[concat(parameters('virtualMachineName'),'/', 'SqlIaasExtension')]"
que não existe. Você deve modificá-lo como abaixo:
"[concat('Microsoft.Compute/virtualMachines/', parameters('virtualMachineName'),'/extensions/SqlIaasExtension')]"
Você poderia verificar issolink.
Atualização do OP:
O erro de segmento ocorreu quando alterei o campo de nome de 'restoredb' para "[concat(parameters('virtualMachineName'),'/restoredb')]"
. não teve nada a ver com múltiplas extensões customscript