AZ-104-MicrosoftAzureAdmini.../Instructions/Labs/LAB_08-Manage_Virtual_Machines.md
2020-02-13 19:53:13 -05:00

28 KiB

lab
lab
title module
08 - Manage Virtual Machines Module 08 - Virtual Machines

Lab 08 - Manage Virtual Machines

Student lab manual

Lab scenario

You were tasked with identifying different options for deploying and configuring Azure virtual machines. First, you need to determine different compute and storage resiliency and scalability options you can implement when using Azure virtual machines. Next, you need to investigate compute and storage resiliency and scalability options that are available when using Azure virtual machine scale sets. You also want to explore the ability to automatically configure virtual machines and virtual machine scale sets by using the Azure Virtual Machine Custom Script extension.

Objectives

In this lab, you will:

  • Task 1: Deploy zone-resilient Azure virtual machines by using the Azure portal and an Azure Resource Manager template
  • Task 2: Configure Azure virtual machines by using virtual machine extensions
  • Task 3: Scale compute and storage for Azure virtual machines
  • Task 4: Deploy zone-resilient Azure virtual machine scale sets by using the Azure portal
  • Task 5: Configure Azure virtual machine scale sets by using virtual machine extensions
  • Task 6: Scale compute and storage for Azure virtual machine scale sets (optional)

Instructions

Exercise 1

Task 1: Deploy zone-resilient Azure virtual machines by using the Azure portal and an Azure Resource Manager template

In this task, you will deploy Azure virtual machines into different availability zones by using the Azure portal and an Azure Resource Manager template.

  1. Sign in to the Azure portal.

  2. In the Azure portal, search for and select Virtual machines and, on the Virtual machines blade, click + Add.

  3. On the Basics tab of the Create a virtual machine blade, specify the following settings (leave others with their default values):

    Setting Value
    Subscription the name of the Azure subscription you will be using in this lab
    Resource group the name of a new resource group az104-08-rg01
    Virtual machine name az104-08-vm0
    Region select one of the regions that support availability zones and where you can provision Azure virtual machines
    Availability options Availability zone
    Availability zone 1
    Image Windows Server 2019 Datacenter
    Azure Spot instance No
    Size Standard D2s v3
    Username Student
    Password Pa55w.rd1234
    Public inbound ports None
    Already have a Windows Server license No
  4. Click Next: Disks > and, on the Disks tab of the Create a virtual machine blade, specify the following settings (leave others with their default values):

    Setting Value
    OS disk type Standard HDD
    Enable Ultra Disk compatibility No
  5. Click Next: Networking > and, on the Networking tab of the Create a virtual machine blade, click Create new below the Virtual network textbox.

  6. On the Create virtual network blade, specify the following settings (leave others with their default values):

    Setting Value
    Name az104-08-rg01-vnet
    Address range 10.80.0.0/20
    Subnet name subnet0
    Subnet range 10.80.0.0/24
  7. Click OK and, back on the Networking tab of the Create a virtual machine blade, specify the following settings (leave others with their default values):

    Setting Value
    Public IP None
    NIC network security group None
    Accelerated networking Off
    Place this virtual machine behind an existing load balancing solution? No
  8. Click Next: Management > and, on the Management tab of the Create a virtual machine blade, specify the following settings (leave others with their default values):

    Setting Value
    Boot diagnostics Off
  9. Click Next: Advanced >, on the Management tab of the Create a virtual machine blade, review the available settings without modifying any of them, and click Review + Create.

  10. On the Review + Create blade, click Create.

  11. On the deployment blade, click Template.

  12. Review the template representing the deployment in progress and click Deploy.

    Note

    : You will use this option to deploy the second virtual machine with matching configuration except for the availability zone.

  13. On the Custom deployment blade, specify the following settings (leave others with their default values):

    Setting Value
    Resource group az104-08-rg01
    Network Interface Name az104-08-vm1-nic1
    Virtual Machine Name az104-08-vm1
    Admin Username Student
    Admin Password Pa55w.rd1234
    Zone 2

    Note

    : You need to modify parameters corresponding to the properties of the distinct resources you are deploying by using the template, including the virtual machine and its network interface. You also need to specify a different availability zone if you want your deployment consisting of two virtual machines to be zone redundant.

  14. Enable the checkbox I agree to the terms and conditions stated above and click Purchase.

    Note

    : Wait for both deployments to complete before you proceed to the next task. This might take about 3 minutes.

Task 2: Configure Azure virtual machines by using virtual machine extensions

