Implementeren op Azure-VM's met behulp van implementatiegroepen in Azure Pipelines

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

In eerdere versies van Azure Pipelines vereisten toepassingen die op meerdere servers moesten worden geïmplementeerd een aanzienlijke hoeveelheid planning en onderhoud. Externe communicatie van Windows PowerShell moest handmatig worden ingeschakeld, vereiste poorten zijn geopend en implementatieagents die op elk van de servers zijn geïnstalleerd. De pijplijnen moesten vervolgens handmatig worden beheerd als er een implementatie vereist was.

Alle bovenstaande uitdagingen zijn naadloos ontwikkeld met de introductie van de implementatiegroepen.

Een implementatiegroep installeert een implementatieagent op elk van de doelservers in de geconfigureerde groep en geeft de release-pijplijn opdracht om de toepassing geleidelijk op die servers te implementeren. Er kunnen meerdere pijplijnen worden gemaakt voor de implementaties, zodat de nieuwste versie van een toepassing op een gefaseerde manier kan worden geleverd aan meerdere gebruikersgroepen voor validatie van nieuwe functies.

Notitie

Implementatiegroepen zijn een concept dat wordt gebruikt in klassieke pijplijnen. Als u YAML-pijplijnen gebruikt, raadpleegt u Omgevingen.

In deze zelfstudie komen deze onderwerpen aan bod:

  • VM-infrastructuur inrichten in Azure met behulp van een sjabloon
  • Een Azure Pipelines-implementatiegroep maken
  • Een CI/CD-pijplijn maken en uitvoeren om de oplossing te implementeren met een implementatiegroep

Vereisten

  • Een Microsoft Azure-account.
  • een Azure DevOps-organisatie.

Gebruik de Azure DevOps Demo Generator om het zelfstudieproject in te richten in uw Azure DevOps-organisatie.

De Azure-implementatieomgeving instellen

De volgende resources worden ingericht in Azure met behulp van een ARM-sjabloon:

  • Zes virtuele machines (VM)-webservers waarvoor IIS is geconfigureerd
  • SQL Server-VM (DB-server)
  • Azure Network Load Balancer
  1. Klik op de koppeling Implementeren naar Azure hieronder om het inrichten van resources te initiëren. Geef alle benodigde informatie op en selecteer Aankoop. U kunt elke combinatie van toegestane beheerdersgebruikersnamen en wachtwoorden gebruiken, omdat deze niet opnieuw worden gebruikt in deze zelfstudie. De naam van het env-voorvoegsel wordt voorafgegaan door alle resourcenamen om ervoor te zorgen dat deze resources worden gegenereerd met wereldwijd unieke namen. Probeer iets persoonlijks of willekeurigs te gebruiken, maar als er een conflicterende fout optreedt tijdens de validatie of het maken, wijzigt u deze parameter en voert u deze opnieuw uit.

    Implementeren naar Azure

    Schermopname die laat zien hoe u uw Azure-implementatieomgeving instelt.

    Notitie

    Het duurt ongeveer 10-15 minuten om de implementatie te voltooien. Als er conflicterende naamgevingsfouten optreden, wijzigt u de parameter die u opgeeft voor env-voorvoegselnaam.

  2. Zodra de implementatie is voltooid, kunt u alle resources bekijken die zijn gegenereerd in de opgegeven resourcegroep met behulp van Azure Portal. Selecteer de DB-server-VM met sqlSrv in de naam om de details ervan weer te geven.

    Resourcegroep implementeren in Azure.

  3. Noteer de DNS-naam. Deze waarde is vereist in een latere stap. U kunt de knop Kopiëren gebruiken om deze naar het klembord te kopiëren.

    SQL DNS implementeren in Azure.

Een implementatiegroep maken en configureren

Met Azure Pipelines kunt u eenvoudiger servers organiseren die vereist zijn voor het implementeren van toepassingen. Een implementatiegroep is een verzameling machines met implementatieagents. Elk van de machines communiceert met Azure Pipelines om de implementatie van de app te coördineren.

