Delen via


Een fabrieksinstallatiekopie uitvoeren vanuit Azure DevOps

In dit artikel worden alle voorbereidingen behandeld die nodig zijn om de installatiekopieënfactory uit te voeren vanuit Azure DevOps (voorheen Visual Studio Team Services).

Notitie

Elke indelingsengine werkt! Azure DevOps is niet verplicht. De installatiekopieënfactory wordt uitgevoerd met behulp van Azure PowerShell-scripts, zodat deze handmatig kan worden uitgevoerd, met behulp van Windows Task Scheduler, andere CI/CD-systemen, enzovoort.

Een lab maken voor de installatiekopieënfactory

De eerste stap bij het instellen van de installatiekopieënfactory is het maken van een lab in Azure DevTest Labs. Dit lab is het installatiekopieënfactorylab waar we de virtuele machines maken en aangepaste installatiekopieën opslaan. Dit lab wordt beschouwd als onderdeel van het algehele installatiekopiefactoryproces. Nadat u een lab hebt gemaakt, moet u de naam opslaan, omdat u deze later nodig hebt.

Scripts en sjablonen

De volgende stap bij het aannemen van de installatiekopieënfactory voor uw team is om te begrijpen wat er beschikbaar is. De image factory-scripts en -sjablonen zijn openbaar beschikbaar in de GitHub-opslagplaats van DevTest Labs. Hier volgt een overzicht van de onderdelen:

  • Image Factory. Dit is de hoofdmap.
    • Configuratie. De invoer voor de installatiekopieënfactory
      • GoldenImages. Deze map bevat JSON-bestanden die de definities van aangepaste afbeeldingen vertegenwoordigen.
      • Labs.json. Bestand waarin teams zich registreren om specifieke aangepaste installatiekopieën te ontvangen.
  • Scripts. De engine voor de installatiekopieënfactory.

De artikelen in deze sectie bevatten meer informatie over deze scripts en sjablonen.

Een Azure DevOps-teamproject maken

Met Azure DevOps kunt u de broncode opslaan en Azure PowerShell op één plaats uitvoeren. U kunt terugkerende uitvoeringen plannen om afbeeldingen up-to-date te houden. Er zijn goede faciliteiten voor het vastleggen van de resultaten om eventuele problemen vast te stellen. Het gebruik van Azure DevOps is echter geen vereiste, maar u kunt elke harness/engine gebruiken die verbinding kan maken met Azure en Azure PowerShell kan uitvoeren.

Als u een bestaand DevOps-account of -project hebt dat u in plaats daarvan wilt gebruiken, slaat u deze stap over.

Maak een gratis account in Azure DevOps om aan de slag te gaan. Ga https://www.visualstudio.com/ naar en selecteer Gratis aan de slag onder Azure DevOps (voorheen VSTS). U moet een unieke accountnaam kiezen en ervoor zorgen dat u code beheert met git. Nadat u het account hebt gemaakt, slaat u de URL op naar uw teamproject. Hier volgt een voorbeeld-URL: https://<accountname>.visualstudio.com/MyFirstProject.

Controleer de installatiekopieënfactory naar Git

