Övning – Konfigurera din Azure DevOps-miljö
I det här avsnittet får du lära dig hur du konfigurerar din Azure DevOps-organisation och skapar den Azure App Service-miljö som du ska distribuera till.
Du får lära dig att:
- Konfigurera ditt Azure DevOps-projekt.
- Hantera dina arbetsobjekt med Azure Boards.
- Skapa din Azure App Service-miljö.
- Skapa pipelinevariabler i Azure Pipelines.
- Skapa en tjänstanslutning för att autentisera med din Azure-prenumeration.
Lägga till en användare i Azure DevOps
För att slutföra den här modulen behöver du en egen Azure-prenumeration. Du kan komma igång med Azure kostnadsfritt.
Du behöver ingen Azure-prenumeration för att fungera med Azure DevOps, men i den här modulen använder du Azure DevOps för att distribuera till Azure-resurser. För att förenkla processen använder du samma Microsoft-konto för att logga in på både Azure och Azure DevOps.
Om du använder olika Microsoft-konton för att logga in på Azure och Azure DevOps lägger du till en användare med Grundläggande åtkomstnivå till din DevOps-organisation under det Microsoft-konto som du använder för att logga in på Azure. Mer information finns i Lägga till användare i din organisation eller projekt.
Logga sedan ut från Azure DevOps och logga in igen med samma konto som du använde för att logga in på din Azure-prenumeration.
Hämta Azure DevOps-projektet
Här ser du till att din Azure DevOps-organisation har konfigurerats för att slutföra resten av den här modulen. För att göra det kör du en mall som skapar ett projekt i Azure DevOps.
Modulerna i den här utbildningsvägen utgör en utveckling. Du följer Tailspin-webbteamet genom deras DevOps-resa. I utbildningssyfte har varje modul ett eget Azure DevOps-projekt.
Kör mallen
Kör en mall som konfigurerar din Azure DevOps-organisation:
Kör mallen genom att följa dessa steg på webbplatsen för Azure DevOps Demo Generator:
Välj Logga in och godkänn användningsvillkoren.
På sidan Skapa nytt projekt väljer du din Azure DevOps-organisation. Ange ett projektnamn som Space Game – web – Docker.
Välj Ja, jag vill förgrena den här lagringsplatsen>Auktorisera. Om du uppmanas att göra det kan du auktorisera åtkomst till ditt GitHub-konto.
Viktig
Du måste välja det här alternativet så att mallen kan ansluta till din GitHub-lagringsplats. Markera kryssrutan även om du redan har "forkat" repositoryt Space Game. Mallen använder din befintliga förgrening.
Välj Skapa projekt.
Välj Navigera till projekt för att gå till projektet i Azure DevOps.
Viktig
I den här modulen innehåller sidan Rensa din Azure DevOps-miljö viktiga rensningssteg. Genom att rensa upp ser du till att du inte får slut på kostnadsfria byggminuter. Följ rensningsstegen även om du inte slutför den här modulen.
Ange projektets synlighet
Ursprungligen är din fork av Space Game-repositoriet på GitHub inställt på att vara offentligt medan projektet som skapats av Azure DevOps-mallen är inställt på att vara privat. En offentlig lagringsplats på GitHub kan nås av vem som helst, medan en privat lagringsplats endast är tillgänglig för dig och de personer som du väljer att dela den med. På samma sätt ger offentliga projekt i Azure DevOps skrivskyddad åtkomst till icke-autentiserade användare, medan privata projekt kräver att användarna beviljas åtkomst och autentiseras för att få åtkomst till tjänsterna.
För närvarande är det inte nödvändigt att ändra någon av dessa inställningar i den här modulen. För dina personliga projekt måste du dock fastställa den synlighet och åtkomst som du vill bevilja andra. Om projektet till exempel är öppen källkod kan du välja att göra både din GitHub-lagringsplats och ditt Azure DevOps-projekt offentliga. Om projektet är proprietärt skulle du vanligtvis göra både din GitHub-lagringsplats och ditt Azure DevOps-projekt privata.
Senare kan följande resurser vara användbara för att avgöra vilket alternativ som är bäst för projektet:
- Använd privata och offentliga projekt
- Snabbstart: Gör ditt privata projekt offentligt
- Ställa in lagringsplatsens synlighet
Flytta arbetsobjektet till Pågående
Här tilldelar du ett arbetsobjekt till dig själv i Azure Boards. Du kommer också att flytta arbetsobjektet till statusen Doing. I praktiken skulle du och ditt team skapa arbetsobjekt i början av varje sprinteller arbetsiteration.
Den här arbetstilldelningen ger dig en checklista att arbeta från. Det ger andra teammedlemmar insyn i vad du arbetar med och hur mycket arbete som återstår. Arbetsobjektet hjälper också till att upprätthålla WIP-begränsningar, så att teamet inte tar på sig för mycket arbete samtidigt.
Här flyttar du det första objektet, Skapa containerversion av webbplatsen med Docker, till kolumnen Doing och tilldelar sedan dig själv till arbetsobjektet.
Så här konfigurerar du arbetsobjektet:
Från Azure DevOps går du till Boards. Välj sedan Boards från menyn.
I Skapa containerversion av webbplatsen med Docker arbetsobjekt väljer du nedåtpilen längst ned på kortet och tilldelar sedan arbetsobjektet till dig själv.
Flytta arbetsobjektet från kolumnen Att göra till kolumnen Doing .
I slutet av den här modulen flyttar du kortet till kolumnen Klar när du har slutfört uppgiften.
Skapa Azure App Service-miljön
I modulen Skapa en versionspipeline med Azure Pipelines skapade du en App Service-instans med hjälp av Azure-portalen. Även om portalen är ett utmärkt verktyg för att utforska Azures erbjudanden kan det bli besvärligt att konfigurera komponenter som App Service.
I den här modulen använder du Azure CLI för att starta de resurser som krävs för att distribuera och köra en App Service-instans. Du kan komma åt Azure CLI från en terminal eller via Visual Studio Code.
Viktig
Du måste ha en egen Azure-prenumeration för att slutföra övningarna i den här modulen.
Starta Cloud Shell i Azure-portalen
Gå till Azure-portalen och logga in.
Välj Cloud Shell i menyraden och välj sedan Bash.
Anmärkning
Cloud Shell kräver att en Azure Storage-resurs bevarar alla filer som du skapar i Cloud Shell. När du först öppnar Cloud Shell uppmanas du att skapa en resursgrupp, ett lagringskonto och en Azure Files-resurs. Den här konfigurationen används automatiskt för alla framtida Cloud Shell-sessioner.
Välj en Azure-region
En region är ett eller flera Azure-datacenter som finns på en viss geografisk plats. Östra USA, Västra USA och Norra Europa är några exempel på regioner. Varje Azure-resurs, till exempel en App Service-instans, allokeras till en viss region.
För att förenkla processen med att köra kommandon börjar du med att välja en standardregion. När standardregionen har angetts använder efterföljande kommandon den regionen som standard om inte en annan region uttryckligen anges.
Kör följande kommando för att visa en lista över tillgängliga regioner för din Azure-prenumeration.
az account list-locations \ --query "[].{Name: name, DisplayName: displayName}" \ --output table
Välj en region som ligger i närheten av din plats från kolumnen Name i utdata. Du kan till exempel välja eastasia eller westus2.
Kör följande kommando för att ange din standardregion. Ersätt platshållaren med namnet på den region som du har valt.
az configure --defaults location=<REGION>
I det här exemplet anges westus2 som standardregion:
az configure --defaults location=westus2
Skapa Bash-variabler
I det här avsnittet skapar du Bash-variabler för att göra installationsprocessen enklare och mindre felbenägen. Genom att använda variabler för delade textsträngar kan du undvika oavsiktliga stavfel.
Generera ett slumptal från Cloud Shell. Detta gör det enklare att skapa globalt unika namn för vissa tjänster i nästa steg.
resourceSuffix=$RANDOM
Skapa globalt unika namn för apptjänstens webbapp och Azure Container Registry. Med dubbla citattecken i dessa kommandon uppmanas Bash att interpolera variablerna med hjälp av den infogade syntaxen.
webName="tailspin-space-game-web-${resourceSuffix}" registryName="tailspinspacegame${resourceSuffix}"
Skapa ytterligare två Bash-variabler för att lagra namnen på resursgruppen och App Service-planen.
rgName='tailspin-space-game-rg' planName='tailspin-space-game-asp'
Skapa Azure-resurserna
Notera
I utbildningssyfte kommer du att använda standardinställningarna för nätverk här. De här inställningarna gör din webbplats tillgänglig från Internet. I praktiken kan du konfigurera ett virtuellt Azure-nätverk som placerar din webbplats i ett nätverk som inte kan dirigeras via Internet och som bara du och ditt team kan komma åt. Senare kan du konfigurera om nätverket så att webbplatsen blir tillgänglig för användarna.
Kör följande
az group create
kommando för att skapa en resursgrupp med det namn som definierades tidigare.az group create --name $rgName
Kör följande
az acr create
kommando för att skapa ett Azure Container Registry med det namn som definierades tidigare.az acr create --name $registryName \ --resource-group $rgName \ --sku Standard \ --admin-enabled true
Kör följande
az appservice plan create
kommando för att skapa en App Service-plan med det namn som definierades tidigare.az appservice plan create \ --name $planName \ --resource-group $rgName \ --sku B1 \ --is-linux
Argumentet
--sku
anger B1-planen. Den här planen körs på basic-nivån. Argumentet--is-linux
anger att Linux-arbetare ska användas.Viktig
Om B1-SKU:n inte är tillgänglig i din Azure-prenumeration välja en annan plan, till exempel S1 (Standard).
Kör följande
az webapp create
kommando för att skapa App Service-instansen.az webapp create \ --name $webName \ --resource-group $rgName \ --plan $planName \ --deployment-container-image-name $registryName.azurecr.io/web:latest
Kör följande
az webapp list
kommando för att visa värdnamnet och tillståndet för App Service-instansen.az webapp list \ --resource-group $rgName \ --query "[].{hostName: defaultHostName, state: state}" \ --output table
Observera värdnamnet för den tjänst som körs. Du behöver det senare när du verifierar ditt arbete. Här är ett exempel:
HostName State ---------------------------------------------- ------- tailspin-space-game-web-4692.azurewebsites.net Running
Kör följande
az acr list
kommando för att lista inloggningsservern för Azure Container Registry-instansen. Du behöver det här servernamnet när du skapar pipelinevariabler senare.az acr list \ --resource-group $rgName \ --query "[].{loginServer: loginServer}" \ --output table
Observera inloggningsservern. Du behöver den senare när du konfigurerar pipelinen. Här är ett exempel:
LoginServer --------------------------------- tailspinspacegame4692.azurecr.io
Viktig
Sidan Rensa din Azure DevOps-miljö i den här modulen innehåller viktiga rensningssteg. Genom att rensa upp ser du till att du inte debiteras för Azure-resurser när du har slutfört den här modulen. Se till att utföra rensningsstegen även om du inte slutför den här modulen.
Skapa pipelinevariabler i Azure Pipelines
I Skapa en versionspipeline med Azure Pipelineshar du lagt till en variabel i din pipeline som lagrar namnet på din webbapp i App Service. Du gör samma sak här. Dessutom lägger du till namnet på ditt Azure Container Registry.
Du kan hårdkoda dessa namn i pipelinekonfigurationen, men om du definierar dem som variabler blir konfigurationen mer återanvändbar. Om instansnamnen ändras kan du dessutom uppdatera variablerna och utlösa pipelinen utan att ändra konfigurationen.
Så här lägger du till variablerna:
I Azure DevOps går du till ditt Space Game – web – Docker-projekt.
Under Pipelinesväljer du Library.
Välj + variabelgrupp.
Under Egenskaperanger du Release för variabelgruppens namn.
Under Variablerväljer du + Lägg till.
Som namn på variabeln anger du WebAppName. För värdet anger du namnet på App Service-instansen som skapades ovan, till exempel tailspin-space-game-web-4692.
Viktig
Ange namnet på App Service-instansen, inte dess värdnamn. I det här exemplet anger du tailspin-space-game-web-4692 och inte tailspin-space-game-web-4692.azurewebsites.net.
Upprepa processen för att lägga till en annan variabel med namnet RegistryName med värdet för din Azure Container Registry-inloggningsserver, till exempel tailspinspacegame4692.azurecr.io.
Välj Pipeline-behörigheteroch välj sedan
+
-ikonen för att lägga till en pipeline. Välj mslearn-tailspin-spacegame-web-docker för att ge din pipeline behörighet att komma åt variabelgruppen.Välj Spara överst på sidan för att spara variablerna. Variabelgruppen bör se ut så här:
Skapa nödvändiga tjänstanslutningar
Här skapar du en tjänstanslutning som gör att Azure Pipelines kan komma åt din Azure-prenumeration. Azure Pipelines använder den här tjänstanslutningen för att distribuera webbplatsen till App Service. Du skapade en liknande tjänstanslutning i föregående modul. Du skapar också en Docker Registry-anslutning för att publicera din container till Azure Container Registry.
Viktig
Se till att du är inloggad på både Azure-portalen och Azure DevOps under samma Microsoft-konto.
I Azure DevOps går du till ditt Space Game – web – Docker-projekt.
I det nedre hörnet på sidan väljer du Projektinställningar.
Under fliken Pipelinesväljer du Tjänstanslutningar.
Välj Ny tjänstanslutningoch välj sedan Azure Resource Manageroch välj sedan Nästa.
Längst upp på sidan Tjänstens huvudnamn (automatiskt). Välj sedan Nästa.
Fyll i följande fält:
Fält Värde Omfångsnivå Abonnemang Abonnemang Din Azure-prenumeration Resursgrupp tailspin-space-game-rg Namn på tjänstanslutning Resursansvarig – Tailspin – Rymdspel Under processen kan du uppmanas att logga in på ditt Microsoft-konto.
Kontrollera att Bevilja åtkomstbehörighet till alla pipelines har valts.
Välj Spara.
Azure DevOps utför en testanslutning för att kontrollera att den kan ansluta till din Azure-prenumeration. Om Azure DevOps inte kan ansluta har du chansen att logga in en andra gång.
Välj Ny tjänstanslutningoch välj sedan Docker Registryoch välj sedan Nästa.
Längst upp på sidan väljer du Azure Container Registry.
Fyll i följande fält:
Fält Värde Abonnemang Din Azure-prenumeration Azure-containerregister Välj den som du skapade tidigare Namn på tjänstanslutning containerregisteranslutning Kontrollera att Bevilja åtkomstbehörighet till alla pipelines har valts.
Välj Spara när du är klar.