Erstellen wiederverwendbarer Dev-Box-Anpassungen

Die Anpassung von Microsoft Dev Box ist ein Ansatz vom Typ „Konfiguration als Code“ zum Anpassen von Dev-Boxen. In diesem Artikel erfahren Sie, wie Sie Dev-Boxen mithilfe eines Aufgabenkatalogs und einer Konfigurationsdatei anpassen, um Software zu installieren, Einstellungen zu konfigurieren u. v. m. Diese Tasks werden in der letzten Phase des Erstellungsprozesses auf die neue Dev-Box angewendet. Sie können Einstellungen und Software hinzufügen, ohne ein benutzerdefiniertes VM-Image erstellen zu müssen.

Anpassungen sind nützlich für Entwicklungsteams. Die Leitung von Entwicklungsteams kann Anpassungen verwenden, um die für sein Entwicklungsteam erforderliche Software vorzukonfigurieren und Konfigurationsdateien zu erstellen, die nur auf die ihre Teams relevanten Aufgaben angewandt werden. Mit dieser Methode können Entwicklerinnen und Entwickler eigene Dev-Boxen erstellen, die optimal auf ihre Arbeit abgestimmt sind, ohne die IT-Abteilung um Änderungen zu bitten oder darauf zu warten, dass das Entwicklungsteam ein benutzerdefiniertes VM-Image erstellt.

Mithilfe von Anpassungen können Sie allgemeine Setupschritte automatisieren, Zeit sparen und die Wahrscheinlichkeit von Konfigurationsfehlern verringern. Beispiele für Aufgaben:

  • Installieren von Software mit dem WinGet-Paket-Manager
  • Festlegen von Betriebssystemeinstellungen, etwa Aktivieren von Windows-Funktionen
  • Konfigurieren von Anwendungen, etwa Installation von Visual Studio-Erweiterungen

Sie können Anpassungen schrittweise anwenden und so von einer einfachen, aber funktionalen Konfiguration zu einem automatisierten Prozess gelangen. Diese Phasen lauten:

  1. Erstellen einer benutzerdefinierten Dev-Box mithilfe einer Beispielkonfigurationsdatei
  2. Schreiben einer Konfigurationsdatei
  3. Freigeben einer Konfigurationsdatei aus einem Coderepository
  4. Definieren neuer Tasks in einem Katalog
  5. Verwenden von Geheimnissen aus einem Azure Key Vault

Wichtig

Anpassungen in Microsoft Dev Box befinden sich derzeit in der Vorschauphase. Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind.

Voraussetzungen

Erforderliche Berechtigungen zum Konfigurieren von Microsoft Dev Box für Anpassungen

Um die erforderlichen Aktionen zum Erstellen und Anwenden von Anpassungen für eine Dev-Box auszuführen, benötigen Sie bestimmte Berechtigungen. In der folgenden Tabelle werden die Aktionen und Berechtigungen oder Rollen beschrieben, die Sie zum Konfigurieren von Anpassungen benötigen.

Aktion Berechtigung/Rolle
Anfügen eines Katalogs an ein Dev Center Plattformtechniker mit der Berechtigung „Mitwirkender“ für das Dev Center
Verwenden des Entwicklerportals zum Hochladen und Anwenden einer YAML-Datei während der Erstellung von Dev-Boxen Dev-Box-Benutzer
Erstellen einer Konfigurationsdatei Jeder kann eine Konfigurationsdatei erstellen.
Hinzufügen von Tasks zu einem Katalog Berechtigung zum Hinzufügen zum Repository, das den Katalog hostet

Erstellen einer benutzerdefinierten Dev-Box mithilfe einer Beispielkonfigurationsdatei

Verwenden Sie den Standardmäßigen Schnellstartkatalog und eine Beispielkonfigurationsdatei, um erste Schritte mit Anpassungen auszuführen.

Anfügen des Schnellstartkatalogs