Alle PowerShell, sjablonen en configuratie voor de installatiekopieënfactory bevinden zich in de openbare GitHub-opslagplaats van DevTest Labs. De snelste manier om de code in uw nieuwe teamproject op te halen, is door een opslagplaats te importeren. Het importeren van pulls in de hele DevTest Labs-opslagplaats (zodat u extra documenten en voorbeelden krijgt).

  1. Ga naar het Azure DevOps-project dat u in de vorige stap hebt gemaakt (URL ziet eruit als https:// accountname.visualstudio.com/MyFirstProject>).<

  2. Selecteer Een opslagplaats importeren.

  3. Voer de kloon-URL in voor de DevTest Labs-opslagplaats: https://github.com/Azure/azure-devtestlab.

  4. Selecteer Importeren.

    Screenshot that shows Import Git repo.

Als u alleen precies wilt inchecken wat er nodig is (de installatiekopiefactorybestanden), volgt u de stappen hier om de Git-opslagplaats te klonen en alleen de bestanden in de map scripts/ImageFactory te pushen.

Een build maken en verbinding maken met Azure

Op dit moment hebt u de bronbestanden opgeslagen in een Git-opslagplaats in Azure DevOps. U moet nu een pijplijn instellen om Azure PowerShell uit te voeren. Er zijn veel opties om deze stappen uit te voeren. In dit artikel gebruikt u de builddefinitie voor het gemak, maar het werkt met DevOps Build, DevOps Release (één of meerdere omgevingen), andere uitvoeringsengines, zoals Windows Task Scheduler of een ander harnas dat Azure PowerShell kan uitvoeren.

Notitie

Een belangrijk punt om er rekening mee te houden dat het lang duurt voordat sommige PowerShell-bestanden worden uitgevoerd wanneer er veel (10+) aangepaste installatiekopieën zijn om te maken. Gratis gehoste DevOps Build/Release-agents hebben een time-out van 30 minuten, dus u kunt de gratis gehoste agent niet gebruiken wanneer u veel installatiekopieën gaat bouwen. Deze time-outvraag is van toepassing op wat u ook wilt gebruiken, het is goed om vooraf te controleren of u de typische time-outs voor langlopende Azure PowerShell-scripts kunt uitbreiden. In het geval van Azure DevOps kunt u betaalde gehoste agents gebruiken of uw eigen buildagent gebruiken.

  1. Selecteer Build instellen op de startpagina van uw DevOps-project om te beginnen:

    Screenshot that shows Set up Build button.

  2. Geef een naam op voor de build (bijvoorbeeld: Installatiekopieën bouwen en leveren aan DevTest Labs).

  3. Selecteer een lege builddefinitie en selecteer Toepassen om uw build te maken.

  4. In deze fase kunt u Hosted kiezen voor de buildagent.

  5. Sla de builddefinitie op .

    Screenshot that shows Build definition.

De buildvariabelen configureren

Als u de opdrachtregelparameters wilt vereenvoudigen, moet u de sleutelwaarden inkapselen die de installatiekopiefactory naar een set buildvariabelen sturen. Selecteer het tabblad Variabelen en u ziet een lijst met verschillende standaardvariabelen. Hier volgt de lijst met variabelen die u wilt invoeren in Azure DevOps:

Variabelenaam Waarde Aantekeningen
ConfigurationLocation /Scripts/ImageFactory/Configuration Deze locatie is het volledige pad in de opslagplaats naar de map Configuratie . Als u de hele opslagplaats hierboven hebt geïmporteerd, is de waarde aan de linkerkant juist. Werk anders bij zodat deze verwijst naar de configuratielocatie.
DevTestLabName MyImageFactory De naam van het lab in Azure DevTest Labs dat wordt gebruikt als fabriek voor het produceren van installatiekopieën. Als u er nog geen hebt, maakt u er een. Zorg ervoor dat het lab zich in hetzelfde abonnement bevindt waartoe het service-eindpunt toegang heeft.
ImageRetention 1 Het aantal afbeeldingen dat u van elk type wilt opslaan. Stel de standaardwaarde in op 1.
MachinePassword ******* Het ingebouwde beheerdersaccountwachtwoord voor de virtuele machines. Dit account is tijdelijk, dus zorg ervoor dat het veilig is. Selecteer het kleine vergrendelingspictogram aan de rechterkant om ervoor te zorgen dat het een veilige tekenreeks is.
MachineUserName ImageFactoryUser De gebruikersnaam van het ingebouwde beheerdersaccount voor de virtuele machines. Dit account is tijdelijk.
StandardTimeoutMinutes 30 De time-out moet worden gewacht op reguliere Azure-bewerkingen.
SubscriptionId 0000000000-0000-0000-0000-0000000000000 De id van het abonnement waar het lab bestaat en waartoe het service-eindpunt toegang heeft.
VMSize Standard_A3 De grootte van de virtuele machine die moet worden gebruikt voor de stap Maken . De virtuele machines die zijn gemaakt, zijn tijdelijk. De grootte moet de grootte zijn die is ingeschakeld voor het lab. Controleer of er voldoende quotum voor abonnementskernen is.

Screenshot that shows Build variables.

Verbinding maken met Azure

De volgende stap is het instellen van een service-principal. Een service-principal is een identiteit in Microsoft Entra-id waarmee de DevOps-buildagent namens de gebruiker in Azure kan werken. Als u dit wilt instellen, begint u met het toevoegen van de eerste Azure PowerShell Build Step.

  1. Selecteer Taak toevoegen.
  2. Zoek naar Azure PowerShell.
  3. Zodra u deze hebt gevonden, selecteert u Toevoegen om de taak toe te voegen aan de build. Wanneer u Toevoegen selecteert, ziet u dat de taak aan de linkerkant wordt weergegeven als toegevoegd.

Screenshot that shows Set up PowerShell step.

De snelste manier om een service-principal in te stellen, is door Azure DevOps dit voor u te laten doen.

  1. Selecteer de taak die u zojuist hebt toegevoegd.
  2. Voor Azure Verbinding maken iontype kiest u Azure Resource Manager.
  3. Selecteer de koppeling Beheren om de service-principal in te stellen.

Zie dit blogbericht voor meer informatie. Wanneer u de koppeling Beheren selecteert, komt u op de juiste plaats terecht in DevOps (tweede schermopname in het blogbericht) om de verbinding met Azure in te stellen. Zorg ervoor dat u azure Resource Manager-service-eindpunt kiest bij het instellen van de verbinding.

De build-taak voltooien

Als u de build-taak selecteert, ziet u alle details in het rechterdeelvenster dat moet worden ingevuld.

  1. Geef eerst de buildtaak de naam: Virtuele machines maken.

  2. Kies de service-principal die u hebt gemaakt door Azure Resource Manager te kiezen

  3. Kies het service-eindpunt.

  4. Selecteer voor scriptpad ... (beletselteken) aan de rechterkant.

  5. Navigeer naar Het script MakeGoldenImageVMs.ps1 .

  6. Scriptparameters moeten er als volgt uitzien: -ConfigurationLocation $(System.DefaultWorkingDirectory)$(ConfigurationLocation) -DevTestLabName $(DevTestLabName) -vmSize $(VMSize) -machineUserName $(MachineUserName) -machinePassword (ConvertTo-SecureString -string '$(MachinePassword)' -AsPlainText -Force) -StandardTimeoutMinutes $(StandardTimeoutMinutes)

    Screenshot that shows Complete the build definition.

De build in de wachtrij plaatsen

Laten we controleren of alles correct is ingesteld door een nieuwe build in de wachtrij te plaatsen. Terwijl de build wordt uitgevoerd, schakelt u over naar Azure Portal en selecteert u alle virtuele machines in uw installatiekopieënfabriekslab om te bevestigen dat alles correct werkt. U ziet dat er drie virtuele machines worden gemaakt in het lab.

VMs in the lab

Volgende stappen

De eerste stap bij het instellen van de installatiekopieënfactory op basis van Azure DevTest Labs is voltooid. In het volgende artikel in de reeks krijgt u deze VM's gegeneraliseerd en opgeslagen in aangepaste installatiekopieën. Vervolgens hebt u ze gedistribueerd naar al uw andere labs. Zie het volgende artikel in de reeks: Aangepaste afbeeldingen opslaan en distribueren naar meerdere labs.