Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
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.
Предпосылки
Сведения о настройке среды для разработки Bicep см. в разделе Установка средств Bicep.
Замечание
Установите последнюю версию модуля Azure PowerShell и Bicep CLI, как описано в статье.
Проверьте шаблон
Приведенный ниже шаблон используется из шаблонов быстрого запуска Azure. Этот шаблон позволяет развернуть простое хранилище виртуальных машин Windows и служб восстановления, настроенные с помощью DefaultPolicy для защиты.
@description('Specifies a name for generating resource names.')
@maxLength(8)
param projectName string
@description('Specifies the location for all resources.')
param location string = resourceGroup().location
@description('Specifies the administrator username for the Virtual Machine.')
param adminUsername string
@description('Specifies the administrator password for the Virtual Machine.')
@secure()
param adminPassword string
@description('Specifies the unique DNS Name for the Public IP used to access the Virtual Machine.')
param dnsLabelPrefix string
@description('Virtual machine size.')
param vmSize string = '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'
])
param windowsOSVersion string = '2016-Datacenter'
var storageAccountName = '${projectName}store'
var networkInterfaceName = '${projectName}-nic'
var vNetAddressPrefix = '10.0.0.0/16'
var vNetSubnetName = 'default'
var vNetSubnetAddressPrefix = '10.0.0.0/24'
var publicIPAddressName = '${projectName}-ip'
var vmName = '${projectName}-vm'
var vNetName = '${projectName}-vnet'
var vaultName = '${projectName}-vault'
var backupFabric = 'Azure'
var backupPolicyName = 'DefaultPolicy'
var protectionContainer = 'iaasvmcontainer;iaasvmcontainerv2;${resourceGroup().name};${vmName}'
var protectedItem = 'vm;iaasvmcontainerv2;${resourceGroup().name};${vmName}'
var networkSecurityGroupName = 'default-NSG'
resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'Storage'
properties: {}
}
resource publicIPAddress 'Microsoft.Network/publicIPAddresses@2020-06-01' = {
name: publicIPAddressName
location: location
properties: {
publicIPAllocationMethod: 'Dynamic'
dnsSettings: {
domainNameLabel: dnsLabelPrefix
}
}
}
resource networkSecurityGroup 'Microsoft.Network/networkSecurityGroups@2020-06-01' = {
name: networkSecurityGroupName
location: location
properties: {
securityRules: [
{
name: 'default-allow-3389'
properties: {
priority: 1000
access: 'Allow'
direction: 'Inbound'
destinationPortRange: '3389'
protocol: 'Tcp'
sourceAddressPrefix: '*'
sourcePortRange: '*'
destinationAddressPrefix: '*'
}
}
]
}
}
resource vNet 'Microsoft.Network/virtualNetworks@2020-06-01' = {
name: vNetName
location: location
properties: {
addressSpace: {
addressPrefixes: [
vNetAddressPrefix
]
}
subnets: [
{
name: vNetSubnetName
properties: {
addressPrefix: vNetSubnetAddressPrefix
networkSecurityGroup: {
id: networkSecurityGroup.id
}
}
}
]
}
}
resource networkInterface 'Microsoft.Network/networkInterfaces@2020-06-01' = {
name: networkInterfaceName
location: location
properties: {
ipConfigurations: [
{
name: 'ipconfig1'
properties: {
privateIPAllocationMethod: 'Dynamic'
publicIPAddress: {
id: publicIPAddress.id
}
subnet: {
id: '${vNet.id}/subnets/${vNetSubnetName}'
}
}
}
]
}
}
resource virtualMachine 'Microsoft.Compute/virtualMachines@2020-06-01' = {
name: vmName
location: location
properties: {
hardwareProfile: {
vmSize: vmSize
}
osProfile: {
computerName: vmName
adminUsername: adminUsername
adminPassword: adminPassword
}
storageProfile: {
imageReference: {
publisher: 'MicrosoftWindowsServer'
offer: 'WindowsServer'
sku: windowsOSVersion
version: 'latest'
}
osDisk: {
createOption: 'FromImage'
}
dataDisks: [
{
diskSizeGB: 1023
lun: 0
createOption: 'Empty'
}
]
}
networkProfile: {
networkInterfaces: [
{
id: networkInterface.id
}
]
}
diagnosticsProfile: {
bootDiagnostics: {
enabled: true
storageUri: storageAccount.properties.primaryEndpoints.blob
}
}
}
}
resource recoveryServicesVault 'Microsoft.RecoveryServices/vaults@2020-02-02' = {
name: vaultName
location: location
sku: {
name: 'RS0'
tier: 'Standard'
}
properties: {}
}
resource vaultName_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
}
}
Ресурсы, определенные в приведенном выше шаблоне, :
- Microsoft.Storage/storageAccounts
- Microsoft.Network/publicIPAddresses
- Microsoft.Network/networkSecurityGroups
- Microsoft.Network/virtualNetworks;
- Microsoft.Network/networkInterfaces
- Microsoft.Compute/virtualMachines
- Microsoft.RecoveryServices/vaults
- Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems
Развертывание шаблона
Чтобы развернуть шаблон, выберите " Попробовать открыть Azure Cloud Shell", а затем вставьте следующий скрипт 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 $location
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri -projectName $projectName -adminUsername $adminUsername -adminPassword $adminPassword -dnsLabelPrefix $dnsPrefix
Проверка развертывания
Запуск задания резервного копирования
Шаблон создает виртуальную машину и включает на ней резервное копирование. После развертывания шаблона необходимо запустить задание резервного копирования. Дополнительные сведения см. в разделе Запуск задания резервного копирования.
Контролируйте выполнение задания резервного копирования.
Мониторинг задания резервного копирования описывается в разделе Мониторинг задания резервного копирования.
Очистите ресурсы
- Если вам больше не требуется резервная копия виртуальной машины, ее можно удалить.
- Чтобы попробовать восстановить виртуальную машину, пропустите процесс очистки.
- Если вы использовали существующую виртуальную машину, можно пропустить последний командлет Remove-AzResourceGroup , чтобы сохранить группу ресурсов и виртуальную машину.
Выполните следующие действия.
Отключите защиту, удалите точки восстановления и архив.
Удалите группу ресурсов и связанные ресурсы виртуальной машины следующим образом:
Disable-AzRecoveryServicesBackupProtection -Item $item -RemoveRecoveryPoints $vault = Get-AzRecoveryServicesVault -Name "myRecoveryServicesVault" Remove-AzRecoveryServicesVault -Vault $vault Remove-AzResourceGroup -Name "myResourceGroup"
Дальнейшие шаги
В этом кратком руководстве вы создали хранилище служб восстановления, включили защиту на виртуальной машине и создали начальную точку восстановления.
- Узнайте, как создать резервные копии виртуальных машин на портале Azure.
- Узнайте, как быстро восстановить виртуальную машину.
- Узнайте, как создать файлы Bicep.
- Узнайте, как декомпилировать шаблоны Azure Resource Manager (шаблоны ARM) в файлы Bicep.
- Узнайте, как восстановить виртуальную машину Azure с помощью REST API.