In this task, you will install Windows Server Web Server role on the two Azure virtual machines you deployed in the previous task by using the Custom Script virtual machine extension.

  1. In the Azure portal, search for and select Virtual machines and, on the Virtual machines blade, click az104-08-vm0.

  2. On the az104-08-vm0 virtual machine blade, in the Settings section, click Extensions, and the click + Add.

  3. On the New resource blade, click Custom Script Extension and then click Create.

  4. From the Install extension blade, upload the script az104-08-install_IIS.ps1 from \Allfiles\Labs\08 and click OK.

  5. In the Azure portal, search for and select Virtual machines and, on the Virtual machines blade, click az104-08-vm1.

  6. On the az104-08-vm1 blade, in the Settings section, click Export template.

  7. On the az104-08-vm1 - Export template blade, click Deploy.

  8. On the Custom deployment blade, click Edit template.

  9. On the Edit template blade, in the section displaying the content of the template, insert the following code starting with line 20 (directly underneath the "resources": [ line):

         {
             "type": "Microsoft.Compute/virtualMachines/extensions",
             "name": "az104-08-vm1/customScriptExtension",
             "apiVersion": "2018-06-01",
             "location": "[resourceGroup().location]",
             "dependsOn": [
                 "az104-08-vm1"
             ],
             "properties": {
                 "publisher": "Microsoft.Compute",
                 "type": "CustomScriptExtension",
                 "typeHandlerVersion": "1.7",
                 "autoUpgradeMinorVersion": true,
                 "settings": {
                     "commandToExecute": "powershell.exe Install-WindowsFeature -name Web-Server -IncludeManagementTools && powershell.exe remove-item 'C:\\inetpub\\wwwroot\\iisstart.htm' && powershell.exe Add-Content -Path 'C:\\inetpub\\wwwroot\\iisstart.htm' -Value $('Hello World from ' + $env:computername)"
               }
             }
         },   
    
    

    Note

    : This section of the template defines the same Azure virtual machine custom script extension that you deployed earlier to the first virtual machine via Azure PowerShell.

  10. Click Save and, back on the Custom template blade, enable the checkbox I agree to the terms and conditions stated above and click Purchase.

    Note

    : Disregard the message stating The resource group is in a location that is not supported by one or more resources in the template. Please choose a different resource group. This is expected and can be ignored in this case.

    Note

    : Wait for the template deployment to complete. You can monitor its progress from the Extensions blade of the az104-08-vm0 and az104-08-vm1 virtual machines. This should take no more than 3 minutes.

  11. To verify that the Custom Script extension-based configuration was successful, navigate back on the az104-08-vm1 blade, in the Operations section, click Run command, and, in the list of commands, click RunPowerShellScript.

  12. On the Run Command Script blade, type the following and click Run to access the web site hosted on az104-08-vm0:

    Invoke-WebRequest -URI http://10.80.0.4 -UseBasicParsing
    

    Note

    : The -UseBasicParsing parameter is necessary to eliminate dependency on Internet Explorer to complete execution of the cmdlet

    Note

    : You can also connect to az104-08-vm0 and run Invoke-WebRequest -URI http://10.80.0.5 to access the web site hosted on az104-08-vm1.

Task 3: Scale compute and storage for Azure virtual machines

In this task you will scale compute for Azure virtual machines by changing their size and scale their storage by attaching and configuring their data disks.

  1. In the Azure portal, search for and select Virtual machines and, on the Virtual machines blade, click az104-08-vm0.

  2. On the az104-08-vm0 virtual machine blade, click Size and set the virtual machine size to Standard DS1_v2

    Note

    : Choose another size if Standard DS1_v2 is not available.

  3. On the az104-08-vm0 virtual machine blade, click Disks, click + Add data disk, and, in the Name drop down list, click Create disk.

  4. Create a managed disk with the following settings (leave others with their default values):

    Setting Value
    Disk name az104-08-vm0-datadisk-0
    Source type None
    Account type Premium SSD
    Size 1024 GiB
  5. Back on the az104-08-vm0 - Disks blade, click + Add data disk, and, in the Name drop down list, click Create disk.

  6. Create a managed disk with the following settings (leave others with their default values):

    Setting Value
    Disk name az104-08-vm0-datadisk-1
    Source type None
    Account type Premium SSD
    Size 1024 GiB
  7. Back on the az104-08-vm0 - Disks blade, click Save.

  8. On the az104-08-vm0 blade, in the Operations section, click Run command, and, in the list of commands, click RunPowerShellScript.

  9. On the Run Command Script blade, type the following and click Run to create a drive Z: consisting of the two newly attached disks with the simple layout and fixed provisioning:

    New-StoragePool -FriendlyName storagepool1 -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks (Get-PhysicalDisk -CanPool $true)
    
    New-VirtualDisk -StoragePoolFriendlyName storagepool1 -FriendlyName virtualdisk1 -Size 2046GB -ResiliencySettingName Simple -ProvisioningType Fixed
    
    Initialize-Disk -VirtualDisk (Get-VirtualDisk -FriendlyName virtualdisk1)
    
    New-Partition -DiskNumber 4 -UseMaximumSize -DriveLetter Z
    

    Note

    : Wait for the confirmation that the commands completed successfully.

  10. In the Azure portal, search for and select Virtual machines and, on the Virtual machines blade, click az104-08-vm1.

  11. On the az104-08-vm1 blade, in the Settings section, click Export template.

  12. On the az104-08-vm1 - Export template blade, click Deploy.

  13. On the Custom deployment blade, click Edit template.

  14. On the Edit template blade, in the section displaying the content of the template, replace the line 30 "vmSize": "Standard_D2s_v3" with the following line):

                     "vmSize": "Standard_DS1_v2"
    
    

    Note

    : This section of the template defines the same Azure virtual machine size as the one you specified for the first virtual machine via the Azure portal.

  15. On the Edit template blade, in the section displaying the content of the template, replace line 49 ( "dataDisks": [ ] line) with the following code :

                     "dataDisks": [
                       {
                         "lun": 0,
                         "name": "az104-08-vm1-datadisk0",
                         "diskSizeGB": "1024",
                         "caching": "ReadOnly",
                         "createOption": "Empty"
                       },
                       {
                         "lun": 1,
                         "name": "az104-08-vm1-datadisk1",
                         "diskSizeGB": "1024",
                         "caching": "ReadOnly",
                         "createOption": "Empty"
                       }
                     ]
    

    Note

    : This section of the template creates two managed disks and attaches them to az104-08-vm1, similarly to the storage configuration of the first virtual machine via the Azure portal.

  16. Click Save and, back on the Custom template blade, enable the checkbox I agree to the terms and conditions stated above and click Purchase.

    Note

    : Disregard the message stating The resource group is in a location that is not supported by one or more resources in the template. Please choose a different resource group. This is expected and can be ignored in this case.

    Note

    : Wait for the template deployment to complete. You can monitor its progress from the Extensions blade of the az104-08-vm1 virtual machine. This should take no more than 3 minutes.

  17. Back on the az104-08-vm1 blade, in the Operations section, click Run command, and, in the list of commands, click RunPowerShellScript.

  18. On the Run Command Script blade, type the following and click Run to create a drive Z: consisting of the two newly attached disks with the simple layout and fixed provisioning:

    New-StoragePool -FriendlyName storagepool1 -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks (Get-PhysicalDisk -CanPool $true)
    
    New-VirtualDisk -StoragePoolFriendlyName storagepool1 -FriendlyName virtualdisk1 -Size 2046GB -ResiliencySettingName Simple -ProvisioningType Fixed
    
    Initialize-Disk -VirtualDisk (Get-VirtualDisk -FriendlyName virtualdisk1)
    
    New-Partition -DiskNumber 4 -UseMaximumSize -DriveLetter Z
    

    Note

    : Wait for the confirmation that the commands completed successfully.