Omdat er geen configuratiewijziging vereist is voor de build-pijplijn, wordt de build automatisch geactiveerd nadat het project is ingericht. Wanneer u later een release in de wachtrij zet, wordt deze build gebruikt.

  1. Navigeer naar het Azure DevOps-project dat is gemaakt door de demogenerator.

  2. Navigeer vanuit pijplijnen naar implementatiegroepen.

    Navigeren naar implementatiegroepen onder Pijplijnen

  3. Selecteer Een implementatiegroep toevoegen.

  4. Voer de naam van de implementatiegroep van Release in en selecteer Maken. Er wordt een registratiescript gegenereerd. U kunt de doelservers registreren met behulp van het opgegeven script als u zelf werkt. In deze zelfstudie worden de doelservers echter automatisch geregistreerd als onderdeel van de release-pijplijn. De releasedefinitie maakt gebruik van fasen voor het implementeren van de toepassing op de doelservers. Een fase is een logische groepering van de taken die het runtimedoel definiëren waarop de taken worden uitgevoerd. Elke fase van de implementatiegroep voert taken uit op de machines die zijn gedefinieerd in de implementatiegroep.

  5. Navigeer onder Pijplijnen naar Releases. Selecteer de release-pijplijn met de naam Implementatiegroepen en selecteer Bewerken.

  6. Selecteer het tabblad Taken om de implementatietaken in de pijplijn weer te geven. De taken zijn geordend als drie fasen, genaamd Agentfase, Implementatiegroepsfase en IIS-implementatiefase.

  7. Selecteer de agentfase. In deze fase zijn de doelservers gekoppeld aan de implementatiegroep met behulp van de azure-resourcegroepimplementatietaak. Als u wilt uitvoeren, moeten een agentpool en specificatie worden gedefinieerd. Selecteer de Azure Pipelines-pool en windows-nieuwste specificatie.

    De agentfase configureren

  8. Selecteer de azure-resourcegroepimplementatietaak . Configureer een serviceverbinding met het Azure-abonnement dat eerder is gebruikt om een infrastructuur te maken. Nadat u de verbinding hebt gemachtigd, selecteert u de resourcegroep die voor deze zelfstudie is gemaakt.

    Een Azure-serviceverbinding maken

  9. Deze taak wordt uitgevoerd op de virtuele machines die worden gehost in Azure en moet verbinding kunnen maken met deze pijplijn om de vereisten voor de implementatiegroep te voltooien. Om de verbinding te beveiligen, hebben ze een persoonlijk toegangstoken (PAT) nodig. Open in de vervolgkeuzelijst Gebruikersinstellingen persoonlijke toegangstokens op een nieuw tabblad. De meeste browsers ondersteunen het openen van een koppeling op een nieuw tabblad via snelmenu of Ctrl+Klikken.

    Navigeren naar persoonlijke toegangstokens

  10. Selecteer Nieuw token op het nieuwe tabblad.

  11. Voer een naam in en selecteer het bereik Volledige toegang . Selecteer Maken om het token te maken. Nadat u het token hebt gemaakt, kopieert u het token en sluit u het browsertabblad. U keert terug naar de Azure Pipeline-editor.

    Een persoonlijk toegangstoken maken

  12. Selecteer Nieuw onder Azure Pipelines-serviceverbinding.

    Een Azure Pipelines-serviceverbinding toevoegen

  13. Voer de Verbinding maken ion-URL in naar het huidige exemplaar van Azure DevOps. Deze URL ziet er ongeveer als volgt uit https://dev.azure.com/[Your account]. Plak het persoonlijke toegangstoken dat u eerder hebt gemaakt en geef een serviceverbindingsnaam op. Selecteer Verifiëren en opslaan.

    Een Azure Pipelines-serviceverbinding maken

    Notitie

    Als u een agent wilt registreren, moet u lid zijn van de rol Beheer istrator in de agentgroep. De identiteit van de beheerder van de agentgroep is alleen nodig op het moment van registratie. De beheerdersidentiteit blijft niet behouden op de agent en wordt niet gebruikt in verdere communicatie tussen de agent en Azure Pipelines. Nadat de agent is geregistreerd, hoeft u het persoonlijke toegangstoken niet te vernieuwen, omdat dit alleen op het moment van registratie vereist is.

  14. Selecteer het huidige teamproject en de implementatiegroep die u eerder hebt gemaakt.

    De Azure Pipelines-implementatiegroep configureren

  15. Selecteer de fase Van de implementatiegroep. In deze fase worden taken uitgevoerd op de machines die zijn gedefinieerd in de implementatiegroep. Deze fase is gekoppeld aan de TAG SQL-Svr-DB . Kies de implementatiegroep in de vervolgkeuzelijst.

    De fase van de implementatiegroep configureren

  16. Selecteer de fase IIS-implementatie. In deze fase wordt de toepassing geïmplementeerd op de webservers met behulp van de opgegeven taken. Deze fase is gekoppeld aan de WebSrv-tag . Kies de implementatiegroep in de vervolgkeuzelijst.

  17. Selecteer de taak Azure Network Load Balancer verbreken. Wanneer de doelmachines zijn verbonden met de NLB, wordt met deze taak de verbinding van de machines vóór de implementatie verbroken en worden ze na de implementatie opnieuw verbonden met de NLB. Configureer de taak voor het gebruik van de Azure-verbinding, resourcegroep en load balancer (er mag slechts één zijn).

  18. Selecteer de taak IIS-web-app beheren . Deze taak wordt uitgevoerd op de doelmachines van de implementatie die zijn geregistreerd bij de implementatiegroep die is geconfigureerd voor de taak/fase. Er wordt lokaal een web-app en toepassingsgroep gemaakt met de naam PartsUnlimited die wordt uitgevoerd onder poort 80

  19. Selecteer de taak IIS-web-app implementeren . Deze taak wordt uitgevoerd op de doelmachines van de implementatie die zijn geregistreerd bij de implementatiegroep die is geconfigureerd voor de taak/fase. Hiermee wordt de toepassing geïmplementeerd op de IIS-server met behulp van Web Deploy.

  20. Selecteer de taak Verbinding maken Azure Network Load Balancer. Configureer de taak voor het gebruik van de Azure-verbinding, resourcegroep en load balancer (er mag slechts één zijn).

  21. Selecteer het tabblad Variabelen en voer de variabelewaarden in zoals hieronder.

    Variabelenaam Variabele waarde
    DatabaseName PartsUnlimited-Dev
    DBPassword P2ssw0rd@123
    DBUserName sqladmin
    Standaard Verbinding maken ionString Gegevensbron=[YOUR_DNS_NAME]; Initial Catalog=PartsUnlimited-Dev; Gebruikers-id=sqladmin; Password=P2ssw0rd@123; MultipleActiveResultSets=False; Verbinding maken ion Time-out=30;
    ServerName localhost

    Belangrijk

    Zorg ervoor dat u de DNS-naam van uw SQL-server (die u eerder hebt genoteerd in Azure Portal) vervangt in de variabele Default Verbinding maken ionString.

    Uw standaard Verbinding maken ionString moet vergelijkbaar zijn met deze tekenreeks nadat u de SQL DNS hebt vervangen:

    Data Source=cust1sqljo5zndv53idtw.westus2.cloudapp.azure.com;Initial Catalog=PartsUnlimited-Dev;User ID=sqladmin;Password=P2ssw0rd@123;MultipleActiveResultSets=False;Connection Timeout=30;

    De uiteindelijke lijst met variabelen moet er ongeveer als volgt uitzien:

    Pijplijnvariabelen configureren

    Notitie

    Mogelijk krijgt u een foutmelding dat de DefaultConnectionString variabele als geheim moet worden opgeslagen. Als dat gebeurt, selecteert u de variabele en klikt u op het hangslotpictogram dat naast de waarde wordt weergegeven om deze te beveiligen.

