Azure-resourcegroepen maken en implementeren met Visual Studio

Met Visual Studio kunt u een project maken waarmee uw infrastructuur en code in Azure worden geïmplementeerd. U kunt bijvoorbeeld de webhost, website en code voor de website implementeren. Visual Studio biedt veel verschillende startsjablonen om te implementeren in algemene scenario's. In dit artikel implementeert u een web-app.

In dit artikel wordt beschreven hoe u Visual Studio 2019 of hoger gebruikt met de azure-ontwikkel- en ASP.NET-workloads geïnstalleerd. Als u Visual Studio 2017 gebruikt, is uw ervaring grotendeels hetzelfde.

Een Azure-resourcegroepproject maken

In deze sectie maakt u een Azure-resourcegroepproject met een web-app-sjabloon .

  1. Kies in Visual Studio De optieNieuw>project bestand>.

  2. Selecteer de projectsjabloon Azure Resource Group en Volgende.

    Schermopname van het venster Een nieuw project maken met De Azure-resourcegroep en de knop Volgende gemarkeerd.

  3. Geef uw project een naam. De andere standaardinstellingen zijn waarschijnlijk prima, maar controleer ze om ze geschikt te maken voor uw omgeving. Wanneer u klaar bent, selecteert u Maken.

    Schermopname van het naamgevingsvenster van het project in Visual Studio.

  4. Kies het sjabloon dat u wilt implementeren in Azure Resource Manager. Er zijn diverse opties beschikbaar op basis van het type project dat u wilt implementeren. Kies voor dit artikel de sjabloon Web-app en OK.

    Schermopname van het sjabloonselectievenster met web-app-sjabloon gemarkeerd.

    Het sjabloon dat u kiest is slechts een beginpunt; u kunt resources toevoegen en verwijderen op basis van uw scenario.

  5. Visual Studio maakt een resourcegroepimplementatieproject voor de web-app. Als u de bestanden voor uw project wilt zien, bekijkt u het knooppunt in het implementatieproject.

    Schermopname van Visual Studio Solution Explorer met de projectbestanden van de resourcegroepimplementatie.

    Omdat u de sjabloon Web-app hebt gekozen, ziet u de volgende bestanden:

    Bestandsnaam Beschrijving
    Deploy-AzureResourceGroup.ps1 Een PowerShell-script waarmee PowerShell-opdrachten worden uitgevoerd om te worden geïmplementeerd in Azure Resource Manager. Visual Studio gebruikt dit PowerShell-script om uw sjabloon te implementeren.
    WebSite.json Het Resource Manager-sjabloon dat de infrastructuur definieert die u in Azure wilt implementeren en de parameters die u kunt opgeven tijdens de implementatie. Hiermee worden ook de afhankelijkheden tussen resources gedefinieerd zodat deze in de juiste volgorde worden geïmplementeerd.
    WebSite.parameters.json Een parameterbestand dat de waarden bevat die nodig zijn voor de sjabloon. U geeft parameterwaarden door om elke implementatie aan te passen. U ziet dat Build Action is ingesteld op Inhoud. Als u meer parameterbestanden toevoegt, moet u ervoor zorgen dat de build-actie is ingesteld op Inhoud.

    Alle implementatieprojecten voor resourcegroepen bevatten deze algemene bestanden. Andere projecten hebben mogelijk meer bestanden ter ondersteuning van andere functionaliteit.

Resource Manager sjabloon aanpassen