Das Anfügen eines Katalogs mit Anpassungstasks an ein Dev Center bedeutet, dass Sie in diesem Dev Center eine Dev-Box erstellen und auf die Anpassungstasks aus diesem Katalog verweisen können. Microsoft stellt ein Beispielrepository auf GitHub mit einem Standardsatz von standardmäßigen Tasks bereit, die Ihnen bei den ersten Schritten helfen. Sie werden als Schnellstartkatalog bezeichnet.

So fügen Sie den Schnellstartkatalog an das Dev Center an

  1. Melden Sie sich beim Microsoft Dev Box-Entwicklerportal an.

  2. Wählen Sie im linken Menü unter Umgebungskonfiguration die Option Kataloge und dann Hinzufügen aus.

  3. Wählen Sie unter Katalog hinzufügen die Option Dev-Box-Anpassungstasks als Schnellstartkatalog aus. Klicken Sie anschließend auf Hinzufügen.

  4. Wählen Sie im Dev Center Kataloge aus, und vergewissern Sie sich, dass Ihr Katalog angezeigt wird.

    Screenshot des Azure-Portals mit dem Bereich „Katalog hinzufügen“, in dem der Schnellstartkatalog von Microsoft und die Aufgaben zur Anpassung der Dev-Box hervorgehoben sind.

    Wenn die Verbindung erfolgreich ist, wird der Status als Synchronisierung erfolgreich angezeigt.

Erstellen der benutzerdefinierten Dev-Box

Jetzt verfügen Sie über einen Katalog, der die Aufgaben definiert, die Ihre Entwickler verwenden können. Sie können auf diese Aufgaben in einer Konfigurationsdatei verweisen und eine angepasste Dev-Box erstellen.

  1. Laden Sie eine Beispiel-YAML-Konfiguration aus dem Beispielrepository herunter. Diese Beispielkonfiguration installiert Visual Studio Code und klont das .NET-Web-App-Repository „OrchardCore „ in Ihrer Dev-Box.

  2. Melden Sie sich beim Microsoft Dev Box-Entwicklerportal an.

  3. Wählen Sie Neu>Dev-Box aus.

  4. Geben Sie in Dev-Box hinzufügen die folgenden Werte ein, und wählen Sie dann Weiter aus:

    Einstellung Wert
    Name Geben Sie einen Namen für die Dev-Box ein. Dev-Box-Namen müssen innerhalb eines Projekts eindeutig sein.
    Projekt Wählen Sie ein Projekt aus der Dropdownliste aus.
    Dev-Box-Pool Wählen Sie einen Pool in der Dropdownliste aus, die alle Dev-Box-Pools für dieses Projekt enthält. Wählen Sie für die geringste Latenz einen Dev-Box-Pool in der Nähe aus.
    Anwenden von Anpassungen Wählen Sie Anpassungen anwenden aus.

    Screenshot der Dev-Box-Anpassungsoptionen im Entwicklerportal mit hervorgehobenen hochgeladenen Anpassungsdateien.

  5. Wählen Sie auf der Seite Dev-Box anpassen die Option Anpassungsdatei hochladen und dann Anpassungen aus Datei hinzufügen aus.

    Screenshot der Seite „Dev Box anpassen“ mit hervorgehobenen Optionen „Anpassungsdatei hochladen“ und „Anpassungen aus Datei hinzufügen“

  6. Navigieren Sie zum Speicherort der heruntergeladenen YAML-Beispielkonfigurationsdatei, und wählen Sie dann Öffnen aus.

  7. Stellen Sie sicher, dass die Konfigurationsdatei unter Anpassungsdateien hochladen aufgeführt ist, und wählen Sie dann Überprüfen aus.

    Screenshot der Seite „Dev Box anpassen“ mit der hochgeladenen Anpassungsdatei und der hervorgehoben Option „Überprüfen“

  8. Nachdem Dev Box die Konfigurationsdatei überprüft hat, wählen Sie Weiter aus.

    Screenshot der Erfolgsmeldung zur Überprüfung der Anpassungsaufgabe und der hervorgehobenen Option „Weiter“

  9. Dev Box zeigt auf der Zusammenfassungsseite zum Erstellen der Dev-Box die Aufgaben an, die angewandt werden. Klicken Sie auf Erstellen.

    Screenshot der Zusammenfassungsseite der Dev-Box-Erstellung mit hervorgehobener Schaltfläche „Erstellen“

