Резервное копирование виртуальной машины в Azure с помощью шаблона Bicep
Статья
Azure Backup позволяет создавать резервные копии виртуальных машин Azure с помощью разных вариантов: портал Azure, PowerShell, CLI, Azure Resource Manager, Bicep и т. д. В этой статье описывается, как создать резервную копию виртуальной машины Azure с помощью шаблона Azure Bicep и Azure PowerShell. В данном кратком руководстве рассматривается преимущественно процесс развертывания шаблона Bicep для создания хранилища Служб восстановления. Дополнительные сведения о разработке шаблонов Bicep см. в разделе Документация по Bicep и в справочнике по шаблонам.
Bicep — это язык для декларативного развертывания ресурсов Azure. Bicep можно использовать вместо JSON для разработки шаблонов Azure Resource Manager (шаблонов ARM). Синтаксис Bicep является более простым и улучшает процесс разработки. Bicep — это прозрачная абстракция кода JSON шаблонов ARM, обеспечивающая все возможности этих шаблонов. Во время развертывания Bicep CLI преобразует файл Bicep в шаблон ARM в формате JSON. В файле Bicep ресурсы и свойства ресурсов Azure просто объявляются, без написания последовательности команд для создания ресурсов.
Типы ресурсов, версии API и свойства, допустимые в шаблоне ARM, также допустимы и в файле Bicep.
Шаблон, используемый ниже, взят из шаблонов быстрого запуска Azure. Этот шаблон позволяет развернуть простую виртуальную машину Windows и хранилище Служб восстановления с конфигурацией DefaultPolicy, имеющей значение Protection (Защита).
Bicep
@description('Specifies a name for generating resource names.')
@maxLength(8)paramprojectNamestring
@description('Specifies the location for all resources.')paramlocationstring = resourceGroup().location
@description('Specifies the administrator username for the Virtual Machine.')paramadminUsernamestring
@description('Specifies the administrator password for the Virtual Machine.')
@secure()paramadminPasswordstring
@description('Specifies the unique DNS Name for the Public IP used to access the Virtual Machine.')paramdnsLabelPrefixstring
@description('Virtual machine size.')paramvmSizestring = 'Standard_A2'
@description('Specifies the Windows version for the VM. This will pick a fully patched image of this given Windows version.')
@allowed([
'2008-R2-SP1''2012-Datacenter''2012-R2-Datacenter''2016-Nano-Server''2016-Datacenter-with-Containers''2016-Datacenter''2019-Datacenter''2019-Datacenter-Core''2019-Datacenter-Core-smalldisk''2019-Datacenter-Core-with-Containers''2019-Datacenter-Core-with-Containers-smalldisk''2019-Datacenter-smalldisk''2019-Datacenter-with-Containers''2019-Datacenter-with-Containers-smalldisk'
])paramwindowsOSVersionstring = '2016-Datacenter'varstorageAccountName = '${projectName}store'varnetworkInterfaceName = '${projectName}-nic'varvNetAddressPrefix = '10.0.0.0/16'varvNetSubnetName = 'default'varvNetSubnetAddressPrefix = '10.0.0.0/24'varpublicIPAddressName = '${projectName}-ip'varvmName = '${projectName}-vm'varvNetName = '${projectName}-vnet'varvaultName = '${projectName}-vault'varbackupFabric = 'Azure'varbackupPolicyName = 'DefaultPolicy'varprotectionContainer = 'iaasvmcontainer;iaasvmcontainerv2;${resourceGroup().name};${vmName}'varprotectedItem = 'vm;iaasvmcontainerv2;${resourceGroup().name};${vmName}'varnetworkSecurityGroupName = 'default-NSG'resourcestorageAccount'Microsoft.Storage/storageAccounts@2021-06-01' = {
name: storageAccountNamelocation: locationsku: {
name: 'Standard_LRS'
}
kind: 'Storage'properties: {}
}
resourcepublicIPAddress'Microsoft.Network/publicIPAddresses@2020-06-01' = {
name: publicIPAddressNamelocation: locationproperties: {
publicIPAllocationMethod: 'Dynamic'dnsSettings: {
domainNameLabel: dnsLabelPrefix
}
}
}
resourcenetworkSecurityGroup'Microsoft.Network/networkSecurityGroups@2020-06-01' = {
name: networkSecurityGroupNamelocation: locationproperties: {
securityRules: [
{
name: 'default-allow-3389'properties: {
priority: 1000access: 'Allow'direction: 'Inbound'destinationPortRange: '3389'protocol: 'Tcp'sourceAddressPrefix: '*'sourcePortRange: '*'destinationAddressPrefix: '*'
}
}
]
}
}
resourcevNet'Microsoft.Network/virtualNetworks@2020-06-01' = {
name: vNetNamelocation: locationproperties: {
addressSpace: {
addressPrefixes: [
vNetAddressPrefix
]
}
subnets: [
{
name: vNetSubnetNameproperties: {
addressPrefix: vNetSubnetAddressPrefixnetworkSecurityGroup: {
id: networkSecurityGroup.id
}
}
}
]
}
}
resourcenetworkInterface'Microsoft.Network/networkInterfaces@2020-06-01' = {
name: networkInterfaceNamelocation: locationproperties: {
ipConfigurations: [
{
name: 'ipconfig1'properties: {
privateIPAllocationMethod: 'Dynamic'publicIPAddress: {
id: publicIPAddress.id
}
subnet: {
id: '${vNet.id}/subnets/${vNetSubnetName}'
}
}
}
]
}
}
resourcevirtualMachine'Microsoft.Compute/virtualMachines@2020-06-01' = {
name: vmNamelocation: locationproperties: {
hardwareProfile: {
vmSize: vmSize
}
osProfile: {
computerName: vmNameadminUsername: adminUsernameadminPassword: adminPassword
}
storageProfile: {
imageReference: {
publisher: 'MicrosoftWindowsServer'offer: 'WindowsServer'sku: windowsOSVersionversion: 'latest'
}
osDisk: {
createOption: 'FromImage'
}
dataDisks: [
{
diskSizeGB: 1023lun: 0createOption: 'Empty'
}
]
}
networkProfile: {
networkInterfaces: [
{
id: networkInterface.id
}
]
}
diagnosticsProfile: {
bootDiagnostics: {
enabled: truestorageUri: storageAccount.properties.primaryEndpoints.blob
}
}
}
}
resourcerecoveryServicesVault'Microsoft.RecoveryServices/vaults@2020-02-02' = {
name: vaultNamelocation: locationsku: {
name: 'RS0'tier: 'Standard'
}
properties: {}
}
resourcevaultName_backupFabric_protectionContainer_protectedItem'Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems@2020-02-02' = {
name: '${vaultName}/${backupFabric}/${protectionContainer}/${protectedItem}'properties: {
protectedItemType: 'Microsoft.Compute/virtualMachines'policyId: '${recoveryServicesVault.id}/backupPolicies/${backupPolicyName}'sourceResourceId: virtualMachine.id
}
}
Для развертывания шаблона щелкните Попробовать, чтобы открыть Azure Cloud Shell, а затем вставьте следующий скрипт PowerShell в окно оболочки. Чтобы вставить код, щелкните окно оболочки правой кнопкой мыши, а затем выберите Вставить.
Azure PowerShell
$projectName = Read-Host -Prompt"Enter a project name (limited to eight characters) that is used to generate Azure resource names"$location = Read-Host -Prompt"Enter the location (for example, centralus)"$adminUsername = Read-Host -Prompt"Enter the administrator username for the virtual machine"$adminPassword = Read-Host -Prompt"Enter the administrator password for the virtual machine" -AsSecureString$dnsPrefix = Read-Host -Prompt"Enter the unique DNS Name for the Public IP used to access the virtual machine"$resourceGroupName = "${projectName}rg"$templateUri = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.recoveryservices/recovery-services-create-vm-and-configure-backup/main.bicep"New-AzResourceGroup -Name$resourceGroupName -Location$locationNew-AzResourceGroupDeployment -ResourceGroupName$resourceGroupName -TemplateUri$templateUri -projectName$projectName -adminUsername$adminUsername -adminPassword$adminPassword -dnsLabelPrefix$dnsPrefix
Проверка развертывания
Запуск задания резервного копирования
Шаблон создает виртуальную машину и включает на ней резервное копирование. После развертывания шаблона необходимо запустить задание резервного копирования. Дополнительные сведения см. в разделе Запуск задания резервного копирования.
Если вам больше не требуется резервная копия виртуальной машины, ее можно удалить.
Чтобы попытаться восстановить виртуальною машину, пропустите удаление.
Если вы использовали имеющуюся виртуальную машину, можете пропустить последний командлет Remove-AzResourceGroup, чтобы оставить группу ресурсов и виртуальную машину.
Выполните следующие действия:
Отключите защиту, удалите точки восстановления и хранилище.
Удалите группу ресурсов и связанные ресурсы виртуальной машины следующим образом:
Узнайте больше об Azure Backup, прежде чем приступить к реализации хранилищ восстановления и политик Azure Backup. Узнайте, как реализовать восстановление виртуальных машин Windows IaaS, выполнить резервное копирование и восстановление локальных рабочих нагрузок и управлять резервными копиями виртуальных машин Azure.
Планирование, доставка, управление и мониторинг возможностей виртуального рабочего стола и удаленных приложений в Microsoft Azure для любого устройства.