Task 4: Deploy zone-resilient Azure virtual machine scale sets by using the Azure portal

In this task, you will deploy Azure virtual machine scale set across availability zones by using the Azure portal.

  1. In the Azure portal, search for and select Virtual machine scale sets and, on the Virtual machine scale sets blade, click + Add.

  2. On the Create a virtual machine scale set blade, specify the following settings (leave others with their default values):

    Setting Value
    Virtual machine scale set name az10408vmss0
    Operating system disk image Windows Server 2016 Datacenter
    Subscription the name of the Azure subscription you are using in this lab
    Resource group the name of a new resource group az104-08-rg02
    Location select one of the regions that support availability zones and where you can provision Azure virtual machines different from the one you used to deploy virtual machines earlier in this lab
    Availability zone Zones 1, 2, 3
    Username Student
    Password Pa55w.rd1234
    Instance count 2
    Size Standard D2s v3
    Autoscale Disabled
    Choose load balancing options Load balancer
    Public IP address name az10408vmss0-pip
    Domain name label any unique DNS name

    Note

    : For the list of Azure regions which support deployment of Windows virtual machines to availability zones, refer to What are Availability Zones in Azure?

  3. Click the Create new link below the Virtual network textbox and create a new virtual network with the following settings (leave others with their default values):

    Setting Value
    Name az104-08-rg02-vnet
    Address range 10.82.0.0/20
    Subnet name subnet0
    Subnet range 10.82.0.0/24

    Note

    : Once you create a new virtual network and return to the Create a virtual machine scale set blade, the Virtual network and Subnet values will be automatically set to az104-08-rg02-vnet and subnet0.

  4. Back on the Create a virtual machine scale set blade, select the Advanced option next to the NIC network security group label and click Create new.

  5. On the Create network security group blade, specify the following settings (leave others with their default values):

    Setting Value
    Name az10408vmss0-nsg
  6. Click Add an inbound rule and add an inbound security rule with the following settings (leave others with their default values):

    Setting Value
    Source Any
    Source port ranges *
    Destination Any
    Destination port ranges 80
    Protocol TCP
    Action Allow
    Priority 1010
    Name custom-allow-http

    Note

    : Once you create a new virtual network and return to the Create a virtual machine scale set blade, the NIC network security group value will be automatically set to az10408vmss0-nsg.

  7. Back on the Create a virtual machine scale set blade, specify the following settings (leave others with their default values):

    Setting Value
    Boot diagnostics Off
    System assigned managed identity Off

    Note

    : Wait for the virtual machine scale set deployment to complete. This should take about 3 minutes.