U kunt een implementatieproject aanpassen door de sjabloon Resource Manager te wijzigen waarin de resources worden beschreven die u wilt implementeren. Zie Azure Resource Manager-sjablonen samenstellen voor meer informatie over de onderdelen van een Resource Manager-sjabloon.

  1. Als u aan de sjabloon wilt werken, opent u WebSite.json.

  2. De Visual Studio-editor biedt hulpprogramma's voor het bewerken van het Resource Manager-sjabloon. In het scherm JSON-overzicht ziet u eenvoudig welke elementen zijn gedefinieerd in het sjabloon.

    Schermopname van het venster JSON-overzicht in Visual Studio voor de sjabloon Resource Manager.

  3. Selecteer een element in het overzicht om naar dat deel van de sjabloon te gaan.

    Schermopname van de Visual Studio-editor met een geselecteerd element in het venster JSON-overzicht.

  4. U kunt een nieuwe resource toevoegen aan een sjabloon door op de knop Resource toevoegen te klikken boven aan het venster JSON Outline of door met de rechtermuisknop op Resources te klikken en Nieuwe resource toevoegen te selecteren.

    Schermopname van het venster JSON-overzicht met de optie Nieuwe resource toevoegen gemarkeerd.

  5. Selecteer Opslagaccount en geef het een naam. Geef een naam op die niet meer dan elf tekens (alleen cijfers en kleine letters) omvat.

    Schermopname van het venster Nieuwe resource toevoegen met Opslagaccount geselecteerd.

  6. U ziet dat niet alleen de resource is toegevoegd, maar ook een parameter voor het type opslagaccount en een variabele voor de naam van het opslagaccount.

    Schermopname van het venster JSON-overzicht met de toegevoegde opslagaccountresource.

  7. De parameter voor het type opslagaccount is vooraf gedefinieerd met toegestane typen en een standaardtype. U kunt deze waarden laten staan of ze bewerken voor uw scenario. Als u niemand toestemming wilt geven om een Premium_LRS-opslagaccount te implementeren via deze sjabloon, verwijdert u de sjabloon uit de toegestane typen.

    "demoaccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_ZRS",
        "Standard_GRS",
        "Standard_RAGRS"
      ]
    }
    
  8. Visual Studio biedt ook IntelliSense om u inzicht te geven in welke eigenschappen beschikbaar zijn bij het bewerken van de sjabloon. Als u bijvoorbeeld de eigenschappen bewerkt van uw App Service-plan, navigeert u naar de resource HostingPlan en voegt u een nieuwe waarde toe voor de eigenschappen. IntelliSense geeft de beschikbare waarden weer en biedt een beschrijving van die waarden.

    Schermopname van Visual Studio-editor met intelliSense-suggesties voor Resource Manager sjabloon.

    U kunt numberOfWorkers instellen op 1 en het bestand opslaan.

    "properties": {
      "name": "[parameters('hostingPlanName')]",
      "numberOfWorkers": 1
    }
    
  9. Open het bestand WebSite.parameters.json . U gebruikt het parameterbestand om waarden door te geven tijdens de implementatie waarmee de resource die wordt geïmplementeerd, wordt aangepast. Geef het hostingabonnement een naam en sla het bestand op.

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "hostingPlanName": {
          "value": "demoHostPlan"
        }
      }
    }
    

Project implementeren in Azure

U bent nu klaar om uw project te implementeren in een resourcegroep.

Het PowerShell-script (Deploy-AzureResourceGroup.ps1) in het project maakt standaard gebruik van de AzureRM-module. Als u de AzureRM-module nog steeds hebt geïnstalleerd en deze wilt blijven gebruiken, kunt u dit standaardscript gebruiken. Met dit script kunt u de Visual Studio-interface gebruiken om uw oplossing te implementeren.

Als u echter naar de nieuwe Az-module bent gemigreerd, moet u een nieuw script toevoegen aan uw project. Als u een script wilt toevoegen dat gebruikmaakt van de Az-module, kopieert u hetDeploy-AzTemplate.ps1 script en voegt u dit toe aan uw project. Als u dit script wilt gebruiken voor implementatie, moet u het uitvoeren vanuit een PowerShell-console in plaats van de implementatie-interface van Visual Studio te gebruiken.

Beide benaderingen worden in dit artikel weergegeven. Dit artikel verwijst naar het standaardscript als het AzureRM-modulescript en het nieuwe script als het Az-modulescript.

Az-modulescript

Open voor het Az-modulescript een PowerShell-console en voer het volgende uit:

.\Deploy-AzTemplate.ps1 -ArtifactStagingDirectory . -Location centralus -TemplateFile WebSite.json -TemplateParametersFile WebSite.parameters.json

AzureRM-modulescript

