Step-by-step: My first Azure Resource Group Template

Det finns ett nytt sätt att bygga din infrastruktur I molnet på och i det här blogginlägget tänkte jag visa hur det fungerar genom att med hjälp av resursgrupper och mallar för en sådan resursgrupp skapa en infrastruktur med kod i Visual Studio.

Det jag kommer att göra är att:

  1. Skapa ett resursgruppsprojekt i Visual Studio
  2. Förklara vad ett sådant projekt innehåller
  3. Rulla ut en virtuell server med tillhörande nätverk och lagring till Azure med Visual Studio
  4. …och sen visa att det egentligen görs i Powershell och att det går alldeles utmärkt att köra det direkt i Powershell också
  5. Eller som ett tredje alternativ: Att göra allt i Azure-portalen

Skapa ett resursgruppsprojekt i Visual Studio

Vi öppnar Visual Studio och väljer att skapa ett nytt projekt och väljer då Azure Resource Group:

Vi väljer sen det allra enklaste, en enkel ensamstående Windows Server-maskin:

Vad innehåller projektet?

I sin helhet ser det nu ut såhär:

Till höger i din ”Solution Explorer” ser du nu ett antal filer. Under ”Templates” hittar du en fil som slutar på .json, det här är din mall som beskriver din infrastruktur med nätverk, lagring, servrar och så vidare. 

Till vänster så ser du alla resurser under ”Resources”, i just det här projektet ser du att vi har fem olika resurser som ingår i vår mall:

Om du dubbelklickar på resursen ”Virtual Machine” ser det ut såhär:

Förutom viktiga saker som hårdvaruprofil, OS-profil och andra saker som definierar din virtuella server så hittar vi något väldigt intressant under det som heter ”dependsOn”. Det du hittar under det avsnittet förklarar vad som måste finnas på plats innan den här resursen skapas.

Alltså: Innan vår virtuella server kan komma till världen måste vi ha ett storage-konto och ett virtuellt nätverk. På så sätt säkerställer vi att saker skapas i rätt ordning och att en viss resurs inte skapas innan en annan resurs som den första resursen är beroende av finns på plats. På det sättet kan vi t.ex. se till att flera servrar skapas i rätt ordning.

Läs gärna mer om det här t.ex. här: https://msdn.microsoft.com/en-us/library/azure/dn835138.aspx

Om du nu istället klickar på en variabel under ”variables” så kommer du hit:

Det är den den delen av json-dokumentet där mallens alla variabler finns samlade. I vår mall har vi t.ex. variabler för saker som subnät, container-namn, namn på nätverk, location för våra servrar och mycket annat.

Vi går nu vidare till nästa viktiga fil genom att öppna upp det dokument som slutar på .param.dev.json:

Det här är de parametrar som måste fyllas i av den som vill rulla ut denna mall. Det är namn på lagringskonto, namn på administratörskonton och även önskat publikt DNS-namn.

Öppna nu filen under ”Scripts” som slutar på .ps1:

Det här är bara ett vanligt Powershell-script som med hjälp av din mall och dina parametrar nu kopplar upp sig mot din Azure-prenumeration och rullar ut alla resurser.

Markerat i gult är kommandot ”Switch-AzureMode AzureResourceManager”, det är ett kommando som du måste köra för att med Powershell hantera den här typen av mallar. Läs gärna mer om det här: https://azure.microsoft.com/en-us/documentation/articles/powershell-azure-resource-manager/

Rulla ut resursgruppen med Visual Studio

Du kan nu högerklicka på ditt projekt och välja ”Deploy” för att komma hit:

Här får du fylla i de parametrar som var definierade i din parameter-fil och du kan sedan klicka på ”Deploy” för att rulla ut din lösning till ditt Azure-konto.

Rulla ut resursgruppen med Powershell ISE

Eftersom allt bygger på ett Powershell-script kan du självklart öppna upp det i Powershell ISE och göra allt därifrån också.

Det ser ut såhär:

Utrullning i Azure-portalen

En tredje variant är att ta din json-kod och klistra in i Azure-portalen och styra allt därifrån. Det ser ut såhär:

Lär dig mer

Azure Resource Manager Template Language: https://msdn.microsoft.com/en-us/library/azure/dn835138.aspx

Azure Resource Manager DevOps Jump Start: http://www.microsoftvirtualacademy.com/training-courses/azure-resource-manager-devops-jump-start

A Monster VM Azure Resource Manager Template: https://alexandrebrisebois.wordpress.com/2015/05/16/using-azure-resource-manager-arm-to-deploy-a-monster-vm/

TechDays Pre Conf - Azure IAAS Ninja Bootcamp: http://tdswe.kistamassan.se/Program-2015/Sessioner/Pre-Conf-Azure-IAAS-Ninja-Bootcamp