Nach Abschluss des Erstellungsprozesses sind in der neuen Dev-Box nodejs und Visual Studio Code installiert.

Weitere Beispiele finden Sie im Dev Center-Beispielrepository auf GitHub.

Tipp

Als Alternative zum Entwicklerportal können Sie Dev Home verwenden, um Ihre Dev-Boxen zu erstellen, anzupassen und zu verbinden. Dev Home ist eine native Windows-App, die einen zentralen Ort zum Verwalten Ihrer Dev-Boxen bietet. Weitere Informationen zu Dev Home finden Sie unter Erstellen wiederverwendbarer Dev-Box-Anpassungen mit Dev Home.

Was ist eine Konfigurationsdatei?

Dev Box-Anpassungen nutzen eine formatierte YAML-Datei, um eine Liste von Tasks anzugeben, die beim Erstellen einer neuen Dev-Box aus dem Katalog angewendet werden sollen. Diese Konfigurationsdateien enthalten „Tasks“, die den Katalogtask identifizieren und Parameter wie den Namen der zu installierenden Software bereitstellen. Die Konfigurationsdatei wird dann den Entwicklern zur Verfügung gestellt, die neue Dev-Boxen erstellen. Im folgenden Beispiel wird ein winget-Task zum Installieren von Visual Studio Code und ein git clone-Task zum Klonen eines Repositorys verwendet:

# From https://github.com/microsoft/devcenter-examples
$schema: 1.0
tasks:
  - name: winget
    parameters:
      package: Microsoft.VisualStudioCode
      runAsUser: true
  - name: git-clone
    description: Clone this repository into C:\Workspaces
    parameters:
      repositoryUrl: https://github.com/OrchardCMS/OrchardCore.git
      directory: C:\Workspaces

Was sind Tasks?

Ein Task führt eine bestimmte Aktion aus, z. B. die Installation von Software. Jeder Task besteht aus einem oder mehreren PowerShell-Skripts sowie der Datei task.yaml, die Parameter bereitstellt und definiert, wie die Skripts ausgeführt werden. Sie können auch einen PowerShell-Befehl in die Datei „task.yaml“ einschließen. Sie können eine Sammlung kuratierter Aufgaben in einem Katalog speichern, der Ihrem Dev Center zugeordnet ist, wobei jede Aufgabe in einem separaten Ordner enthalten ist. Dev Box unterstützt die Verwendung eines GitHub-Repositorys oder eines Azure DevOps-Repositorys als Katalog und scannt einen angegebenen Ordner des Katalogs rekursiv, um Aufgabendefinitionen zu finden.

Microsoft stellt einen Schnellstartkatalog zur Verfügung, der Ihnen bei den ersten Schritten mit Anpassungen hilft. Er enthält einen Standardsatz von allgemeinen Aufgaben:

  • Installieren von Software mit dem WinGet-Paket-Manager
  • Bereitstellen der DSC (Desired State Configuration) mithilfe der WinGet-Konfiguration
  • Klonen eines Repositorys mithilfe von „git-clone“
  • Konfigurieren von Anwendungen, etwa Installation von Visual Studio-Erweiterungen
  • Ausführen von PowerShell-Skripts

Anpassen Ihrer Dev-Box mithilfe vorhandener WinGet-Konfigurationsdateien