Gebruik Visual Studio voor het AzureRM-modulescript:

  1. Kies In het snelmenu van het implementatieprojectknooppunt de optie Nieuwe implementeren>.

    Schermopname van het contextmenu van het implementatieproject met de opties Implementeren en Nieuw gemarkeerd.

  2. Het dialoogvenster Implementeren in resourcegroep wordt weergegeven. In de vervolgkeuzelijst Resourcegroep kiest u een bestaande resourcegroep of maakt u een nieuwe. Selecteer Implementeren.

    Schermopname van het dialoogvenster Implementeren naar resourcegroep in Visual Studio.

  3. U kunt de voortgang van de implementatie bekijken in het venster Uitvoer. Wanneer de implementatie is voltooid, ziet u een laatste bericht dat de implementatie is geslaagd en dat er ongeveer als volgt uitziet:

    18:00:58 - Successfully deployed template 'website.json' to resource group 'ExampleAppDeploy'.
    

Geïmplementeerde resources weergeven

Laten we de resultaten eens bekijken.

  1. Open in een browser de Azure Portal en meld u aan bij uw account. Als u de resourcegroep wilt bekijken, selecteert u Resourcegroepen en vervolgens de resourcegroep waarin u hebt geïmplementeerd.

  2. U ziet alle geïmplementeerde resources. De naam van het opslagaccount komt niet precies overeen met wat u hebt opgegeven bij het toevoegen van die resource. Het opslagaccount moet uniek zijn. De sjabloon voegt automatisch een tekenreeks toe aan de naam die u hebt opgegeven om een unieke naam te maken.

    Schermopname van de Azure Portal met de geïmplementeerde resources in een resourcegroep.

Code toevoegen aan project

U hebt nu de infrastructuur geïmplementeerd voor uw app, maar er is nog geen code geïmplementeerd in uw project.

  1. Voeg een project toe aan uw Visual Studio-oplossing. Klik met de rechtermuisknop op de oplossing en selecteerNieuw projecttoevoegen>.

    Schermopname van het contextmenu Nieuw project toevoegen in Visual Studio.

  2. Voeg een ASP.NET Core webtoepassing toe.

    Schermopname van het venster Nieuw project met ASP.NET Core webtoepassing geselecteerd.

  3. Geef uw web-app een naam en selecteer Maken.

    Schermopname van het projectnaamvenster voor de ASP.NET Core webtoepassing.

  4. Selecteer Webtoepassing en Maken.

    Schermopname van het venster Nieuwe ASP.NET Core Webtoepassing met Webtoepassing geselecteerd.

  5. Nadat Visual Studio uw web-app heeft gemaakt, ziet u beide projecten in de oplossing.

    Schermopname van Visual Studio Solution Explorer met beide projecten in de oplossing.

  6. Nu moet u nagaan of het nieuwe project gekoppeld is aan uw resourcegroepproject. Terug naar uw resourcegroepproject (ExampleAppDeploy). Klik met de rechtermuisknop op Verwijzingen en selecteer Verwijzing toevoegen.

    Schermopname van het contextmenu ExampleAppDeploy met de optie Verwijzing toevoegen gemarkeerd.

  7. Selecteer het web-app-project dat u hebt gemaakt.

    Schermopname van het venster Verwijzing toevoegen in Visual Studio met het web-app-project geselecteerd.

    Door een verwijzing toe te voegen, koppelt u het web-app-project aan het resourcegroepproject en stelt u automatisch enkele eigenschappen in. U ziet deze eigenschappen in het venster Eigenschappen voor de verwijzing. Bestandspad toevoegen bevat het pad waar het pakket wordt gemaakt. Noteer de map (ExampleApp) en het bestand (package.zip). U moet weten wat deze waarden zijn, omdat u ze als parameters moet opgeven tijdens het implementeren van de app.

    Schermopname van de venster Eigenschappen met de referentie-eigenschappen voor het web-app-project.

  8. Terug naar uw sjabloon (WebSite.json) en voeg een resource toe aan de sjabloon.

    Schermopname van het venster JSON-overzicht met de optie Nieuwe resource toevoegen gemarkeerd.

  9. Selecteer deze keer Webimplementatie voor Web Apps.

    Schermopname van het venster Nieuwe resource toevoegen met Web Deploy voor Web Apps geselecteerd.

    Sla de sjabloon op.

  10. Uw sjabloon bevat enkele nieuwe parameters. Ze zijn in de vorige stap toegevoegd. U hoeft geen waarden op te geven voor _artifactsLocation of _artifactsLocationSasToken , omdat deze waarden automatisch worden gegenereerd. U moet echter de map en bestandsnaam instellen op het pad dat het implementatiepakket bevat. De namen van deze parameters eindigen op PackageFolder en PackageFileName. Het eerste deel van de naam is de naam van de Web Deploy-resource die u hebt toegevoegd. In dit artikel hebben ze de naam ExampleAppPackageFolder en ExampleAppPackageFileName.

    Open Website.parameters.json en stel deze parameters in op de waarden die u hebt gezien in de verwijzingseigenschappen. Stel ExampleAppPackageFolder in op de naam van de map. Stel ExampleAppPackageFileName in op de naam van het zip-bestand.

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "hostingPlanName": {
          "value": "demoHostPlan"
        },
        "ExampleAppPackageFolder": {
          "value": "ExampleApp"
        },
        "ExampleAppPackageFileName": {
          "value": "package.zip"
        }
      }
    }
    

