I have created an hourly-based backup policy. But when I applied that policy to VM, it threw an error.
{
"endTime": "2025-01-30T12:26:54.573302+00:00",
"error": {
"code": "CloudInternalError",
"message": "Microsoft Azure Backup encountered an internal error."
},
"id": "d69c5c5a-d64c-4b5a-9670-278483a64718",
"name": "d69c5c5a-d64c-4b5a-9670-278483a64718",
"properties": null,
"startTime": "2025-01-30T12:26:54.573302+00:00",
"status": "Failed"
}
@hour_policy = "hourlypolicy"
def hourly_backup_policy
@api_url = "#{@azure_url}/subscriptions/#{@subscription_id}/resourceGroups/#{@resource_group_name}/providers/Microsoft.RecoveryServices/vaults/#{@vaultName}/backupPolicies/#{@hour_policy}?api-version=2021-07-01"
@request_body = {
properties: {
backupManagementType: "AzureIaasVM",
timeZone: "UTC",
policyType: "V2",
schedulePolicy: {
schedulePolicyType: "SimpleSchedulePolicyV2",
scheduleRunFrequency: "Hourly",
hourlySchedule: {
interval: 4,
scheduleWindowStartTime: "2023-02-06T23:00:00Z",
scheduleWindowDuration: 24
}
},
retentionPolicy: {
retentionPolicyType: "LongTermRetentionPolicy",
dailySchedule: {
retentionTimes: [
"2023-02-06T23:00:00Z"
],
retentionDuration: {
count: 7,
durationType: "Days"
}
}
}
}
}.to_json
response = put_request
puts ("Request_body: #{@request_body}")
puts ("Response: #{response}")
end
#hourly_backup_policy
def enable_protection_for_vm
@api_url = "#{@azure_url}/subscriptions/#{@subscription_id}/resourceGroups/#{@resource_group_name}/providers/Microsoft.RecoveryServices/vaults/#{@vaultName}/backupFabrics/Azure/protectionContainers/iaasvmcontainer;iaasvmcontainerv2;#{@resource_group_name};#{@vm_name}/protectedItems/vm;iaasvmcontainerv2;#{@resource_group_name};#{@vm_name}?api-version=2021-07-01"
@request_body = {
properties: {
protectedItemType: "Microsoft.Compute/virtualMachines",
sourceResourceId: "/subscriptions/#{@subscription_id}/resourceGroups/#{@resource_group_name}/providers/Microsoft.Compute/virtualMachines/#{@vm_name}",
policyId: "/subscriptions/#{@subscription_id}/resourceGroups/#{@resource_group_name}/providers/Microsoft.RecoveryServices/vaults/#{@vaultName}/backupPolicies/#{@policyName}"
}
}.to_json
puts "Request URL: #{@api_url}"
puts "Request Body: #{@request_body}"
put_request
end
enable_protection_for_vm
I included my code as well.