Eine WinGet-Konfiguration verwendet einen Config-as-Code-Ansatz (Konfiguration als Code), um die eindeutigen Software- und Konfigurationseinstellungen zu definieren, die erforderlich sind, um Ihre Windows-Umgebung in einem programmierbereiten Zustand zu versetzen. Diese Konfigurationsdateien können auch verwendet werden, um eine Dev-Box einzurichten, indem Sie eine WinGet-Aufgabe verwenden, die im zuvor erwähnten Schnellstartkatalog von Microsoft enthalten ist.

Das folgende Beispiel zeigt eine Dev-Box-Anpassungsdatei, die eine vorhandene WinGet-DSC-Datei aufruft.

tasks:
    - name: winget
      parameters:
          configure: "projectConfiguration.dsc.yaml"

Weitere Informationen zur WinGet-Konfiguration finden Sie unter WinGet-Konfiguration.

Schreiben einer Konfigurationsdatei

Sie können neue Tasks definieren, die auf Ihre Dev-Boxen angewendet werden sollen, indem Sie eine eigene Konfigurationsdatei erstellen. Sie können Ihre Konfigurationsdatei in Visual Studio Code testen und alle erforderlichen Änderungen vornehmen, ohne für jeden Test eine separate Dev-Box erstellen zu müssen.

Bevor Sie eine eigene Konfigurationsdatei erstellen und testen können, muss ein Katalog vorhanden sein, der dem Dev Center zugeordnete Tasks enthält. Sie können eine Visual Studio Code-Erweiterung verwenden, um die Tasks im angefügten Katalog zu ermitteln.

  1. Erstellen Sie eine Dev-Box (oder verwenden Sie eine vorhandene Dev-Box) zum Testen.

  2. Installieren Sie Visual Studio Code in der Dev-Box und dann die VS Code-Erweiterung für Dev Box v1.2.2.

  3. Laden Sie eine Beispiel-YAML-Konfigurationsdatei aus dem Beispielrepository herunter, und öffnen Sie sie in Visual Studio Code.

  4. Erkunden Sie über die Befehlspalette Tasks, die im Katalog verfügbar sind. Wählen Sie unter Ansicht>Befehlspalette die Option Dev-Box: Verfügbare Tasks für diese Dev-Box auflisten aus.

    Screenshot von Visual Studio Code, der die Befehlspalette mit der Dev-Box List zeigt, in der die verfügbaren Aufgaben für diese Dev-Box hervorgehoben sind.

  5. Testen Sie die Konfiguration in Visual Studio Code mithilfe von F5/der Befehlspalette. Wählen Sie unter Ansicht>Befehlspalette die Option Dev-Box aus: Anpassungstasks anwenden aus.

    Screenshot von Visual Studio Code, der die Befehlspalette mit den hervorgehobenen Aufgaben der Dev Box „Anpassungen anwenden“ zeigt.

  6. Die Konfigurationsdatei wird sofort ausgeführt und wendet die angegebenen Tasks auf die Test-Dev-Box an. Sehen Sie sich die Änderungen an, und überprüfen Sie das Visual Studio Code-Terminal auf Fehler oder Warnungen, die während der Taskausführung generiert wurden.

  7. Wenn die Konfigurationsdatei erfolgreich ausgeführt wird, geben Sie sie für Entwickler frei, damit sie sie beim Erstellen einer neuen Dev-Box hochladen können.

Tipp

Als Alternative zu Visual Studio Code können Sie Dev Home verwenden, um eine Konfigurationsdatei auf einer grafischen Benutzeroberfläche zu erstellen und zu überprüfen. Weitere Informationen zu Dev Home finden Sie unter Erstellen wiederverwendbarer Dev-Box-Anpassungen mit Dev Home.

Hinweis

Die Möglichkeit zum Erstellen und Hochladen einer Datei ist kein Sicherheitsrisiko. Die hochgeladene Datei kann nur Einstellungen anwenden, die in dem Katalog definiert sind, der an das Dev Center angefügt ist. Wenn der Task dort nicht definiert ist, wird dem Entwickler eine Fehlermeldung mit dem Hinweis angezeigt, dass der Task nicht definiert ist.

