type | change |
---|---|
feature | Increase minimal Az-version to 11.5.0 (needed by Get-AzAccessToken with parameter AsSecureString) |
feature | Keep installed BICEP (do not always download from internet) |
feature | Changing default of setIpTag for Microsoft internal RGCOPY version |
feature | For premium v2 and ultra SSD disks: Automatically increase IOPS if not sufficient for MBPS (if possible for disk size) |
feature | Retry, if log file was opened by other process (virus scanner). |
feature | Adding complete error history to log file |
feature | New parameter skipNatGateway for skipping NAT gateways. |
feature | Always skip unused public IP addresses, public IP prefixes, network security groups, NAT gateways |
type | change |
---|---|
feature | Support for IP tags. |
feature | New value false for parameter setVmZone (and setDiskSku ). When set, the existing zone of the VM (or SKU of the disk) is not changed by RGCOPY. |
experimental feature | Patching Windows VMs (not only Linux) in PATCH mode. Set RG owner in patch mode. |
feature | Fix compatibility issue with Az version 13: Breaking change of Get-AzAccessToken. |
feature | Allow BLOB copy for Microsoft internal version of RGCOPY (using storage account network rules and delegation keys). |
type | change |
---|---|
feature | Make snapshot copy default when copying into a different region. Therefore, no storage account is needed anymore. |
feature | Use variable wait times. Remove parameters testDelayCreation and testDelayCopy . |
feature | Always SNAPSHOT copy rather than BLOB copy for disks larger than 4TiB |
feature | Rename parameter useBlobs to useBlobCopy . Rename skipBlobs to skipRemoteCopy . Rename restartBlobs to restartRemoteCopy . |
feature | New parameter dualDeployment . Without setting this parameter, a separate template for disk creation is never used. |
bug fix | Always delete snapshots in target RG before deleting snapshots in source RG |
type | change |
---|---|
feature | Never allow shared key access for storage accounts. You should use snapshot copy rather than BLOB copy if RGCOPY has only the Subscription Contributor role in the target subscription. |
bug fix | Stop all VMs after creating snapshots once parameter pathPreSnapshotScript had been set. |
feature | Change file copy for NetApp volumes: Use NFS with private endpoint rather than SMB with storage account keys. Remove parameter smbTier . New parameter nfsQuotaGiB |
type | change |
---|---|
feature | Hardening storage accounts:
|
type | change |
---|---|
feature | Allow deploying a ZRS disk for a zonal VM. |
type | change |
---|---|
feature | Copy user assigned managed identities by default. New parameter skipIdentities |
type | change |
---|---|
feature | Using Get-AzAccessToken instead of .NET API AcquireAccessToken, as recommended by Azure DEV. |
feature | Always install VM extensions AzureMonitor*Agent (except when parameter skipExtensions is set). Remove parameter installExtensionsAzureMonitor . New parameter autoUpgradeExtensions . |
type | change |
---|---|
feature | Allow snapshot copy to a different subscription |
feature | New parameter skipWorkarounds |
experimental feature |
New parameters swapSnapshot4disk and swapDisk4disk |
bug fix | Fix a bug that was introduced in RGCOPY 0.9.55 that did not allow to deploy TiP sessions using BICEP |
feature | New parameter useNewVmSizes |
type | change |
---|---|
feature | Workarounds for open Azure issues. |
feature | New parameters useIncSnapshots , createDisksManually and useRestAPI |
1. BLOB COPY issue (Grant-AzSnapshotAccess) Grant-AzSnapshotAccess fails for disks with logical sector size 4096 Azure/azure-powershell#24129 Azure/azure-cli#28320 -> use REST API rather than Grant-AzSnapshotAccess
2. SNAPSHOT COPY issue (New-AzSnapshot) security type trusted launch gets lost during snapshot copy Azure/azure-powershell#24242 Azure/azure-cli#28457 -> use REST API for snapshot copy when security type is set
3. disk creation issue (ARM template) security type trusted launch cannot be set when creating disks from BLOB in ARM template Azure/azure-powershell#24253 -> create disks from BLOB outside ARM template (New-AzDisk)
4. disk creation issue (New-AzDisk) security type trusted launch cannot be set when creating disks from BLOB using New-AzDisk Azure/azure-powershell#24253 -> use REST API for creating disk
5. disk creation issue (New-AzDisk) disk controller type NVMe cannot be set when creating disks from BLOB using New-AzDisk Azure/azure-powershell#24347 -> use REST API for creating disk
type | change |
---|---|
feature | Allow existing incremental snapshots. However, you must not create an additional incremental snapshot while RGCOPY is running. RGCOPY 0.9.56 always deletes copied incremental snapshots at the very end. This allows starting a new RGCOPY run with parameter skipSnapshots afterwards. |
feature | Remove check for trusted launch on premium V2 disks. This restriction has been removed by Azure as of January 2024. |
feature | New syntax for createVmssFlex : - Allow using 1 instead of the synonym none for the fault domain count.- Allow 1 for zones. - Allow none for zones and none for fault domain count at the same time - although this is not a recommended configuration for SAP. We need this for testing non-SAP scenarios. |
feature | Allow creating AvSets, PPGs and VMSS without members. Just do not add an @<vm1>, ... to the parameter. |
experimental feature | New patch mode, that installs Linux updates. New parameters patchMode , patchVMs , patchKernel , patchAll , prePatchCommand and skipStopVMsAfterPatching |
feature | Automatically remove Availability Zone if VM was not part of an AvSet but becomes part of a new AvSet by using parameter createAvailabilitySet |
feature | Allow parameters setDiskMBps and setDiskIOps also for UltraSSD disks. However, parameter values are not checked for consistency. |
feature | workaround for Azure bugs: - use snapshot copy rather than BLOB copy if disk sector size is 4096 - use BLOB copy rather than snapshot copy if OS disk is configured as Trusted Launch |
feature | remove unneeded snapshot revoke for snapshot copy |
type | change |
---|---|
bug fix | Allow copying load balancer with outbound rules |
bug fix | Allow new line \n as part of a string in BICEP, e.g. in security rule description |
type | change |
---|---|
feature | In Archive mode: Support for disk SKUs PremiumV2_LRS and UltraSSD_LRS . New parameter pathArmTemplateDisks . |
feature | Changing data type of justCopyDisks to array . This allows defining discrete disks to be copied. |
feature | New parameter defaultDiskZone for detached disks or when parameter justCopyDisks was set |
feature | New parameter defaultDiskName |
type | change |
---|---|
feature | Using existing snapshots rather than blob copy even when copying to a different subscription (but only when using the same az-user for source RG and target RG). |
feature | Default value of Premium_LRS is now only used when disk SKU in source RG is Standard_LRS or StandardSSD_LRS . Hereby, disk SKU PremiumV2_LRS will not be downgraded by chance when parameter setDiskSku was forgotten. |
type | change |
---|---|
feature | Adding more log information when installing BICEP. The BICEP version used by RGCOPY is determined in the following order: 1. If BICEP is installed (found in the path) then this version is used. 2. If BICEP is not installed then RGCOPY downloads the newest version of BICEP from GitHub. 3. If the download fails on Linux then RGCOPY is looking for the file bicep in the directory of the file rgcopy.ps1 and is using this one. |
type | change |
---|---|
feature | Clone Mode: New parameters cloneMode , cloneNumber , cloneVMs , attachVmssFlex , attachAvailabilitySet , attachProximityPlacementGroup . |
feature | Merge Mode: New parameter mergeMode . |
feature | Support for disk SKU PremiumV2_LRS (except for Update Mode). New parameters setDiskIOps , setDiskMBps . |
feature | Converting disk SKU to PremiumV2_LRS and UltraSSD_LRS using Incremental Snapshots. Copying incremental snapshots within the same region. |
feature | New parameter ultraSSDEnabled . |
feature | Set default of parameter useBicep to $True . |
feature | Automatically install BICEP tools if they are not available |
feature | New parameter useSnapshotCopy , remove parameter blobsfromdisk |
feature | Support for inbound Nat Rules/Pools in Load Balancers |
feature | In Linux, it is sufficient to copy the file bicep into the same directory as rgcopy.ps1 (rather than installing BICEP). |
type | change |
---|---|
feature | Support for diskControllerType NVMe (for region westeurope) |
feature | Using BICEP rather than ARM templates when parameter useBicep is set to $True |
type | change |
---|---|
feature | New calculated parameter vmType for scripts that are started from RGCOPY. New VM tag rgcopy.VmType . |
feature | New parameter monitorRG . New VM tag rgcopy.MonitorRule . |
feature | Double check region of target resource group and of storage account if it already exists. |
bug fix | Parameter setVmMerge did not work when specifying several VMs |
bug fix | Support for public IP Addresses in NAT Gateways. When using publicIPAddresses rather than publicIPPrefixes in older versions of RGCOPY, the deployment failed with a Circular Dependency. |
feature | Double checking if new VM size supports trusted launch (if set in the source RG) |
feature | Double checking if new VM size supports the disk controller type (of the source RG) |
feature | Double checking if all disks are in the same resource group as the VMs |
type | change |
---|---|
bug fix | Fix ARM deployment error under the following conditions: 1. The source resource group contains a VM that is connected to a vNet in a different resource group 2. This vNet uses Network Peering to another vNet Network Peering and all its dependencies are now fully removed from the ARM template. This is possible because Network Peering has only been supported for AMS v1 and support for AMS v1 has been removed in RGCOPY 0.9.40. |
type | change |
---|---|
bug fix | regression in RGCOPY 0.9.40 resulted in deployment errors when copying to a different region |
type | change |
---|---|
warning | Always install the newest version of PowerShell and az-cmdlets! When installing the newest PowerShell (7.3.0) with older az-cmdlets then RGCOPY might terminate with the following error: GenericArguments[0], 'Microsoft.Azure.Management.Compute.Models.VirtualMachine', on 'T MaxInteger[T](System.Collections.Generic.IEnumerable1[T])' violates the constraint of type 'T'. If you install the newest az version 9.1.1 then RGCOPY works fine even with the newest PowerShell version 7.3.0 |
UI | Removed support for AMS v1 as announced in February 2022. Remove parameters pathArmTemplateAms , createArmTemplateAms , amsInstanceName , amsWsName , amsWsRG , amsWsKeep , amsShareAnalytics , dbPassword , amsUsePowerShell and justRedeployAms . |
UI | Added a warning that ProximityPlacementGroups, AvailabilitySets and VmssFlex are removed if VM Tag rgcopy.TipGroup was used. |
workaround for Azure changes | The behavior of VMSS Flex has changed for Fault Domain Count FD>1: The current behavior is the following:
Cannot set 'platformFaultDomain' on Virtual Machine 'hana2' because the Virtual Machine Scale Set 'vmss' that it references has 'singlePlacementGroup' = true. (Code:BadRequest) |
workaround for Azure changes | The semantic of zone definition for Public IP Addresses has changed (see below): As a workaround, RGCOPY now always sets SKU = Standard and IPAllocationMethod = Static for Public IP Addresses. Parameters setPublicIpSku and setPublicIpAlloc have been removed.In older versions of RGCOPY you will see the following error when deploying a VM with a public IP address to an Availability Zone: Compute resource /subscriptions/.../virtualMachines/... has a zone constraint 3 but the PublicIPAddress /subscriptions/... used by the compute resource via NetworkInterface or LoadBalancer has a different zone constraint Regional. (Code: ComputeResourceZoneConstraintDoesNotMatchPublicIPAddressZoneConstraint) |
UI | RGCOPY now always sets SKU = Standard for Load Balancers. Parameter setLoadBalancerSku has been removed. |
Semantic changes of zone definition for Public IP Addresses:
WARNING: Upcoming breaking changes in the cmdlet ‘New-AzPublicIpAddress’ :
Default behavior of Zone will be changed
Cmdlet invocation changes :
Old Way : Sku = Standard means the Standard Public IP is zone-redundant.
New Way : Sku = Standard and Zone = {} means the Standard Public IP has no zones.
If you want to create a zone-redundant Public IP address, please specify
all the zones in the region. For example, Zone = [‘1’, ‘2’, ‘3’].
type | change |
---|---|
bug fix | Regression when parameter skipBastion is used (one of 127 parameters): error during deployment "The resource 'Microsoft.Network/virtualNetworks/.../subnets/AzureBastionSubnet' is not defined in the template." |
feature | New experimental parameters:diagSettingsSA , diagSettingsContainer , diagSettingsPub , diagSettingsProt |
feature | New parameter switch hostPlainText Set this switch for getting better readable output when starting RGCOPY from a Linux script. |
UI | Increased minimum required PowerShell version to 7.2 (required for $PsStyle) |
feature | New parameter justCopyDisks |
feature | Improved quota check |
documentation | Clarification about moving customer SAP landscapes to a different region using RGCOPY. |
workaround for Azure changes | RGCOPY exports an ARM template from the source RG and modifies it. The structure of this exported ARM template has changed:. It now contains circular dependencies between:
|
type | change |
---|---|
feature | VNETs and NICs of other resource groups are also copied if they are referenced in the source RG. All other referenced remote resources cause an error in RGCOPY. When setting the new parameter skipRemoteReferences , these remote resources (for example a Network Security Group or an Availability Set) are simply ignored. |
bug fix | Snapshot with a name longer than 80 characters caused an error. This has been fixed by truncating the name. Therefore, not all RGCOPY snapshots have now the extension .rgcopy anymore. |
feature | When using the parameter simulate , several errors are just displayed. RGCOPY continues running but does not deploy anything. Hereby, you can see all errors in a single RGCOPY run, for example: skipped VM not found, number of NICs not supported for VM size, quota of VM size in region exceeded. |
bug fix | Exceeded CPU quota not always detected by RGCOPY. Resulting CPU usage of 100.1% (that cannot be deployed) was rounded to 100% (that can be deployed). Everything greater than 100% is now rounded to 101%. |
workflow | Revoking access from snapshots after BLOB copy. This was done in the past only when deleting snapshots (or automatically after 3 days) |
feature | Creating a public IP address when merging a VM that originally had at least one public IP address |
bug fix | Could not explicitly disable Disk Bursting, Write Accelerator, Accelerated Networking. Parameter value was always evaluated to True |
UI | Improved consistency checks for parameters: - skipVMs , skipDisks , skipSecurityRules , keepTags : checking for (disallowed) data type: array of array of string- archiveContainer : checking for upper case characters.- setAcceleratedNetworking : checking that NIC is not connected to NetApp volume |
type | change |
---|---|
feature | Support for VM Scale Sets Flex. New parameters skipVmssFlex , createVmssFlex , and setVmFaultDomain . |
feature | Since RGCOPY 0.9.30 Boot Diagnostics is not enabled by default. Hereby, a separate Storage Account is not needed by default in the target RG. By using the new Azure feature "Boot Diagnostics with managed storage account", we can now turn on Boot Diagnostics by default again. Therefore, the parameters changed again: New parameter skipBootDiagnostics , remove parameter enableBootDiagnostics |
UI | Remove ARM template parameter storageAccountName |
feature | Allowing to run VM scripts on more than one VM. New syntax for scriptStartSapPath, scriptStartLoadPath and scriptStartAnalysisPath: [local:]<path>@<VM>[,...n] . Removing parameter scriptVm command: |
UI | New parameter preSnapshotWaitSec |
workaround for Azure changes | Workaround for sporadic Azure issues when deploying subnets in parallel: create dependency chain in ARM template to prevent parallel deployment. Sporadic deployment error was: Another operation on this or dependent resource is in progress |
type | change |
---|---|
feature | Display snapshot creation time for all RGCOPY-snapshots before deploying VMs |
feature | Add wait time (parameter vmStartWaitSec ) after Pre Snapshot Script (pathPreSnapshotScript ) |
feature | Support for disk bursting. New parameter setDiskBursting |
feature | Support for zone redundant disks. New SKUs Premium_ZRS ,StandardSSD_ZRS |
feature | Support for shared disks. New parameter setDiskMaxShares |
feature | New parameter forceVmChecks . Added explanation of parameter skipVmChecks to to documentation. Fixed exception that happened in combination with parameter skipVmChecks |
bug fix | Fix exceptions when trying to copy an Ultra SSD disk |
UI | New parameter allowExistingDisks . Remove parameters skipDiskChecks |
UI | New parameter skipDefaultValues . Remove default values for parameters setPublicIpSku and setPublicIpAlloc |
UI | Increase minimum required Az version from 5.5 to 6.0 (needed for shared disks) |
UI | New parameter simulate that works in all RGCOPY modes. Remove parameter skipUpdate |
type | change |
---|---|
feature | Update Mode: New parameters updateMode , skipUpdate , deleteSnapshotsAll , createBastion , deleteBastion . By default, RGCOPY is running in Copy Mode. Once the Update Mode is enabled, you can use RGCOPY for changing resource properties in the source RG rather than copying a resource group. |
feature | Archive Mode: New parameters archiveMode ,archiveContainer , archiveContainerOverwrite . In Archive Mode, a backup of all disks to cost-effective BLOB storage is created in an storage account of the target RG. An ARM template that contains the resources of the source RG is also stored in the BLOB storage. In this mode, no other resource is deployed in the target RG. |
feature | New parameter justRedeployAms for test purposes |
feature | Checking that HyperV-generation, cpu architecture, and number of network interfaces is still supported when changing VM size. |
bug fix | Variables for scripts vmSize<vmName> , vmCpus<vmName> , vmMemGb<vmName> did not work with special characters in VM names: Remove special characters from <vmName> |
UI | Display explicitly all resource types that have not been copied by RGCOPY (because these types are not supported by RGCOPY) |
UI | New section "Reading RGCOPY tags from VMs" to display Azure tags that impact RGCOPY behavior. |
feature | Cost efficiency: New parameters deleteSnapshots , deleteSourceSA , deleteTargetSA for deleting unneeded resources in a cleanup step at the end of an RGCOPY run. |
feature | New parameter enableBootDiagnostics , remove parameter skipBootDiagnostics |
feature | Only start needed (rather than all) VMs when copying NetApp volumes or Ultra SSD disks. Stop these VMs afterwards (rather than keep them running). |
bug fix | Divide by zero error if a quota for a used VM family was explicitly set to 0 (rather than deleting the quota) |
feature | Check version of VM Agent and wait until VM Agent is started (new parameter vmAgentWaitMinutes ). |
feature | New parameter stopVMsSourceRG , stopVMsTargetRG . Remove parameters stopVMs |
feature | Moving NetApp Volumes in Update Mode: Hereby, the Service Level of the volumes can be changed. New parameters netAppAccountName , netAppPoolName , netAppServiceLevel , netAppPoolGB , netAppMovePool , netAppMoveForce , smbTier . Remove parameters capacityPoolGB smbTierStandard |
feature | Adding an explicitly maintained list of VM sizes with specific restrictions to Accelerated Networking ("Accelerated networking can only be applied to a single NIC for size ..."). These restrictions were not visible when just using Get-AzComputeResourceSku. Now, RGCOPY double checks these restrictions before trying to deploy the VMs/NICs. |
feature | Create NetApp volumes without having a NetApp subnet in the source RG. New parameter netAppSubnet |
feature | Renaming of remote NICs and VNETs. Hereby, you can copy a resource group that uses the same name for a local and a remote VNET (often the name of the vnet is simply 'vnet') |
UI | Do not copy AMS by default. New parameter createArmTemplateAms . Remove parameters skipAms skipDeploymentAms Azure Monitor for SAP (AMS) is currently in public review with version v1. Version v2 will probably be in public review in 2022. RGCOPY only supports version v1. Once version v2 is available, copying AMS using RGCOPY might not work anymore. |
bug fix | Consistency check for values of parameter setVmZone failed if using different zones for different VMs |
type | change |
---|---|
feature | Add new variables for scripts that were started from RGCOPY: vmSize<vmName> , vmCpus<vmName> , vmMemGb<vmName> |
UI | Check that provided ARM template has been created by RGCOPY: change misleading error message Invalid ARM template |
feature | Check status and version of VM Agent (parameter vmAgentWaitMinutes ).Wait for VM Agent start rather than VM start before executing Invoke-AzVMRunCommand. |
UI | In case of errors of Invoke-AzVMRunCommand : Display error message rather than throw exception |
VS Code | Avoid VS Code warning: convert non-breaking spaces to spaces |
VS Code | Avoid wrong VS Code warning: The variable 'hasIP' is assigned but never used. |
bug fix | Error Invalid data type, the rule is not a string while parsing parameters:allow [char] in addition to [string] |
etc | New function convertTo-array that ensures data type [array] |
feature | Wait for VM services to be started (parameter vmStartWaitSec ) |
bug fix | RGCOPY VM tags for remotely running scripts not working ( rgcopy.ScriptStartSap , rgcopy.ScriptStartLoad , rgcopy.ScriptStartAnalysis ) |
type | change |
---|---|
bug fix | error Snapshot xxx not found. Remove parameter skipSnapshots :add snapshots to white list |