Task 5: Configure Azure virtual machine scale sets by using virtual machine extensions

In this task, you will install Windows Server Web Server role on the instances of the Azure virtual machine scale set you deployed in the previous task by using the Custom Script virtual machine extension.

  1. In the Azure portal, refresh the Virtual machine scale sets blade and click az10408vmss0.

  2. On the az10408vmss0 blade, click Extensions, and the click + Add.

  3. On the New resource blade, click Custom Script Extension and then click Create.

  4. From the Install extension blade, upload the script az104-08-install_IIS.ps1 from \Allfiles\Labs\08 and click OK.

    Note

    : Wait for the installation of the extension to complete before proceeding to the next step.

  5. In the Settings section of the az10408vmss0 blade, click Instances, select the checkboxes next to the two instances of the virtual machine scale set, click Upgrade, and then, when prompted for confirmation, click Yes.

    Note

    : Wait for the upgrade to complete before proceeding to the next step.

  6. In the Azure portal, search for and select Load balancers and, in the list of load balancers, click az10408vmss0lb.

  7. On the az10408vmss0lb blade, note the value of the Public IP address assigned to the frontend of the load balancer, open an new browser tab, and navigate to that IP address.

    Note

    : Verify that the browser page displays the name of one of the instances of the Azure virtual machine scale set az10408vmss0.

Task 6: Scale compute and storage for Azure virtual machine scale sets