Freigeben einer Konfigurationsdatei aus einem Coderepository

Stellen Sie Ihre Konfigurationsdatei für Ihre Entwickler nahtlos zur Verfügung, indem Sie ihr den Namen workload.yaml geben und sie in ein Repository hochladen, auf das Entwickler zugreifen können. In der Regel ist dies das Codierungsrepository. Wenn Sie eine Dev-Box erstellen, geben Sie die Repository-URL an, und die Konfigurationsdatei wird zusammen mit dem Rest des Repositorys geklont. Die Dev-Box durchsucht das Repository nach einer Datei mit dem Namen „workload.yaml“, und wenn eine gefunden wird, werden die aufgeführten Tasks ausgeführt. Diese Konfiguration bietet eine nahtlose Möglichkeit zum Ausführen von Anpassungen in einer Dev-Box.

  1. Erstellen Sie eine Konfigurationsdatei namens workload.yaml.

  2. Fügen Sie die Konfigurationsdatei dem Stamm eines privaten Azure Repos-Repositorys mit Ihrem Code hinzu, und committen Sie sie.

  3. Melden Sie sich beim Microsoft Dev Box-Entwicklerportal an.

  4. Wählen Sie Neu>Dev-Box aus.

  5. Geben Sie in Dev-Box hinzufügen die folgenden Werte ein, und wählen Sie dann Weiter aus:

    Einstellung Wert
    Name Geben Sie einen Namen für die Dev-Box ein. Dev-Box-Namen müssen innerhalb eines Projekts eindeutig sein.
    Projekt Wählen Sie ein Projekt aus der Dropdownliste aus.
    Dev-Box-Pool Wählen Sie einen Pool in der Dropdownliste aus, die alle Dev-Box-Pools für dieses Projekt enthält. Wählen Sie für die geringste Latenz einen Dev-Box-Pool in der Nähe aus.
    Anwenden von Anpassungen Wählen Sie Anpassungen anwenden aus.

    Screenshot der Dev-Box-Anpassungsoptionen im Entwicklerportal mit hervorgehobenen hochgeladenen Anpassungsdateien.

  6. Wählen Sie auf der Seite Dev-Box anpassen die Option Anpassungsdatei aus Repository auswählen, geben Sie anschließend in Azure DevOps-Repository-URL die URL des Repositorys ein, in dem die anzuwendende Konfigurationsdatei gehostet wird, und wählen Sie dann Weiter aus.

    Screenshot der Seite „Dev-Box anpassen“ mit den Optionen „Anpassungsdatei aus Repository auswählen“ und „Azure DevOps-Repository-URL“

  7. Dev Box zeigt auf der Zusammenfassungsseite zum Erstellen der Dev-Box die Aufgaben an, die angewandt werden. Klicken Sie auf Erstellen.

Nach Abschluss des Erstellungsprozesses sind in der neuen Dev-Box nodejs und Visual Studio Code installiert.

In der neuen Dev-Box wurden alle Anweisungen aus der Konfigurationsdatei angewandt und die gewünschten Repositorys geklont.

Definieren neuer Tasks in einem Katalog

Durch das Erstellen neuer Tasks in einem Katalog können Sie Anpassungen erstellen, die auf Ihre Entwicklungsteams zugeschnitten sind, sowie Schutzmaßnahmen für die möglichen Konfigurationen hinzufügen.

  1. Erstellen Sie ein Repository zum Speichern Ihrer Tasks.

    Optional können Sie eine Kopie des Schnellstartkatalogs in Ihrem eigenen Repository erstellen, um sie als Ausgangspunkt zu verwenden.

  2. Erstellen Sie Tasks in Ihrem Repository, indem Sie vorhandene PowerShell-Skripts ändern oder neue Skripts erstellen.

    Um mit dem Erstellen von Tasks zu beginnen, können Sie die Beispiele im Dev Center-Beispielrepository auf GitHub und die PowerShell-Dokumentation verwenden.

  3. Fügen Sie Ihr Repository als Katalog an Ihr Dev Center an.

  4. Erstellen Sie eine Konfigurationsdatei für diese Tasks, indem Sie die Schritte unter Schreiben einer Konfigurationsdatei ausführen.