Een release in de wachtrij plaatsen en de implementatie controleren

  1. Selecteer Opslaan en bevestigen.

  2. Selecteer Release maken en bevestig dit. Volg de release tot voltooiing. De implementatie is vervolgens gereed voor beoordeling.

  3. Open in Azure Portal een van de web-VM's in uw resourcegroep. U kunt alle items websrv in de naam selecteren.

    Een web-VM zoeken

  4. Kopieer de DNS van de VIRTUELE machine. De Azure Load Balancer distribueert binnenkomend verkeer tussen gezonde exemplaren van servers die zijn gedefinieerd in een set met gelijke taakverdeling. Als gevolg hiervan is de DNS van alle webserverexemplaren hetzelfde.

    Het domein van de web-app zoeken

  5. Open een nieuw browsertabblad naar de DNS van de VIRTUELE machine. Controleer of de geïmplementeerde app wordt uitgevoerd.

    De app controleren

Samenvatting

In deze zelfstudie hebt u een webtoepassing geïmplementeerd op een set Azure-VM's met behulp van Azure Pipelines en Implementatiegroepen. Hoewel dit scenario betrekking heeft op een aantal computers, kunt u het proces eenvoudig schalen om honderden, of zelfs duizenden, machines te ondersteunen met vrijwel elke configuratie.

Resources opschonen

In deze zelfstudie hebt u een Azure DevOps-project en enkele resources in Azure gemaakt. Als u deze resources niet meer gaat gebruiken, verwijdert u deze met de volgende stappen:

  1. Verwijder het Azure DevOps-project dat is gemaakt door de Azure DevOps-demogenerator.

  2. Alle Azure-resources die tijdens deze zelfstudie zijn gemaakt, zijn toegewezen aan de resourcegroep die tijdens het maken is opgegeven. Als u deze groep verwijdert, worden de resources verwijderd die ze bevatten. Deze verwijdering kan worden uitgevoerd via de CLI of portal.

Volgende stappen