In this task, you will change the size of virtual machine scale set instances, configure their autoscaling settings, and attach disks to them.

  1. In the Azure Portal, on the az10408vmss0 blade, click Size.

  2. In the list of available sizes, select Standard DS1_v2 and click Resize.

  3. In the Settings section, click Instances, select the checkboxes next to the two instances of the virtual machine scale set, click Upgrade, and then, when prompted for confirmation, click Yes.

  4. In the list of instances, click the entry representing the first instance and, on the scale set instance blade, note its Location (it should be one of the zones in the target Azure region into which you deployed the Azure virtual machine scale set).

  5. Return to the az10408vmss0 - Instances blade, click the entry representing the second instance and, on the scale set instance blade, note its Location (it should be one of the other two zones in the target Azure region into which you deployed the Azure virtual machine scale set).

  6. Return to the az10408vmss0 - Instances blade and click Scaling.

  7. On the az10408vmss0 - Scaling blade, select the Custom autoscale option and configure autoscale with the following settings (leave others with their default values):

    Setting Value
    Scale mode Scale based on a metric
  8. Click the + Add a rule link and, on the Scale rule blade, specify the following settings (leave others with their default values):

    Setting Value
    Metric source Current resource (az10480vmss0)
    Time aggregation Maximum
    Metric namespace Virtual Machine Host
    Metric name Network In Total
    Operator Greater than
    Metric threshold to trigger scale action 10
    Duration (in minutes) 1
    Time grain statistic Maximum
    Operation Increase count by
    Instance count 1
    Cool down (minutes) 5

    Note

    : Obviously these values do not represent a realistic configuration, since their purpose is to trigger autoscaling as soon as possible, without extended wait period.

  9. Click Add and, back on the az10408vmss0 - Scaling blade, specify the following settings (leave others with their default values):

    Setting Value
    Instance limits Minimum 1
    Instance limits Maximum 3
    Instance limits Default 1
  10. Click Save.

  11. In the Azure portal, open the Azure Cloud Shell by clicking on the icon in the top right of the Azure Portal.

  12. If prompted to select either Bash or PowerShell, select PowerShell.

    Note

    : If this is the first time you are starting Cloud Shell and you are presented with the You have no storage mounted message, select the subscription you are using in this lab, and click Create storage.

  13. From the Cloud Shell pane, run the following to identify the public IP address of the load balancer in front of the Azure virtual machine scale set az10408vmss0.

    $rgName = 'az104-08-rg02'
    
    $lbpipName = 'az10408vmss0-pip'
    
    $pip = (Get-AzPublicIpAddress -ResourceGroupName $rgName -Name $lbpipName).IpAddress
    
  14. From the Cloud Shell pane, run the following to start and infinite loop that sends the HTTP requests to the web sites hosted on the instances of Azure virtual machine scale set az10408vmss0.

    while ($true) { Invoke-WebRequest -Uri "http://$pip" }
    
  15. Minimize the Cloud Shell pane but do not close it, switch back to the az10408vmss0 - Instances blade and monitor the number of instances.

    Note

    : You might need to wait a couple of minutes and click Refresh.

  16. Once the third instance is provisioned, navigate to its blade to determine its Location (it should be different than the first two zones you identified earlier in this task.

  17. Close Cloud Shell pane.

  18. On the az10408vmss0 blade, click Storage, click + Add data disk, and attach a new managed disk with the following settings (leave others with their default values):

    Setting Value
    LUN 0
    Size 32
    Account type Standard HDD
    Host caching None
  19. Save the change, in the Settings section of the az10408vmss0 blade, click Instances, select the checkboxes next to the two instances of the virtual machine scale set, click Upgrade, and then, when prompted for confirmation, click Yes.

    Note

    : The disk attached in the previous step is a raw disks. Before it can be used, it is necessary to create a partition, create a filesystem, and mount it. To accomplish this, you will use Azure virtual machine Custom Script extension. First, you will need to remove the existing Custom Script Extension.

  20. In the Settings section of the az10408vmss0 blade, click Extensions, click CustomScriptExtension, and then click Uninstall.

    Note

    : Wait for uninstallation to complete.

  21. In the Azure portal, open the Azure Cloud Shell by clicking on the icon in the top right of the Azure Portal.

  22. If prompted to select either Bash or PowerShell, select PowerShell.

  23. In the toolbar of the Cloud Shell pane, click the Upload/Download files icon, in the drop-down menu, click Upload and upload the file \Allfiles\Labs\08\az104-08-configure_VMSS_disks.ps1 into the Cloud Shell home directory.

  24. From the Cloud Shell pane, run the following to display the content of the script:

    Set-Location -Path $HOME
    
    Get-Content -Path ./az104-08-configure_VMSS_disks.ps1
    

    Note

    : The script installs a custom script extension that configures the attached disk.

  25. From the Cloud Shell pane, run the following to excecute the script and configure disks of Azure virtual machine scale set:

    ./az104-08-configure_VMSS_disks.ps1
    
  26. Close the Cloud Shell pane.

  27. In the Settings section of the az10408vmss0 blade, click Instances, select the checkboxes next to the two instances of the virtual machine scale set, click Upgrade, and then, when prompted for confirmation, click Yes.

Clean up resources

Note

: Remember to remove any newly created Azure resources that you no longer use. Removing unused resources ensures you will not see unexpected charges.

  1. In the Azure portal, open the PowerShell session within the Cloud Shell pane.

  2. List all resource groups created throughout the labs of this module by running the following command:

    Get-AzResourceGroup -Name 'az104-08*'
    
  3. Delete all resource groups you created throughout the labs of this module by running the following command:

    Get-AzResourceGroup -Name 'az104-08*' | Remove-AzResourceGroup -Force -AsJob
    

    Note

    : The command executes asynchronously (as determined by the -AsJob parameter), so while you will be able to run another PowerShell command immediately afterwards within the same PowerShell session, it will take a few minutes before the resource groups are actually removed.

Review

In this lab, you have:

  • Deployed zone-resilient Azure virtual machines by using the Azure portal and an Azure Resource Manager template
  • Configured Azure virtual machines by using virtual machine extensions
  • Scaled compute and storage for Azure virtual machines
  • Deployed zone-reslient Azure virtual machine scale sets by using the Azure portal
  • Configured Azure virtual machine scale sets by using virtual machine extensions
  • Scaled compute and storage for Azure virtual machine scale sets