Code implementeren met infrastructuur

Omdat u code aan het project hebt toegevoegd, is uw implementatie deze keer iets anders. Tijdens de implementatie faseert u artefacten voor uw project op een locatie waartoe Resource Manager toegang heeft. De artefacten worden gefaseerd naar een opslagaccount.

Az-modulescript

Er is één kleine wijziging die u in uw sjabloon moet aanbrengen als u het Az-modulescript gebruikt. Met dit script wordt een slash toegevoegd aan de locatie van de artefacten, maar uw sjabloon verwacht die slash niet. Open WebSite.json en zoek de eigenschappen voor de extensie MSDeploy. Deze heeft een eigenschap met de naam packageUri. Verwijder de slash tussen de locatie van de artefacten en de pakketmap.

Dit ziet er als volgt uit:

"packageUri": "[concat(parameters('_artifactsLocation'), parameters('ExampleAppPackageFolder'), '/', parameters('ExampleAppPackageFileName'), parameters('_artifactsLocationSasToken'))]",

In het voorgaande voorbeeld ziet u dat er geen '/', onderscheid is tussen parameters('_artifactsLocation') en parameters('ExampleAppPackageFolder').

Bouw het project opnieuw. Als u het project bouwt, zorgt u ervoor dat de bestanden die u moet implementeren, worden toegevoegd aan de map fasering.

Open nu een PowerShell-console en voer het volgende uit:

.\Deploy-AzTemplate.ps1 -ArtifactStagingDirectory .\bin\Debug\staging\ExampleAppDeploy -Location centralus -TemplateFile WebSite.json -TemplateParametersFile WebSite.parameters.json -UploadArtifacts -StorageAccountName <storage-account-name>

AzureRM-modulescript

Gebruik Visual Studio voor het AzureRM-modulescript:

  1. Als u de implementatie opnieuw wilt uitvoeren, kiest u Implementeren en de resourcegroep die u eerder hebt geïmplementeerd.

    Schermopname van het contextmenu van het implementatieproject met Implementeren en de eerder gebruikte resourcegroep gemarkeerd.

  2. Selecteer het opslagaccount dat u met deze resourcegroep hebt geïmplementeerd voor het artefactopslagaccount.

    Schermopname van het dialoogvenster Implementeren in resourcegroep met Opslagaccount voor artefact geselecteerd.

Web-app weergeven

  1. Nadat de implementatie is voltooid, selecteert u uw web-app in de portal. Selecteer de URL om naar de site te bladeren.

    Schermopname van de Azure Portal waarin de web-app-resource wordt weergegeven met de URL gemarkeerd.

  2. De implementatie van de standaard ASP.NET-app is voltooid.

    Schermopname van de geïmplementeerde standaard-ASP.NET-app in een webbrowser.

Bewerkingsdashboard toevoegen

