Azure Resource Manager (ARM) – Templates

Att använda Azure som plattform för sin infrastruktur har dom flesta förstått kan ge stora fördelar inom flera segment och är det något som jag gillar extra mycket så handlar det om effektivisering i form av tid. Att skapa och konfigurera infrastruktur i Azure har länge varit enkelt, smidigt och kostnadseffektivt, men hur kan man göra det mer effektivt, automatiserat och samtidigt få det dokumenterat fullt ut?
Många har enda sedan starten av Azure försökt bygga script med hjälp av Powershell för att få en automatiserad process för provisionering och konfigurering av sin infrastruktur vilket har fungerat bra, men sedan lanseringen av Resource Manager i Azure kan man nu på ett enkelt sätt använda sig av mallar i .json format i kombination av Powershell.

Vad betyder det här i praktiken då? Det innebär att vi kan förkonfigurera vår infrastruktur i mallar, dessa mallar kan vi sedan använda för att provisionera infrastruktur direkt i Azure. Mallarna kan vi sedan versionshantera vilket innebär att om det i framtiden (vilket det troligtvis gör) sker förändringar i miljön så kan vi använda samma mallar för att göra uppdateringen, ARM kommer att känna igen vilken befintlig infrastruktur som finns i miljön och bara ändra dom parametrarna som vi har sagt ska ändras, uppdateras eller ta bort, utan att vi gör några andra typer av konfigurationer i vår provisionering.
För att ge ett litet smakprov så har jag konstruerat nedanstående script i Powershell som använder sig av .json mallar för att skapa infrastruktur i Azure.

Param(
    [string] $ResourceGroupLocation = "westeurope", #Ändra till det datacentret som din infrastruktur ska provisioneras till
    [string] $ResourceGroupName = 'Molnbolaget-ILB', #Sätt namnet för din resursgrupp
    [string] $TemplateFile = "http://ld-molnbolaget.azurewebsites.net/wp-content/uploads/2016/06/molnbolaget.deploy.json",
    [string] $TemplateParametersFile = "http://ld-molnbolaget.azurewebsites.net/wp-content/uploads/2016/06/molnbolaget.parameters.json",
    [string] $SubscriptionId = "fae91d35-f0d5-42ca-83b5-a0c1e3s8a256" #Ändra till rätt ID för din prenumeration i Azure
)

#Logga in med ditt konto i Azure Active Directory
Add-AzureRmAccount

#Prenumeration väljs utifrån det ID som du har angett i $SubscriptionId parametern
Select-AzureRmSubscription -SubscriptionId $SubscriptionId

#Skapandet av resursgruppen som övriga resurser ska hamna i
New-AzureRmResourceGroup -Name $ResourceGroupName -Location $ResourceGroupLocation -Verbose -Force -ErrorAction Stop

#Skapandet av infrastrutkuren sker utifrån Paramater och Templatefilen.
New-AzureRmResourceGroupDeployment -Name ("Deploy" + '-' + ((Get-Date).ToUniversalTime()).ToString('MMdd-HHmm')) `
                                   -ResourceGroupName $ResourceGroupName `
                                   -TemplateUri $TemplateFile `
                                   -TemplateParameterUri $TemplateParametersFile

Vad kommer då att skapas om man kör ovanstående script rakt av under förutsättning att man loggar in med ett konto i Azure Active Directory som har rättigheter att skapa resurser i den angivna prenumerationen? Svaret är följande:
ARM-create

En kort sammanfattning över vad som skapas är två virtuella servrar som tillsammans skapar ett internt NLB-kluster över port 80/tcp. Förutsättningen för att det ska fungera är bland annat ett Storage Account, Network Interface, Virtual Network, Availability set samt en Load Balancer vilket också skapas via ovanstående mall.

Namnsättning, vad som skapas och hur är definerade i Deploy samt Parameter filerna, självklart går det bra att modifiera innehållet efter eget tycke och smak.

Jag hoppas att det här skapar en större förståelse över hur man nu och framåt kan skapa och hantera sin infrastruktur med hjälp av kod.

Mvh
Patrik

2 kommentarer på “Azure Resource Manager (ARM) – Templates

Lämna ett svar

E-postadressen publiceras inte. Obligatoriska fält är märkta *