Base Resource Group
We begin by deploying a resource group with a set of permanent resources. These resources do not get created or deleted for each exam. Instead, they are shared between exam deployments.
1. Create the Resource Group
Create a new Resource Group named schoolyear-base
.
You can do this through the Azure portal.
Deploy the Resource Group in the region you plan on using for this Schoolyear AVD implementation.
The resources you deploy in the following steps, should be created in this Resource Group.
2. Create a DNS zone
This guide, like many Microsoft provided guides, assumes syproxy.contoso.com
is the domain you are going to use
for this Schoolyear AVD implementation.
Create a new Public DNS Zone named syproxy.contoso.com
.
If the DNS zone of the parent domain (contoso.com
) is also hosted in Azure,
Azure can automatically set up your nameservers.
Make sure you check This zone is a child of an existing zone already hosted in Azure DNS
in the
DNS Zone creation wizard.
If the parent DNS zone is hosted elsewhere, you must set up the nameservers manually:
-
Navigate to your newly created DNS Zone.
-
Note down the 4 name servers (e.g.
ns*-**.azure-dns.com
). -
Navigate to the parent’s DNS zone. This may be managed in a tool completely disconnected from your Azure tenant.
-
Create a new
NS
record namedsyproxy.contoso.com
and put in the 4 name servers you noted down in a previous step.
To validate if the DNS zone is deployed correctly, you can use this publicly available tool (or similar) to check
if the SOA
records that are automatically created by Azure are available using public DNS resolution.
-
Enter your subdomain
syproxy.contoso.com
-
Check if the returned
SOA
record matches theSOA
displayed in the Azure Portal (DNS zone > DNS Management > Recordsets).
HTTPS wildcard certificate
You will need to request a wildcard certificate for *.syproxy.contoso.com
and store it in a KeyVault.
Your organisation may have specific rules and policies for requesting a certificate, so your steps may vary.
In this guide we explain how to request the certificate from Let’s Encrypt, one of the most widely used (and free) Certificate Authorities on the internet.
Regardless of how you obtain the certificate, it must be stored in a KeyVault, which we will create first.
Creating the KeyVault
Create a new KeyVault through the Azure Portal named sykeyvault
Use the same region as you used for the Resource Group.
- Pricing tier:
Standard
- Permission model:
Azure role-based access control
- Enable public access:
Yes
- Allow access from:
All networks
By default, even users with an Owner
role on a Subscription, do not have full access to a KeyVault.
Grant yourself the Key Vault Administrator
role on the Resource Group.
Granting the role on the KeyVault itself does not work.
Using Let’s Encrypt
-
Install the
certbot
CLI tool on your machine. Seehttps://certbot.eff.org/instructions
for the most up-to-date installation instructions. -
Install the
openssl
CLI tool on your machine. You can usebrew
orchoco
for this or use your preferred method. -
Open a terminal in a temporary directory you can easily delete at the end.
-
Start the request process. Make sure you fill in your own domain (including the
*.
) and email. -
Certbot will instruct you to create a
TXT
DNS entry in your newly created DNS zone. Follow these instructions. Once you complete the instructions and the certificate is issued, Certbot will show you the path in which the certificate is stored. Note down thispath
, as you need it in the following step. -
Run the following command to pack the two files created by Certbot into a single certificate file. that can be imported into the KeyVault. Replace
path
with thepath
Certbot gave you in the previous step. This command will ask you for a password. You can generate a temporary password using your preferred method. You will only need it in the following step. -
Navigate to the KeyVault you created earlier. Go to “Certificates” and click “Generate/Import”. Upload the
cert.pfx
you created usingopenssl
and the password from the previous step. Name the certificateproxycertificate
. -
Delete the temporary directory you created in step 2.