In my working world, I recently have discovered the relatively new feature in Azure – DNS.
From my early playing round it seems great! Very fast to update and easy to control with scripting.
You will need the Azure PowerShell provider. Very simple to get.
You basically open up PowerShell and type:
Install-Module AzureRM
And then you wait 5 mins while it gets and installs a whole bunch of stuff..
These two links are handy to give you insight in to how to connect and running different commands:
https://docs.microsoft.com/en-us/powershell/azureps-cmdlets-docs/
https://docs.microsoft.com/en-us/azure/dns/dns-operations-dnszones
Below is a script i wrote that that adds an A record. It does a few checks and creates the dependent bits if they don’t exist – basically you need a resource group to put the DNS zone in, then you need a DNS zone and then you can create a record.
Couple of things to note from the script – you will want to set your location – my closest is “australiasoutheast” – you will want to find your preferred location to create your resource groups.
Second thing, I found this out by accident but very handy.. you can sign in to AzureRM and then ‘export’ your sign in details to a JSON file where the password etc is encrypted.. then in your script you can just use the Select-AzureRmProfile command and point it at the file, and it takes care of establishing a session with AzureRM.
Export your login details:
#Login - this prompts auth crenetials Login-AzureRmAccount #Once you are auth'd you can export your login credentials to an encrypted JSON file Save-AzureRmProfile -Path “..\azureprofile.json”
Here’s the script – you can see it uses the saved credentials above:
param ( [string] $zone, #eg: paultest100.com [string] $hostname, #eg: www.paultest100.com [string] $address, #eg: 10.20.30.40 [int] $TTL #eg: 3600 ) #get record from hostname - strip off the zone $z = $hostname.Replace($zone, '').TrimEnd('.') #create resource group name $rgName = "MyDNSResources" #Login Select-AzureRmProfile -Path "..\azureprofile.json" #Get Resource Group - Create if it doesn't exist $rg = Get-AzureRmResourceGroup -Name $rgName if ($rg -eq $null) { $rg = New-AzureRmResourceGroup -Name $rgName -location "australiasoutheast" } #Get DNS Zone - Create if it doesn't exist $dnsZone = Get-AzureRmDnsZone -Name $zone -ResourceGroupName $rg.ResourceGroupName if ($dnsZone -eq $null) { $dnsZone = New-AzureRmDnsZone -Name $zone -ResourceGroupName $rg.ResourceGroupName } #Get A record - Create if it doesn't exist $dnsRecord = Get-AzureRmDnsRecordSet -Name $z -RecordType A -ZoneName $dnsZone.Name -ResourceGroupName $rg.ResourceGroupName if ($dnsRecord -eq $null) { #Create A Record New-AzureRmDnsRecordSet -Name $z -RecordType A -ZoneName $dnsZone.Name -ResourceGroupName $rg.ResourceGroupName -Ttl $TTL -DnsRecords (New-AzureRmDnsRecordConfig -IPv4Address $Address) -Overwrite -Force }