Verlinken von Geheimnissen aus einem Azure Key Vault

Sie können Geheimnisse aus Ihrem Azure Key Vault in Ihren yaml-Konfigurationen verwenden, um private Repositories zu klonen, oder mit jeder benutzerdefinierten Aufgabe, die Sie verfassen und die ein Zugriffstoken erfordert.

So konfigurieren Sie Ihre Key Vault-Geheimnisse für die Verwendung in Ihren yaml-Konfigurationen,

  1. Stellen Sie sicher, dass die verwaltete Identität Ihres Dev Center-Projekts die Rollen „Leseberechtigter für Schlüsseltresore“ und „Geheimnisbenutzer für Schlüsseltresore“ für Ihren Schlüsseltresor besitzt.

  2. Gewähren Sie die Rolle „Secrets User“ für das Key Vault-Geheimnis jeder benutzenden Person oder Benutzergruppe, die in der Lage sein soll, das Geheimnis während der Anpassung einer Dev-Box zu verwenden. Zu den benutzenden Personen oder Gruppen, denen die Rolle zugewiesen wird, müssen die verwaltete Identität für das Dev-Center, Ihr eigenes Benutzerkonto und alle benutzenden Personen oder Gruppen gehören, die das Geheimnis während der Anpassung einer Dev-Box benötigen.

Weitere Informationen finden Sie unter:

Sie können das Geheimnis in Ihrer yaml-Konfiguration in folgendem Format referenzieren, wobei Sie die Aufgabe git-clone als Beispiel nehmen:

$schema: "1.0"
tasks:
   name: git-clone
   description: Clone this repository into C:\Workspaces
      parameters:
         repositoryUrl: https://myazdo.visualstudio.com/MyProject/_git/myrepo
         directory: C:\Workspaces
         pat: '{{KEY_VAULT_SECRET_URI}}'

Wenn Sie ein privates Azure DevOps-Repository (Azure Repos) klonen möchten, müssen Sie kein Geheimnis in Key Vault konfigurieren. Stattdessen können Sie {{ado}} oder {{ado://your-ado-organization-name}} als Parameter verwenden. Dies holt ein Zugriffstoken in Ihrem Namen ein, wenn Sie eine Dev-Box erstellen, die nur Lesezugriff auf Ihr Repository hat. Die Aufgabe „git-clone“ im Schnellstartkatalog verwendet das Zugriffstoken, um Ihr Repository zu klonen. Ein Beispiel:

tasks:
   name: git-clone
   description: Clone this repository into C:\Workspaces
      parameters:
         repositoryUrl: https://myazdo.visualstudio.com/MyProject/_git/myrepo
         directory: C:\Workspaces
         pat: '{{ado://YOUR_ADO_ORG}}'

Wenn die Richtlinien Ihrer Organisation vorschreiben, dass Ihr Key Vault nicht mit dem Internet verbunden werden darf, können Sie Ihren Key Vault so einstellen, dass vertrauenswürdige Microsoft-Dienste Ihre Firewallregeln umgehen können.

Screenshot der Azure- Firewallkonfiguration mit der Option „Vertrauenswürdigen Microsoft-Diensten erlauben, diese Firewall zu umgehen“.

Wie Sie vertrauenswürdigen Microsoft-Diensten erlauben, die Firewall zu umgehen, erfahren Sie unter Konfigurieren von Azure Key Vault-Netzwerkeinstellungen.