Well done! Your todo web app has become popular! The only small problem is that it has become popular on the west of UK - most of your app users are comming from there. Users are complaining aboud the network latency, and you are realizing that you need to host your app in another Azure region. I have good news for you - you don't need to re-create the VM from scratch, in Azure you can just move resources between regions with Azure Resource Mover. This task it to practice using this service.
Tasks in this module are relying on 2 PowerShell scripts:
scripts/generate-artifacts.ps1
generates the task "artifacts" and uploads them to cloud storage. An "artifact" is evidence of a task completed by you. Each task will have its own script, which will gather the required artifacts. The script also adds a link to the generated artifact in theartifacts.json
file in this repository โ make sure to commit changes to this file after you run the script.scripts/validate-artifacts.ps1
validates the artifacts generated by the first script. It loads information about the task artifacts from theartifacts.json
file.
Here is how to complete tasks in this module:
-
Clone task repository
-
Make sure you completed steps, described in the Prerequisites section
-
Complete the task, described in the Requirements section
-
Run
scripts/generate-artifacts.ps1
to generate task artifacts. Script will update the fileartifacts.json
in this repo. -
Run
scripts/validate-artifacts.ps1
to test yourself. If tests are failing - follow the recomendation from the test script error message to fix or re-deploy your infrastructure. When you will be ready to test yourself again - re-generate the artifacts (step 4) and re-run tests again. -
When all tests will pass - commit your changes and submit the solution for a review.
Pro tip: if you stuck with any of the implementation steps - run scripts/generate-artifacts.ps1
and scripts/validate-artifacts.ps1
. The validation script might give you a hint on what you should do.
Before completing any task in the module, make sure that you followed all the steps described in the Environment Setup topic, in particular:
-
Ensure you have an Azure account and subscription.
-
Create a resource group called "mate-resources" in the Azure subscription.
-
In the "mate-resources" resource group, create a storage account (any name) and a "task-artifacts" container.
-
Install PowerShell 7 on your computer. All tasks in this module use Powershell 7. To run it in the terminal, execute the following command:
pwsh
-
Install Azure module for PowerShell 7:
Install-Module -Name Az -Repository PSGallery -Force
If you are a Windows user, before running this command, please also run the following:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
- Log in to your Azure account using PowerShell:
Connect-AzAccount -TenantId <your Microsoft Entra ID tenant id>
In this task, you will need to work with the infrastructure from the previous task previous task. In order to complete the task, you need to perform the following steps:
-
Use Azure Resource Mover to move your resources:
-
use 'UK West' as a target region. If your VM size is not available in the 'UK West' Azure region - select any other Azure region where it is available.
-
make sure that all resources will be moved in the new resource group, called
mate-azure-task-5
. For that, create the target resource group before any other steps, and adjust the configuration of each resource in the Azure Resource Mover before ititiating the Prepare stage. -
after you moved the resources, check if your web app is still available on the Internet
-
-
Run artifacts generation script
scripts/generate-artifacts.ps1
-
Test yourself using the script
scripts/validate-artifacts.ps1
-
Sumbit the solution for a review
-
When solution is validated, stop the virtual machine and delete the source resource group.
-
Also, stop the VM you moved to the new region if you are not using it (but don't delete it - you will need it for the next tasks).
Note: source resources are not deleted automatically - you need to do it on our own.
You might face with an error "MoveResourcePrepareFailed" at the stage of preparing the VM for the move. The error message could look like this: " The site recovery operation failed with the error (9.60.7003.1) version of mobility service doesn't support the operating system kernel version (6.5.0-1016-azure) running on the source machine. Please refer the list of operating systems supported by Azure Site Recovery : https://aka.ms/a2a_supported_linux_os_versions. Possible Causes: . Recommended Action: Please refer to https://aka.ms/a2a_supported_linux_os_versions "
No need to worry, you can resolve it! On the prepare page, Azure resource mover installs to your VM a program, called 'mobility service' - this program is used to replicate the data from source VM to the target one. Error message means that mobility service does not support OS kernel version, which is used by your VM. The easiest workaround is to downgrade the kernel version and try to run 'Prepare' stage again. To downgrade the kernel version:
-
Find the latest supported kernel version for Ubuntu 22.04 here
-
Follow the steps from the microsoft learn forum to downgrade your VM kernel. On your VM:
- Identify the necessary packages that you need to install. This is done by executing the following command:
sudo apt search linux-azure | grep 6.5.0-1015-azure
- Install packages, which you got at the previous step using apt-get. For example:
sudo apt-get install linux-image-unsigned-6.5.0-1015-azure linux-modules-6.5.0-1015-azure linux-modules-extra-6.5.0-1015-azure
- Remove the current kernel version:
sudo apt remove linux-image-<kernel version from the error message>
Example command for the kernel version
6.5.0-1016-azure
:sudo apt remove linux-image-6.5.0-1016-azure
During the process you confirm with that you do not want to abort the removal process.
- As the last step you initiate a reboot with:
sudo reboot
-
After that, try to run "Prepare" stage again.