De Azure-aanmeldingsactie gebruiken met Azure CLI en PowerShell in Azure Stack Hub
U kunt GitHub Actions instellen om u aan te melden bij uw Azure Stack Hub-exemplaar, PowerShell uit te voeren en vervolgens een Azure CLI-script uit te voeren. U kunt dit gebruiken als basis voor een werkstroom voor continue integratie en continue implementatie (CI/CD) voor uw oplossing met Azure Stack Hub. Met deze werkstroom kunt u het bouwen, testen en implementeren van uw oplossing automatiseren, zodat u zich kunt richten op het schrijven van code. Door bijvoorbeeld een aantal andere acties toe te voegen, kunt u deze werkstroom samen met een Azure Resource Manager-sjabloon gebruiken om een VM in te richten, een toepassingsopslagplaats te valideren en vervolgens elke keer dat u een specifieke vertakking in GitHub samenvoegt een toepassing op die VM te implementeren. Voorlopig helpt dit artikel u om u te oriënteren met GitHub Actions en Azure Stack Hub.
GitHub Actions zijn werkstromen die bestaan uit acties die automatisering rechtstreeks in uw codeopslagplaats mogelijk maken. U kunt de werkstromen activeren met gebeurtenissen in uw GitHub-ontwikkelingsproces. U kunt algemene DevOps-automatiseringstaken uitvoeren, zoals testen, implementeren en continue integratie.
Als u GitHub Actions wilt gebruiken met Azure Stack Hub, moet u een service-principal (SPN) met specifieke vereisten gebruiken. In dit artikel maakt u een zelf-hostende runner. Met GitHub kunt u elke computer gebruiken die door GitHub kan worden bereikt in uw GitHub Actions. U kunt een virtuele machine (VM) maken als uw runner in Azure, in Azure Stack Hub of elders.
Deze voorbeeldwerkstroom omvat:
- Instructies voor het maken en valideren van uw SPN.
- Een Windows 2016 Server-kernmachine configureren als GitHub Actions zelf-hostende runner voor gebruik met Azure Stack Hub.
- Een werkstroom die gebruikmaakt van:
- De azure-aanmeldingsactie
- De Actie PowerShell-script
Azure Stack Hub GitHub Actions
In het volgende diagram ziet u de verschillende omgevingen en hun relaties.
Onderdelen van het gebruik van de zelf-hostende runner:
- GitHub Actions gehost op GitHub
- Zelf-hostende runner gehost in Azure
- Azure Stack Hub
Een beperking van het gebruik van GitHub Actions met Azure Stack Hub is dat voor het proces een Azure Stack Hub moet worden gebruikt die is verbonden met internet. De werkstroom wordt geactiveerd in een GitHub-opslagplaats. U kunt zowel Microsoft Entra-id als Active Directory Federated Services (AD FS) gebruiken als uw id-provider.
Hoewel dit buiten het bereik van dit artikel valt, kan uw zelf-hostende runner ook een virtueel particulier netwerk gebruiken om achter een firewall verbinding te maken met uw Azure Stack Hub.
Service-principal ophalen
Een SPN biedt op rollen gebaseerde referenties, zodat processen buiten Azure verbinding kunnen maken met en communiceren met resources. U hebt een SPN met inzendertoegang en de kenmerken die in deze instructies zijn opgegeven, nodig voor gebruik met uw GitHub Actions.
Als gebruiker van Azure Stack Hub bent u niet gemachtigd om de SPN te maken. U moet dit principe aanvragen bij uw cloudoperator. De instructies worden hier gegeven, zodat u de SPN kunt maken als u een cloudoperator bent, of u kunt de SPN valideren als u een ontwikkelaar bent met behulp van een SPN in uw werkstroom die wordt geleverd door een cloudoperator.
De cloudoperator moet de SPN maken met behulp van Azure CLI.
De volgende codefragmenten zijn geschreven voor een Windows-computer met behulp van de PowerShell-prompt met Azure CLI. Als u CLI op een Linux-computer gebruikt en bash gebruikt, verwijdert u de regelextensie of vervangt u deze door een \
.
Bereid de waarden voor van de volgende parameters die worden gebruikt om de SPN te maken:
Parameter Voorbeeld Beschrijving endpoint-resource-manager "https://management.orlando.azurestack.corp.microsoft.com" Het eindpunt voor resourcebeheer. achtervoegsel-opslag-eindpunt "orlando.azurestack.corp.microsoft.com" Het eindpuntachtervoegsel voor opslagaccounts. achtervoegsel-keyvault-dns ".vault.orlando.azurestack.corp.microsoft.com" Het dns-achtervoegsel Key Vault service. endpoint-active-directory-graph-resource-id "https://graph.windows.net/" De resource-id voor Active Directory. endpoint-sql-management https://notsupported Het beheereindpunt van de SQL-server. Stel dit in op https://notsupported
profiel 2020-09-01-hybride Profiel dat moet worden gebruikt voor deze cloud. Open het opdrachtregelprogramma, zoals Windows PowerShell of Bash en meld u aan. Gebruik de volgende opdracht:
az login
Gebruik de
register
opdracht voor een nieuwe omgeving of deupdate
opdracht als u een bestaande omgeving gebruikt. Gebruik de volgende opdracht.az cloud register ` -n "AzureStackUser" ` --endpoint-resource-manager "https://management.<local>.<FQDN>" ` --suffix-storage-endpoint ".<local>.<FQDN>" ` --suffix-keyvault-dns ".vault.<local>.<FQDN>" ` --endpoint-active-directory-graph-resource-id "https://graph.windows.net/" ` --endpoint-sql-management https://notsupported ` --profile 2020-09-01-hybrid
Haal uw abonnements-id en resourcegroep op die u wilt gebruiken voor de SPN.
Maak de SPN met de volgende opdracht met de abonnements-id en resourcegroep:
az ad sp create-for-rbac --name "myApp" --role contributor ` --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} ` --sdk-auth
Controleer het resulterende JSON-object. U gebruikt het JSON-object om uw geheim te maken in uw GitHub-opslagplaats die uw actie bevat. Het JSON-object moet de volgende kenmerken hebben:
{ "clientId": <Application ID for the SPN>, "clientSecret": <Client secret for the SPN>, "subscriptionId": <Subscription ID for the SPN>, "tenantId": <Tenant ID for the SPN>, "activeDirectoryEndpointUrl": "https://login.microsoftonline.com/", "resourceManagerEndpointUrl": "https://management.<FQDN>", "activeDirectoryGraphResourceId": "https://graph.windows.net/", "sqlManagementEndpointUrl": "https://notsupported", "galleryEndpointUrl": "https://providers.<FQDN>:30016/", "managementEndpointUrl": "https://management.<FQDN>" }
Service-principal toevoegen aan opslagplaats
U kunt GitHub-geheimen gebruiken om gevoelige informatie te versleutelen voor gebruik in uw acties. U maakt een geheim dat uw SPN bevat, zodat de actie zich kan aanmelden bij uw Azure Stack Hub-exemplaar.
Waarschuwing
GitHub raadt u aan geen zelf-hostende runners te gebruiken met openbare opslagplaatsen Forks van uw openbare opslagplaats kunnen gevaarlijke code uitvoeren op uw zelf-hostende runner-machine door een pull-aanvraag te maken waarmee de code in een werkstroom wordt uitgevoerd. Zie 'Over zelf-hostende hardlopers' voor meer informatie.
- Open of maak een GitHub-opslagplaats. Als u hulp nodig hebt bij het maken van een opslagplaats in GitHub, vindt u instructies in de GitHub-documenten.
- Stel uw opslagplaats in op privé.
- Selecteer Instellingen>Zichtbaarheid van opslagplaats wijzigen.
- Selecteer Privé maken.
- Typ de naam van de opslagplaats.
- Selecteer Ik begrijp en wijzig de zichtbaarheid van de opslagplaats.
- Selecteer Instellingen.
- Selecteer Geheimen.
- Selecteer Nieuw opslagplaatsgeheim.
- Geef uw geheim
AZURE_CREDENTIALS
de naam . - Plak het JSON-object dat uw SPN vertegenwoordigt.
- Selecteer Geheim toevoegen.
Vereisten voor het maken van uw VIRTUELE machine en installeren
Maak uw zelf-hostende runner.
Met deze instructies maakt u een runner als een Windows-VM in Azure. Als u verbinding wilt maken met uw Azure Stack Hub die wordt gehost in een datacenter, hebt u mogelijk een VPN-verbinding nodig. U vindt instructies voor het inschakelen van de verbinding in de sectie Azure Stack Hub Tools installeren op uw zelf-hostende runner waarvoor mogelijk een VPN-verbinding is vereist.
- Zie Quickstart: Een virtuele Windows-machine maken in de Azure Portal voor hulp bij het maken van een virtuele Windows-machine in Azure. Wanneer u deze instructies volgt, installeert u Windows Server 2016 Core.
- Zie Quickstart: Een Windows-server-VM maken met de Azure Stack Hub-portal voor hulp bij het maken van een Windows-VM in Azure Stack Hub. Wanneer u deze instructies volgt, installeert u Windows Server 2016 Core.
Gebruik een externe verbinding om verbinding te maken met uw Windows 2016-server met behulp van het IP-adres, de gebruikersnaam en het wachtwoord van de server die u hebt gedefinieerd bij het maken van de computer.
Installeer Chocolatey. Chocolatey is een pakketbeheerder voor Windows die u kunt gebruiken om afhankelijkheden vanaf de opdrachtregel te installeren en te beheren. Typ in een PowerShell-prompt met verhoogde bevoegdheid:
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'))
Installeer PowerShell Core. Typ in een PowerShell-prompt met verhoogde bevoegdheid:
choco install powershell-core
Installeer Azure CLI. Typ in een PowerShell-prompt met verhoogde bevoegdheid:
choco install azure-cli
Installeer Azure Stack Hub PowerShell. Typ in een PowerShell-prompt met verhoogde bevoegdheid:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 Install-Module -Name Az.BootStrapper -Force -AllowPrerelease Install-AzProfile -Profile 2020-09-01-hybrid -Force Install-Module -Name AzureStack -RequiredVersion 2.0.2-preview -AllowPrerelease
Zie PowerShell Az-module installeren voor Azure Stack Hub voor meer informatie over het gebruik van de Azure Stack Hub Az-modules.
Start de computer opnieuw op. Typ in een PowerShell-prompt met verhoogde bevoegdheid:
shutdown /r
Voeg de machine toe als een zelf-hostende runner aan uw GitHub-opslagplaats. U vindt instructies voor het toevoegen van een zelf-hostende runner in de GitHub-documenten. Zie Zelf-hostende hardlopers toevoegen voor meer informatie.
Wanneer u klaar bent, controleert u of de service wordt uitgevoerd en luistert u naar uw service. Controleer dit door uit te voeren
/run.cmd
vanuit de map van de runner.
Optioneel: Azure Stack Hub Tools installeren op uw zelf-hostende runner
Voor de instructies in dit artikel is geen toegang tot de Azure Stack Hub Tools vereist, maar tijdens het ontwikkelen van uw eigen werkstroom moet u mogelijk de hulpprogramma's gebruiken. De volgende instructies kunnen u helpen bij het installeren van de hulpprogramma's op uw zelf-hostende Windows-runner. Zie Azure Stack Hub Tools downloaden van GitHub voor meer informatie over Azure Stack Hub-hulpprogramma's. In deze instructies wordt ervan uitgegaan dat u pakketbeheer Chocolatey hebt geïnstalleerd.
Installeer Git.
choco install git
Typ in een PowerShell-prompt met verhoogde bevoegdheid:
# Change directory to the root directory. cd \ # Download the tools archive. [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 invoke-webrequest ` https://github.com/Azure/AzureStack-Tools/archive/az.zip ` -OutFile az.zip # Expand the downloaded files. expand-archive az.zip ` -DestinationPath . ` -Force # Change to the tools directory. cd AzureStack-Tools-az
Als u uw runner nodig hebt om verbinding te maken met uw Azure Stack Hub-exemplaar, kunt u PowerShell gebruiken. U vindt de instructies in het artikel Verbinding maken met Azure Stack Hub met PowerShell.
Een zelf-hostende runner maken
U kunt een zelf-hostende runner instellen in De GitHub Docs. Een zelf-hostende runner kan worden uitgevoerd op elke computer die verbinding kan maken met GitHub. U kunt ervoor kiezen om een zelf-hostende runner te gebruiken als u een automatiseringstaak in uw werkstroom hebt waarvoor uitgebreide afhankelijkheden, specifieke licentievereisten, zoals een USB-dongle voor een softwarelicentie, of andere computer- of softwarespecifieke behoeften zijn vereist. Uw machine kan een fysieke machine, een VM of een container zijn. U kunt de runner in uw datacenter of in de cloud plaatsen.
In dit artikel gaat u een Windows-VM gebruiken die wordt gehost in Azure en die wordt geconfigureerd met specifieke PowerShell-vereisten voor Azure Stack Hub.
Zie de GitHub Docs Over zelf-hostende runners voor instructies over het instellen, configureren en verbinden van uw zelf-hostende runner met uw opslagplaats.
Noteer de naam en tags van uw zelf-hostende runner. De werkstroom in dit artikel roept deze aan met behulp van de tag self-hosted
.
De werkstroom toevoegen aan uw opslagplaats
Maak een nieuwe werkstroom met behulp van de yaml in deze sectie om uw werkstroom te maken.
Open uw GitHub-opslagplaats.
Selecteer Acties.
Maak een nieuwe werkstroom.
- Als dit uw eerste werkstroom is, selecteert u Zelf een werkstroom instellen onder Een werkstroomsjabloon kiezen.
- Als u bestaande werkstromen hebt, selecteert u Nieuwe werkstroom>Zelf een werkstroom instellen.
Geef in het pad de naam van het bestand
workflow.yml
.Kopieer en plak de werkstroom yml.
on: [push] env: ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' jobs: azurestack-test: runs-on: self-hosted steps: - name: Login to AzureStack with Az Powershell uses: azure/login@releases/v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} environment: 'AzureStack' enable-AzPSSession: true - name: Run Az PowerShell Script Against AzureStack uses: azure/powershell@v1 with: azPSVersion: '3.1.0' inlineScript: | hostname Get-AzContext Get-AzResourceGroup - name: Login to AzureStack with CLI uses: azure/login@releases/v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} environment: 'AzureStack' enable-AzPSSession: false - name: Run Azure CLI Script Against AzureStack run: | hostname az group list --output table
Selecteer Doorvoeren starten.
Voeg de doorvoertitel en optionele details toe en selecteer vervolgens Nieuw bestand doorvoeren.
Wanneer de actie wordt uitgevoerd, controleert u of deze is uitgevoerd.
Open uw GitHub-opslagplaats. U kunt de werkstroom activeren door naar de opslagplaats te pushen.
Selecteer Acties.
Selecteer de naam van de doorvoer onder Alle werkstromen.
Selecteer de naam van de taak, azurestack-test.
Vouw de secties uit om de retourwaarden voor uw PowerShell- en CLI-opdrachten te controleren.
Opmerkingen over het werkstroombestand en de actie:
- De werkstroom bevat één taak met de naam
azurestack-test
. - Een pushgebeurtenis activeert de werkstroom.
- De actie maakt gebruik van een zelf-hostende runner die is ingesteld in de opslagplaats en wordt aangeroepen door het label van de runner in de werkstroom met de regel:
runs on: self-hosted
. - De werkstroom bevat drie acties.
- De eerste actie roept de Azure-aanmeldingsactie aan om u aan te melden met PowerShell. Met GitHub Actions voor Azure kunt u werkstromen maken die u in uw opslagplaats kunt instellen voor het bouwen, testen, verpakken, vrijgeven en implementeren in Azure. Deze actie gebruikt uw Azure Stack SPN-referenties om verbinding te maken en een sessie te openen met uw Azure Stack Hub-omgeving. Meer informatie over het gebruik van de actie vindt u in GitHub, Azure Login Action.
- De tweede actie maakt gebruik van Azure PowerShell. De actie maakt gebruik van de Az PowerShell-modules en werkt met zowel de government- als de Azure Stack Hub-cloud. Nadat u deze werkstroom hebt uitgevoerd, controleert u de taak om te controleren of het script de resourcegroepen in uw Azure Stack Hub-omgeving heeft verzameld. Zie Azure PowerShell Action voor meer informatie
- De derde actie gebruikt Azure CLI om u aan te melden en verbinding te maken met uw Azure Stack Hub om resourcegroepen te verzamelen. Zie Azure CLI-actie voor meer informatie.
- Zie de documentatie voor GitHub Actions voor meer informatie over het werken met GitHub Actions en zelf-hostende hardlopers.
Volgende stappen
- Zoek meer acties in de GitHub Marketplace.
- Meer informatie over algemene implementaties voor Azure Stack Hub
- Meer informatie over Azure Resource Manager-sjablonen gebruiken in Azure Stack Hub
- Bekijk het DevOps-patroon voor hybride cloud, DevOps-patroon