- Artikel
Sie können GitHub-Aktionen einrichten, um sich bei Ihrer Azure Stack Hub-Instanz anzumelden, PowerShell auszuführen und dann ein Azure CLI-Skript auszuführen. Sie können dies als Grundlage für einen CI/CD-Workflow (Continuous Integration, Continuous Deployment) für Ihre Lösung mit Azure Stack Hub verwenden. Mit diesem Workflow können Sie das Erstellen, Testen und Bereitstellen Ihrer Lösung automatisieren, sodass Sie sich auf das Schreiben von Code konzentrieren können. Wenn Sie beispielsweise einige andere Aktionen hinzufügen, können Sie diesen Workflow zusammen mit einer Azure Resource Manager-Vorlage verwenden, um eine VM bereitzustellen, ein Anwendungs-Repository zu validieren und dann jedes Mal eine Anwendung auf dieser VM bereitzustellen, wenn Sie sie mit einem bestimmten Zweig in GitHub zusammenführen. Dieser Artikel hilft Ihnen zunächst dabei, sich mit GitHub Actions und Azure Stack Hub vertraut zu machen.
GitHub-Aktionen sind Workflows, die aus Aktionen bestehen, die eine Automatisierung direkt in Ihrem Code-Repository ermöglichen. Sie können die Workflows mit Ereignissen in Ihrem GitHub-Entwicklungsprozess auslösen. Sie können allgemeine DevOps-Automatisierungsaufgaben wie Tests, Bereitstellung und kontinuierliche Integration durchführen.
Um GitHub Actions mit Azure Stack Hub verwenden zu können, müssen Sie einen Dienstprinzipal (SPN) mit bestimmten Anforderungen verwenden. In diesem Artikel erstellen Sie eineselbst gehosteter Läufer. Mit GitHub können Sie in Ihren GitHub-Aktionen jede Maschine verwenden, die von GitHub erreicht werden kann. Sie können eine virtuelle Maschine (VM) als Ihren Läufer in Azure, in Azure Stack Hub oder anderswo erstellen.
Dieser Beispielworkflow umfasst:
- Anweisungen zum Erstellen und Validieren Ihres SPN.
- Konfigurieren einer Windows 2016 Server-Kernmaschine als selbstgehosteter GitHub Actions-Runner für die Arbeit mit Azure Stack Hub.
- Ein Workflow, der Folgendes verwendet:
- Die Azure-Anmeldeaktion
- Die PowerShell-Skriptaktion
GitHub-Aktionen für Azure Stack Hub
Das folgende Diagramm zeigt die verschiedenen Umgebungen und ihre Beziehungen.
Teile der Verwendung des selbstgehosteten Läufers:
- Auf GitHub gehostete GitHub-Aktionen
- Selbstgehosteter Runner, gehostet auf Azure
- Azure Stack Hub
Eine Einschränkung bei der Verwendung von GitHub Actions mit Azure Stack Hub besteht darin, dass für den Prozess die Verwendung eines mit dem Web verbundenen Azure Stack Hub erforderlich ist. Der Workflow wird in einem GitHub-Repository ausgelöst. Sie können sowohl Azure Active Directory (Azure AD) als auch Active Directory Federated Services (AD FS) als Identitätsanbieter verwenden.
Obwohl dies den Rahmen dieses Artikels sprengt, kann Ihr selbstgehosteter Läufer auch ein virtuelles privates Netzwerk verwenden, um hinter einer Firewall eine Verbindung zu Ihrem Azure Stack Hub herzustellen.
Rufen Sie den Dienstprinzipal ab
Ein SPN stellt rollenbasierte Anmeldeinformationen bereit, damit Prozesse außerhalb von Azure eine Verbindung zu Ressourcen herstellen und mit ihnen interagieren können. Zur Verwendung mit Ihren GitHub-Aktionen benötigen Sie einen SPN mit Mitwirkender-Zugriff und den in dieser Anleitung angegebenen Attributen.
Als Benutzer von Azure Stack Hub verfügen Sie nicht über die Berechtigung zum Erstellen des SPN. Sie müssen diesen Grundsatz bei Ihrem Cloud-Betreiber erfragen. Die Anweisungen werden hier bereitgestellt, damit Sie den SPN erstellen können, wenn Sie ein Cloud-Betreiber sind, oder Sie können den SPN validieren, wenn Sie ein Entwickler sind, der einen SPN in Ihrem Workflow verwendet, der von einem Cloud-Betreiber bereitgestellt wird.
Der Cloud-Betreiber muss den SPN mithilfe der Azure-Befehlszeilenschnittstelle erstellen.
Die folgenden Codeausschnitte werden für einen Windows-Computer mithilfe der PowerShell-Eingabeaufforderung mit Azure CLI geschrieben. Wenn Sie CLI auf einem Linux-Computer und Bash verwenden, entfernen Sie entweder die Zeilenerweiterung oder ersetzen Sie sie durch eine\
.
Bereiten Sie die Werte der folgenden Parameter vor, die zum Erstellen des SPN verwendet werden:
See AlsoÜbersicht über Azure-NetzwerksicherheitsgruppenAusgehende Firewall-Authentifizierung mit Azure AD als SAML-IdP | AdministrationshandbuchParameter Beispiel Beschreibung Endpunkt-Ressourcenmanager „https://management.orlando.azurestack.corp.microsoft.com“ Der Ressourcenverwaltungsendpunkt. Suffix-Speicherendpunkt „orlando.azurestack.corp.microsoft.com“ Das Endpunktsuffix für Speicherkonten. Suffix-Keyvault-DNS „.vault.orlando.azurestack.corp.microsoft.com“ Das DNS-Suffix des Key Vault-Diensts. Endpoint-Active-Directory-Graph-Ressourcen-ID „https://graph.windows.net/“ Die Active Directory-Ressourcen-ID. Endpunkt-SQL-Verwaltung https://nicht unterstützt Der SQL Server-Verwaltungsendpunkt. Stellen Sie dies auf https://nicht unterstützt
Profil 2020-09-01-Hybrid Profil, das für diese Cloud verwendet werden soll. Öffnen Sie Ihr Befehlszeilentool wie Windows PowerShell oder Bash und melden Sie sich an. Verwenden Sie den folgenden Befehl:
az-Login
Benutzen Sie die
registrieren
Befehl für eine neue Umgebung oder dieaktualisieren
Befehl, wenn Sie eine vorhandene Umgebung verwenden. Verwenden Sie den folgenden Befehl.az cloud register ` -n "AzureStackUser" ` --endpoint-resource-manager "https://management.
. " ` --suffix-storage-endpoint ". . " ` --suffix-keyvault-dns ".vault. . " ` --endpoint-active-directory-graph-resource-id "https://graph.windows.net/" ` --endpoint -sql-management https://notsupported ` --profile 2020-09-01-hybrid Rufen Sie Ihre Abonnement-ID und Ressourcengruppe ab, die Sie für den SPN verwenden möchten.
Erstellen Sie den SPN mit dem folgenden Befehl mit der Abonnement-ID und der Ressourcengruppe:
az ad sp create-for-rbac --name "myApp" --role contributor ` --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} ` --sdk-auth
Überprüfen Sie das resultierende JSON-Objekt. Sie verwenden das JSON-Objekt, um Ihr Geheimnis in Ihrem GitHub-Repository zu erstellen, das Ihre Aktion enthält. Das JSON-Objekt sollte die folgenden Attribute haben:
{ „clientId“:
, „clientSecret“: , „subscriptionId“: , „tenantId“: , „ activeDirectoryEndpointUrl": "https://login.microsoftonline.com/", "resourceManagerEndpointUrl": "https://management. ", "activeDirectoryGraphResourceId": "https://graph.windows.net/", " sqlManagementEndpointUrl": "https://notsupported", "galleryEndpointUrl": "https://providers. :30016/", "managementEndpointUrl": "https://management. "}
Fügen Sie den Dienstprinzipal zum Repository hinzu
Sie können GitHub-Geheimnisse verwenden, um vertrauliche Informationen zu verschlüsseln, die Sie in Ihren Aktionen verwenden können. Sie erstellen ein Geheimnis, das Ihren SPN enthält, damit sich die Aktion bei Ihrer Azure Stack Hub-Instanz anmelden kann.
Warnung
GitHub empfiehlt, dass Sie keine selbstgehosteten Läufer mit öffentlichen Repositorys verwenden. Forks Ihres öffentlichen Repositorys führen möglicherweise gefährlichen Code auf Ihrem selbstgehosteten Läuferrechner aus, indem sie eine Pull-Anfrage erstellen, die den Code in einem Workflow ausführt. Weitere Informationen finden Sie unter „Über selbst gehostete Läufer."
- Öffnen oder erstellen Sie ein GitHub-Repository. Wenn Sie Anleitungen zum Erstellen eines Repositorys in GitHub benötigen, finden Sie hierAnweisungen in den GitHub-Dokumenten.
- Stellen Sie Ihr Repository auf privat ein.
- WählenEinstellungen>Ändern Sie die Sichtbarkeit des Repositorys.
- WählenPrivatisieren.
- Geben Sie den Namen Ihres Repositorys ein.
- WählenIch verstehe, ändern Sie die Sichtbarkeit des Repositorys.
- WählenEinstellungen.
- WählenGeheimnisse.
- WählenNeues Repository-Geheimnis.
- Nennen Sie Ihr Geheimnis
AZURE_CREDENTIALS
. - Fügen Sie das JSON-Objekt ein, das Ihren SPN darstellt.
- WählenGeheimnis hinzufügen.
Erstellen Sie Ihre VM und installieren Sie die Voraussetzungen
Erstellen Sie Ihren selbst gehosteten Läufer.
Mit diesen Anweisungen wird ein Runner als Windows-VM in Azure erstellt. Wenn Sie eine Verbindung zu Ihrem in einem Rechenzentrum gehosteten Azure Stack Hub herstellen müssen, benötigen Sie möglicherweise eine VPN-Verbindung. Eine Anleitung zur Aktivierung der Verbindung finden Sie im AbschnittInstallieren Sie Azure Stack Hub Tools auf Ihrem selbstgehosteten LäuferDafür ist möglicherweise eine VPN-Verbindung erforderlich.
- Anleitungen zum Erstellen einer Windows-VM in Azure finden Sie unterSchnellstart: Erstellen Sie eine virtuelle Windows-Maschine im Azure-Portal. Wenn Sie diese Anweisungen befolgen, installieren Sie Windows Server 2016 Core.
- Anleitungen zum Erstellen einer Windows-VM in Azure Stack Hub finden Sie unterSchnellstart: Erstellen Sie eine Windows-Server-VM mit dem Azure Stack Hub-Portal. Wenn Sie diese Anweisungen befolgen, installieren Sie Windows Server 2016 Core.
Verwenden Sie eine Remoteverbindung, um eine Verbindung zu Ihrem Windows 2016-Server herzustellen. Verwenden Sie dabei die Server-IP-Adresse, den Benutzernamen und das Kennwort, die Sie beim Erstellen der Maschine definiert haben.
Installieren Sie Chocolatey. Chocolatey ist ein Paketmanager für Windows, mit dem Sie Abhängigkeiten über die Befehlszeile installieren und verwalten können. Geben Sie an einer PowerShell-Eingabeaufforderung mit erhöhten Rechten Folgendes ein:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
Installieren Sie PowerShell Core. Geben Sie an einer PowerShell-Eingabeaufforderung mit erhöhten Rechten Folgendes ein:
choco installiert Powershell-Core
Installieren Sie Azure CLI. Geben Sie an einer PowerShell-Eingabeaufforderung mit erhöhten Rechten Folgendes ein:
choco azure-cli installieren
Installieren Sie Azure Stack Hub PowerShell. Geben Sie an einer PowerShell-Eingabeaufforderung mit erhöhten Rechten Folgendes ein:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12Install-Module -Name Az.BootStrapper -Force -AllowPrereleaseInstall-AzProfile -Profile 2020-09-01-hybrid -ForceInstall-Module -Name AzureStack -RequiredVersion 2.0. 2-Vorschau -AllowPrerelease
Weitere Informationen zur Verwendung der Azure Stack Hub Az-Module finden Sie unterInstallieren Sie das PowerShell Az-Modul für Azure Stack Hub.
Starten Sie Ihren Computer neu. Geben Sie an einer PowerShell-Eingabeaufforderung mit erhöhten Rechten Folgendes ein:
Herunterfahren /r
Fügen Sie die Maschine als selbstgehosteten Läufer zu Ihrem GitHub-Repository hinzu. Anweisungen zum Hinzufügen eines selbstgehosteten Läufers finden Sie in den GitHub-Dokumenten. Weitere Informationen finden Sie unterSelbstgehostete Läufer hinzufügen.
Wenn Sie fertig sind, überprüfen Sie, ob der Dienst ausgeführt wird und auf Ihren Dienst lauscht. Überprüfen Sie es noch einmal, indem Sie es ausführen
/run.cmd
aus dem Läuferverzeichnis.
Optional: Installieren Sie Azure Stack Hub Tools auf Ihrem selbstgehosteten Läufer
Für die Anweisungen in diesem Artikel ist kein Zugriff auf erforderlichAzure Stack Hub-Tools, aber wenn Sie Ihren eigenen Workflow entwickeln, müssen Sie möglicherweise die Tools verwenden. Die folgenden Anweisungen können Ihnen bei der Installation der Tools auf Ihrem selbstgehosteten Windows-Runner helfen. Weitere Informationen zu Azure Stack Hub Tools finden Sie unterLaden Sie Azure Stack Hub-Tools von GitHub herunter. Bei dieser Anleitung wird davon ausgegangen, dass Sie den Paketmanager Chocolatey installiert haben.
Installieren Sie Git.
Choco Install Git
Geben Sie an einer PowerShell-Eingabeaufforderung mit erhöhten Rechten Folgendes ein:
# Verzeichnis in das Stammverzeichnis wechseln.cd \# Laden Sie das Tools-Archiv herunter.[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 invoke-webrequest ` https://github.com/Azure/AzureStack-Tools /archive/az.zip ` -OutFile az.zip# Erweitern Sie die heruntergeladenen Dateien.expand-archive az.zip ` -DestinationPath . ` -Force# Wechseln Sie in das Tools-Verzeichnis.cd AzureStack-Tools-az
Wenn Ihr Runner eine Verbindung zu Ihrer Azure Stack Hub-Instanz herstellen muss, können Sie PowerShell verwenden. Die Anleitung dazu finden Sie im ArtikelStellen Sie mit PowerShell eine Verbindung zu Azure Stack Hub her.
Erstellen Sie einen selbst gehosteten Läufer
Sie können einen selbst gehosteten Läufer in den GitHub-Dokumenten einrichten. Ein selbstgehosteter Läufer kann auf jedem Computer ausgeführt werden, der eine Verbindung zu GitHub herstellen kann. Sie können sich für die Verwendung eines selbstgehosteten Läufers entscheiden, wenn Sie eine Automatisierungsaufgabe in Ihrem Workflow haben, die umfangreiche Abhängigkeiten, spezifische Lizenzanforderungen wie einen USB-Dongle für eine Softwarelizenz oder andere maschinen- oder softwarespezifische Anforderungen erfordert. Ihre Maschine kann eine physische Maschine, eine VM oder ein Container sein. Sie können den Runner in Ihrem Rechenzentrum oder in der Cloud platzieren.
In diesem Artikel verwenden Sie eine in Azure gehostete Windows-VM, die mit Azure Stack Hub-spezifischen PowerShell-Anforderungen konfiguriert wird.
Anweisungen zum Einrichten, Konfigurieren und Verbinden Ihres selbstgehosteten Läufers mit Ihrem Repository finden Sie in den GitHub-Dokumenten: „Über selbst gehostete Läufer".
Notieren Sie sich den Namen und die Tags Ihres selbst gehosteten Läufers. Der Workflow in diesem Artikel ruft es mithilfe des Tags aufselbst gehostet
.
Fügen Sie den Workflow Ihrem Repository hinzu
Erstellen Sie mit dem Yaml in diesem Abschnitt einen neuen Workflow, um Ihren Workflow zu erstellen.
Öffnen Sie Ihr GitHub-Repository.
WählenAktionen.
Erstellen Sie einen neuen Workflow.
- Wenn dies Ihr erster Workflow ist, wählen Sie ausRichten Sie selbst einen Workflow einunterWählen Sie eine Workflow-Vorlage.
- Wenn Sie über vorhandene Workflows verfügen, wählen Sie ausNeuer Arbeitsablauf>Richten Sie selbst einen Workflow ein.
Benennen Sie die Datei im Pfad
Workflow.yml
.Kopieren Sie die Workflow-YML und fügen Sie sie ein.
on: [push]env: ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true'jobs: azurestack-test: run-on: selbstgehostete Schritte: - Name: Anmeldung bei AzureStack mit Az Powershell verwendet: azure/login@releases/v1 mit: creds: $ {{ Secrets.AZURE_CREDENTIALS }} Umgebung: 'AzureStack' enable-AzPSSession: true – Name: Az PowerShell-Skript gegen AzureStack ausführen verwendet: azure/powershell@v1 mit: azPSVersion: '3.1.0' inlineScript: | Hostname Get-AzContext Get-AzResourceGroup – Name: Anmeldung bei AzureStack mit CLI verwendet: azure/login@releases/v1 mit: creds: ${{ Secrets.AZURE_CREDENTIALS }} Umgebung: „AzureStack“ enable-AzPSSession: false – Name: Ausführen Azure CLI-Skript für AzureStack ausführen: | hostname az group list --output table
WählenCommit starten.
Fügen Sie den Commit-Titel und optionale Details hinzu und wählen Sie dann ausNeue Datei übertragen.
Wenn die Aktion ausgeführt wird, überprüfen Sie, ob sie erfolgreich ausgeführt wurde.
Öffnen Sie Ihr GitHub-Repository. Sie können den Workflow auslösen, indem Sie ihn in das Repository verschieben.
WählenAktionen.
Wählen Sie unten den Namen des Commits ausAlle Arbeitsabläufe.
Wählen Sie den Namen des Jobs aus,Azurestack-Test.
Erweitern Sie die Abschnitte, um die Rückgabewerte für Ihre PowerShell- und CLI-Befehle zu überprüfen.
Hinweise zur Workflow-Datei und der Aktion:
- Der Workflow enthält einen einzelnen Job mit dem Namen
Azurestack-Test
. - Ein Push-Ereignis löst den Workflow aus.
- Die Aktion verwendet einen selbstgehosteten Runner, der im Repository eingerichtet wurde, und wird über die Bezeichnung des Runners im Workflow mit der Zeile aufgerufen:
läuft auf: selbst gehostet
. - Der Workflow enthält drei Aktionen.
- Die erste Aktion ruft die Azure-Anmeldeaktion auf, um sich mit PowerShell anzumelden. Mit GitHub Actions für Azure können Sie Workflows erstellen, die Sie in Ihrem Repository einrichten können, um sie zu erstellen, zu testen, zu verpacken, freizugeben und in Azure bereitzustellen. Diese Aktion verwendet Ihre Azure Stack SPN-Anmeldeinformationen, um eine Verbindung zu Ihrer Azure Stack Hub-Umgebung herzustellen und eine Sitzung zu öffnen. Weitere Informationen zur Verwendung der Aktion finden Sie auf GitHub.Azure-Anmeldeaktion.
- Die zweite Aktion verwendet Azure PowerShell. Die Aktion nutzt die Az PowerShell-Module und funktioniert sowohl mit Government- als auch mit Azure Stack Hub-Clouds. Nachdem Sie diesen Workflow ausgeführt haben, überprüfen Sie den Auftrag, um sicherzustellen, dass das Skript die Ressourcengruppen in Ihrer Azure Stack Hub-Umgebung erfasst hat. Weitere Informationen finden Sie unterAzure PowerShell-Aktion
- Die dritte Aktion verwendet die Azure-Befehlszeilenschnittstelle, um sich bei Ihrem Azure Stack Hub anzumelden und eine Verbindung herzustellen, um Ressourcengruppen zu sammeln. Weitere Informationen finden Sie unterAzure CLI-Aktion.
- Weitere Informationen zum Arbeiten mit GitHub-Aktionen und selbstgehosteten Läufern finden Sie imGitHub-AktionenDokumentation.
Nächste Schritte
- Weitere Aktionen finden Sie imGitHub-Marktplatz.
- LernenGängige Bereitstellungen für Azure Stack Hub
- LernenVerwenden Sie Azure Resource Manager-Vorlagen in Azure Stack Hub
- Sehen Sie sich das DevOps-Hybrid-Cloud-Muster an.DevOps-Muster