إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
يسمح لك Azure Backup بعمل نسخة احتياطية من Azure VM باستخدام خيارات متعددة - مثل مدخل Microsoft 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 هي عملية إزالة شفافة فوق قالب ARM JSON الذي يوفر جميع إمكانيات قالب JSON. أثناء التوزيع، يقوم Bicep CLI بتحويل ملف Bicep إلى قالب ARM JSON. يوضح ملف Bicep موارد Azure وخصائص الموارد، دون كتابة تسلسل من أوامر البرمجة لإنشاء الموارد.
أنواع الموارد وإصدارات API والخصائص الصالحة في قالب ARM صالحة أيضاً في ملف Bicep.
المتطلبات الأساسية
لإعداد بيئتك لتطوير Bicep، راجع تثبيت أدوات Bicep.
ملاحظة
ثبّت أحدث وحدة Azure PowerShell نمطية وBicep CLI كما هو مفصل في المقالة.
مراجعة القالب
القالب المستخدم أدناه من قوالب Azure Quickstart. يسمح لك هذا القالب بتوزيع Windows VM وخزينة Recovery Services التي تمت تهيئتها باستخدام DefaultPolicy من أجل Protection.
@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
- Microsoft.Network/publicIPAddresses
- Microsoft.Network/networkSecurityGroups
- Microsoft.Network/virtualNetworks
- Microsoft.Network/networkInterfaces
- Microsoft.Compute/virtualMachines
- Microsoft.RecoveryServices/vaults
- Microsoft.RecoveryServices/vaults/backupFabrics/protectionContainers/protectedItems
نشر القالب
لتوزيع القالب، حدد Try it لفتح Azure Cloud Shell، ثم الصق برنامج PowerShell النصي التالي في نافذة shell. للصق التعليمات البرمجية، انقر بزر الماوس الأيمن فوق نافذة shell ثم حدد لصق.
$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
التحقُّق من صحة عملية النشر
بدء مهمة النسخ الاحتياطي
يقوم القالب بإنشاء VM وتمكين النسخ الاحتياطي على VM. بعد نشر القالب، تحتاج إلى بدء مهمة النسخ احتياطي. لمزيد من المعلومات، راجع بدء مهمة النسخ الاحتياطي.
مراقبة مهمة النسخ الاحتياطي
لمراقبة مهمة النسخ الاحتياطي، راجع مراقبة مهمة النسخ الاحتياطي.
تنظيف الموارد
- إذا لم تعد بحاجة إلى نسخ احتياطي لجهاز ظاهري، يمكنك تنظيفه.
- لمحاولة استعادة الجهاز الظاهري، تخطى عملية الحذف.
- إذا كنت قد استخدمت جهازاً ظاهرياً موجوداً، يمكنك تخطي الأمر cmdlet النهائي Remove-AzResourceGroup للاحتفاظ بمجموعة الموارد والجهاز الظاهري.
اتبع الخطوات التالية:
قم بتعطيل الحماية، وحذف نقاط الاستعادة والمخزن.
احذف مجموعة الموارد وموارد الأجهزة الافتراضية المرتبطة بها، على النحو التالي:
Disable-AzRecoveryServicesBackupProtection -Item $item -RemoveRecoveryPoints $vault = Get-AzRecoveryServicesVault -Name "myRecoveryServicesVault" Remove-AzRecoveryServicesVault -Vault $vault Remove-AzResourceGroup -Name "myResourceGroup"
الخطوات التالية
في هذا التشغيل السريع، قمت بإنشاء مخزن خدمات الاسترداد، تمكين الحماية على الجهاز الظاهري، وإنشاء نقطة الاسترداد الأولية.
- تعرف على كيفية إجراء نسخ احتياطي للأجهزة الظاهرية في مدخل Microsoft Azure.
- تعرف على كيفية استعادة جهاز ظاهري بسرعة
- تعرف على كيفية إنشاء ملفات Bicep.
- تعرف على كيفية فك تجميع قوالب Azure Resource Manager (قوالب ARM) إلى ملفات Bicep.
- تعرف على كيفية استعادة جهاز Azure الظاهري باستخدام واجهة برمجة تطبيقات REST.