Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Backup , Azure portalı, PowerShell, CLI, Azure Resource Manager, Bicep gibi birden çok seçeneği kullanarak Azure VM'nizi yedeklemenize olanak tanır. Bu makalede, Azure Bicep dosyası ve Azure PowerShell ile Azure VM'sini yedekleme açıklanmaktadır. Bu hızlı başlangıçta, Bicep dosyasını dağıtarak bir Kurtarma Hizmetleri kasası oluşturma işlemine odaklanılır. Bicep dosyalarını geliştirme hakkında daha fazla bilgi için Bicep belgelerine ve şablon başvurusuna bakın.
Bicep, Azure kaynaklarını bildirimli olarak dağıtmaya yönelik bir dildir. Azure Resource Manager şablonlarınızı (ARM şablonları) geliştirmek için JSON yerine Bicep kullanabilirsiniz. Bicep söz dizimi karmaşıklığı azaltır ve geliştirme deneyimini geliştirir. Bicep, tüm JSON şablon özelliklerini sağlayan ARM şablonu JSON üzerinde saydam bir soyutlamadır. Dağıtım sırasında Bicep CLI, bicep dosyasını ARM şablonu JSON'a dönüştürür. Bicep dosyası, kaynak oluşturmak için bir dizi programlama komutu yazmadan Azure kaynaklarını ve kaynak özelliklerini belirtir.
ARM şablonunda geçerli olan kaynak türleri, API sürümleri ve özellikler de bicep dosyasında geçerlidir.
Önkoşullar
Bicep geliştirme ortamınızı ayarlamak için Bicep araçlarını yükleme konusuna bakın.
Uyarı
Makalede ayrıntılı olarak açıklandığı gibi en son Azure PowerShell modülünü ve Bicep CLI'yi yükleyin.
Şablonu gözden geçir
Aşağıda kullanılan şablon Azure hızlı başlangıç şablonlarından alınmıştı. Bu şablon, Koruma için DefaultPolicy ile yapılandırılmış basit Windows VM ve Kurtarma Hizmetleri kasası dağıtmanıza olanak tanır.
@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
}
}
Yukarıdaki şablonda tanımlanan kaynaklar şunlardır:
- 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
Şablonu dağıt
Şablonu dağıtmak için Deneyin'i seçerek Azure Cloud Shell'i açın ve ardından kabuk penceresine aşağıdaki PowerShell betiğini yapıştırın. Kodu yapıştırmak için kabuk penceresine sağ tıklayın ve yapıştır'ı seçin.
$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
Dağıtımı doğrulayın.
Bir yedekleme işi başlat.
Şablon bir VM oluşturur ve VM'de yedeklemeyi etkinleştirir. Şablonu dağıttığınızda bir yedekleme işi başlatmanız gerekir. Daha fazla bilgi için Yedekleme işi başlatma sayfasına bakın.
Yedekleme işini izleme
Yedekleme işini izlemek için bkz Yedekleme işini izleme.
Kaynakları temizle
- ARTıK VM'yi yedeklemeniz gerekmiyorsa, vm'yi temizleyebilirsiniz.
- VM'yi geri yüklemeyi denemek için temizleme işlemini atlayın.
- Mevcut bir VM kullandıysanız, kaynak grubunu ve VM'yi korumak için son Remove-AzResourceGroup cmdlet'ini atlayabilirsiniz.
Şu adımları izleyin:
Korumayı devre dışı bırakın, geri yükleme noktalarını ve kasayı kaldırın.
Kaynak grubunu ve ilişkili VM kaynaklarını aşağıdaki gibi silin:
Disable-AzRecoveryServicesBackupProtection -Item $item -RemoveRecoveryPoints $vault = Get-AzRecoveryServicesVault -Name "myRecoveryServicesVault" Remove-AzRecoveryServicesVault -Vault $vault Remove-AzResourceGroup -Name "myResourceGroup"
Sonraki Adımlar
Bu hızlı başlangıçta bir Kurtarma Hizmetleri kasası oluşturdunuz, bir sanal makine için koruma özelliklerini etkinleştirdiniz ve ilk kurtarma noktasını oluşturdunuz.
- Azure portalında VM'leri yedeklemeyi öğrenin.
- VM'yi hızlı bir şekilde geri yüklemeyi öğrenin
- Bicep dosyaları oluşturmayı öğrenin.
- Azure Resource Manager şablonlarını (ARM şablonları) Bicep dosyalarına dönüştürmeyi öğrenin.
- REST API kullanarak Azure VM'yi geri yüklemeyi öğrenin.