This day has come — we are deploying a cloud infrastructure! In this task, you will deploy a virtual machine and configure it to host your own web application!
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. Execute the following command to run it in the terminal:
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 need to perform the following steps:
-
Create a Virtual Machine:
-
Create a new resource group
mate-azure-task-2
-
Create a Linux Virtual Machine in the resource group from the previous step:
- Use any allowed VM name
- Use
UK South
Azure region - Set availability option to
No infrastructure redundancy
- Use
Standard
security type - Use
Ubuntu Server 22.04
as an operating system (publisher —Canonical
) - Use
B1s
VM size - Use SSH key authentification (use your own SSH key)
- Make sure VM is deployed without auto-generated public IP
-
Create and attach public IP with SKU
Basic
. Create a DNS label for the public IP. -
Configure VM's Network Security Group to accept network connections on
22
and8080
TCP ports. For that, create two separate NSG rules.
-
-
Deploy the web application to the virtual machine
-
Connect to the VM using SSH, create a folder
/app
, and configure your user as an owned of the folder:ssh <your-vm-username>@<your-public-ip-DNS-name> sudo mkdir /app sudo chown <your-vm-username>:<your-vm-username> /app
-
Form your computer, copy the content of the folder
app
to your virtual machine (run the command in the folder of this repository):scp -r app/* <your-vm-username>@<your-public-ip-DNS-name>:/app
-
Connect to the virtual machine again using SSH, install pre-requirements, and configure a service for the application:
sudo apt install python3-pip cd /app sudo mv todoapp.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl start todoapp sudo systemctl enable todoapp
-
Verify that the web app service is running. For that, run the following command on the VM:
systemctl status todoapp
-
-
Verify that web application is running, for that, open in a web browser the following URL:
http://<your-public-ip-DNS-name>:8080
. You should see the main page of the todo app. -
Run artifacts generation script
scripts/generate-artifacts.ps1
. -
Test yourself using the script
scripts/validate-artifacts.ps1
. -
Submit the solution for a review.
-
When the solution is validated, stop the virtual machine.
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 the steps described in the Prerequisites section.
-
Complete the task described in the Requirements section.
-
Run
scripts/generate-artifacts.ps1
to generate task artifacts. The script will update the fileartifacts.json
in this repo. -
Run
scripts/validate-artifacts.ps1
to test yourself. If tests are failing — follow the recommendation from the test script error message to fix or re-deploy your infrastructure. When you are 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 review.