U bent niet beperkt tot alleen de resources die beschikbaar zijn via de Visual Studio-interface. U kunt uw implementatie aanpassen door een aangepaste resource toe te voegen aan uw sjabloon. Als u wilt zien hoe het toevoegen van een resource in zijn werk gaat, voegt u een operationeel dashboard toe voor het beheren van de resource die u hebt geïmplementeerd.

  1. Open het bestand WebSite.json en voeg de volgende JSON toe na de resource van het opslagaccount, maar vóór het sluiten ] van de sectie resources.

     ,{
       "properties": {
         "lenses": {
           "0": {
             "order": 0,
             "parts": {
               "0": {
                 "position": {
                   "x": 0,
                   "y": 0,
                   "colSpan": 4,
                   "rowSpan": 6
                 },
                 "metadata": {
                   "inputs": [
                     {
                       "name": "resourceGroup",
                       "isOptional": true
                     },
                     {
                       "name": "id",
                       "value": "[resourceGroup().id]",
                       "isOptional": true
                     }
                   ],
                   "type": "Extension/HubsExtension/PartType/ResourceGroupMapPinnedPart"
                 }
               },
               "1": {
                 "position": {
                   "x": 4,
                   "y": 0,
                   "rowSpan": 3,
                   "colSpan": 4
                 },
                 "metadata": {
                   "inputs": [],
                   "type": "Extension[azure]/HubsExtension/PartType/MarkdownPart",
                   "settings": {
                     "content": {
                       "settings": {
                         "content": "__Customizations__\n\nUse this dashboard to create and share the operational views of services critical to the application performing. To customize simply pin components to the dashboard and then publish when you're done. Others will see your changes when you publish and share the dashboard.\n\nYou can customize this text too. It supports plain text, __Markdown__, and even limited HTML like images <img width='10' src='https://portal.azure.com/favicon.ico'/> and <a href='https://azure.microsoft.com' target='_blank'>links</a> that open in a new tab.\n",
                         "title": "Operations",
                         "subtitle": "[resourceGroup().name]"
                       }
                     }
                   }
                 }
               }
             }
           }
         },
         "metadata": {
           "model": {
             "timeRange": {
               "value": {
                 "relative": {
                   "duration": 24,
                   "timeUnit": 1
                 }
               },
               "type": "MsPortalFx.Composition.Configuration.ValueTypes.TimeRange"
             }
           }
         }
       },
       "type": "Microsoft.Portal/dashboards",
       "apiVersion": "2015-08-01-preview",
       "name": "[concat('ARM-',resourceGroup().name)]",
       "location": "[resourceGroup().location]",
       "tags": {
         "hidden-title": "[concat('OPS-',resourceGroup().name)]"
       }
     }
    
  2. Implementeer uw project opnieuw.

  3. Nadat de implementatie is voltooid, bekijkt u uw dashboard in de portal. Selecteer Dashboard en kies het dashboard dat u hebt geïmplementeerd.

    Schermopname van de pagina Azure Portal Dashboard met een voorbeeld van een aangepast dashboard.

  4. U ziet het aangepaste dashboard.

    Schermopname van het aangepaste operationele dashboard in de Azure Portal.

U kunt de toegang tot het dashboard beheren met behulp van op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC). U kunt ook het uiterlijk van het dashboard aanpassen zodra de implementatie is voltooid. Als u de resourcegroep echter opnieuw implementeert, wordt het dashboard opnieuw ingesteld op de standaardstatus in de sjabloon. Zie Op programmatische wijze Azure-dashboards maken voor meer informatie over het maken van dashboards.

Resources opschonen

Schoon de geïmplementeerd Azure-resources, wanneer u deze niet meer nodig hebt, op door de resourcegroep te verwijderen.

  1. Selecteer in het Azure Portal Resourcegroepen in het menu links.

  2. Selecteer de naam van de resourcegroep.

  3. Selecteer Resourcegroep verwijderen in het bovenste menu.

Volgende stappen

In dit artikel hebt u geleerd hoe u sjablonen maakt en implementeert met behulp van Visual Studio. Zie voor meer informatie over het ontwikkelen van sjablonen onze nieuwe zelfstudiereeks voor beginners: