Dela via


Använda Azure-inloggningsåtgärden med Azure CLI och PowerShell på Azure Stack Hub

Du kan konfigurera GitHub Actions för att logga in på din Azure Stack Hub-instans, köra PowerShell och sedan köra ett Azure CLI-skript. Du kan använda detta som grund för ett arbetsflöde för kontinuerlig integrering, kontinuerlig distribution (CI/CD) för din lösning med Azure Stack Hub. Med det här arbetsflödet kan du automatisera skapande, testning och distribution av din lösning så att du kan fokusera på att skriva kod. Genom att till exempel lägga till några andra åtgärder kan du använda det här arbetsflödet tillsammans med en Azure Resource Manager-mall för att etablera en virtuell dator, verifiera en programlagringsplats och sedan distribuera ett program till den virtuella datorn varje gång du sammanfogar till en specifik gren i GitHub. För tillfället hjälper den här artikeln dig att bli orienterad med GitHub Actions och Azure Stack Hub.

GitHub Actions är arbetsflöden som består av åtgärder som möjliggör automatisering direkt i din kodlagringsplats. Du kan utlösa arbetsflöden med händelser i din GitHub-utvecklingsprocess. Du kan utföra vanliga DevOps-automatiseringsuppgifter som testning, distribution och kontinuerlig integrering.

Om du vill använda GitHub Actions med Azure Stack Hub måste du använda ett tjänsthuvudnamn (SPN) med specifika krav. I den här artikeln skapar du en egen värdbaserad löpare. Med GitHub kan du använda alla datorer som kan nås av GitHub i din GitHub Actions. Du kan skapa en virtuell dator (VM) som löpare i Azure, i Azure Stack Hub eller någon annanstans.

Det här exempelarbetsflödet innehåller:

  • Anvisningar om hur du skapar och validerar spn.n.
  • Konfigurera en Windows 2016 Server Core-dator som GitHub Actions lokalt installerad löpare för att arbeta med Azure Stack Hub.
  • Ett arbetsflöde som använder:
    • Azure-inloggningsåtgärden
    • PowerShell-skriptåtgärden

Azure Stack Hub GitHub Actions

Följande diagram visar de olika miljöerna och deras relationer.

Azure Stack Hub Github-åtgärd Delar av att använda den lokalt installerade löparen:

  • GitHub Actions finns på GitHub
  • Lokalt installerad löpare i Azure
  • Azure Stack Hub

En begränsning med att använda GitHub Actions med Azure Stack Hub är att processen kräver att du använder en Azure Stack Hub som är ansluten till webben. Arbetsflödet utlöses på en GitHub-lagringsplats. Du kan använda både Microsoft Entra-ID eller Active Directory Federated Services (AD FS) som identitetsprovider.

Även om detta inte ingår i den här artikeln kan din egen värdbaserade löpare också använda ett virtuellt privat nätverk för att ansluta till din Azure Stack Hub bakom en brandvägg.

Hämta tjänstens huvudnamn

Ett SPN tillhandahåller rollbaserade autentiseringsuppgifter så att processer utanför Azure kan ansluta till och interagera med resurser. Du behöver ett SPN med deltagaråtkomst och de attribut som anges i de här anvisningarna för att använda med din GitHub Actions.

Som användare av Azure Stack Hub har du inte behörighet att skapa SPN. Du måste begära den här principen från molnoperatören. Anvisningarna finns här så att du kan skapa SPN om du är en molnoperatör, eller så kan du verifiera SPN om du är utvecklare med ett SPN i arbetsflödet som tillhandahålls av en molnoperatör.

Molnoperatören måste skapa SPN med hjälp av Azure CLI.

Följande kodfragment skrivs för en Windows-dator med PowerShell-prompten med Azure CLI. Om du använder CLI på en Linux-dator och bash tar du antingen bort linjetillägget eller ersätter dem med en \.

  1. Förbered värdena för följande parametrar som används för att skapa SPN:

    Parameter Exempel Description
    endpoint-resource-manager "https://management.orlando.azurestack.corp.microsoft.com" Slutpunkten för resurshantering.
    suffix-storage-endpoint "orlando.azurestack.corp.microsoft.com" Slutpunktssuffixet för lagringskonton.
    suffix-keyvault-dns ".vault.orlando.azurestack.corp.microsoft.com" Dns-suffixet Key Vault service.
    endpoint-active-directory-graph-resource-id "https://graph.windows.net/" Resurs-ID:t för Azure Active Directory.
    endpoint-sql-management https://notsupported Sql Server-hanteringsslutpunkten. Ange detta till https://notsupported
    profil 2020-09-01-hybrid Profil som ska användas för det här molnet.
  2. Öppna kommandoradsverktyget, till exempel Windows PowerShell eller Bash och logga in. Ange följande kommando:

    az login
    
  3. register Använd kommandot för en ny miljö eller update kommandot om du använder en befintlig miljö. Använd följande kommando.

    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
    
  4. Hämta ditt prenumerations-ID och resursgrupp som du vill använda för SPN.

  5. Skapa SPN med följande kommando med prenumerations-ID och resursgrupp:

    az ad sp create-for-rbac --name "myApp" --role contributor `
        --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} `
        --sdk-auth
    
  6. Kontrollera det resulterande JSON-objektet. Du använder JSON-objektet för att skapa din hemlighet på din GitHub-lagringsplats som innehåller din åtgärd. JSON-objektet bör ha följande attribut:

    {
      "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>"
    }
    

Lägga till tjänstens huvudnamn på lagringsplatsen

Du kan använda GitHub-hemligheter för att kryptera känslig information som ska användas i dina åtgärder. Du skapar en hemlighet som ska innehålla ditt SPN så att åtgärden kan logga in på din Azure Stack Hub-instans.

Varning

GitHub rekommenderar att du inte använder lokalt installerade löpare med offentliga lagringsplatser för din offentliga lagringsplats kan köra farlig kod på din egen värdbaserade löpardator genom att skapa en pull-begäran som kör koden i ett arbetsflöde. Mer information finns i "Om lokalt installerade löpare".

  1. Öppna eller skapa en GitHub-lagringsplats. Om du behöver hjälp med att skapa en lagringsplats i GitHub kan du hitta instruktioner i GitHub-dokumenten.
  2. Ange din lagringsplats till privat.
    1. Välj Inställningar>Ändra synlighet för lagringsplats.
    2. Välj Gör privat.
    3. Ange namnet på lagringsplatsen.
    4. Välj Jag förstår, ändra lagringsplatsens synlighet.
  3. Välj inställningar.
  4. Välj Hemligheter.
  5. Välj Ny lagringsplatshemlighet. Lägg till din GitHub Actions hemlighet
  6. Namnge din hemlighet AZURE_CREDENTIALS.
  7. Klistra in JSON-objektet som representerar ditt SPN.
  8. Välj Add secret (Lägg till hemlighet).

Skapa din virtuella dator och installera förutsättningar

  1. Skapa en egen värdbaserad löpare.

    De här anvisningarna skapar en löpare som en virtuell Windows-dator i Azure. Om du behöver ansluta till din Azure Stack Hub som finns i ett datacenter kan du behöva en VPN-anslutning. Du hittar anvisningar om hur du aktiverar anslutningen i avsnittet Installera Azure Stack Hub Tools på din egen värdbaserade löpare som kan kräva en VPN-anslutning.

  2. Använd en fjärranslutning för att ansluta till Din Windows 2016-server med hjälp av serverns IP-adress, användarnamn och lösenord som du definierade när du skapade datorn.

  3. Installera Chocolatey. Chocolatey är en pakethanterare för Windows som du kan använda för att installera och hantera beroenden från kommandoraden. Från en upphöjd PowerShell-prompt skriver du:

    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'))
    
  4. Installera PowerShell Core. Från en upphöjd PowerShell-prompt skriver du:

    choco install powershell-core
    
  5. Installera Azure CLI. Från en upphöjd PowerShell-prompt skriver du:

    choco install azure-cli
    
  6. Installera Azure Stack Hub PowerShell. Från en upphöjd PowerShell-prompt skriver du:

    [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
    

    Mer information om hur du använder Azure Stack Hub Az-moduler finns i Installera PowerShell Az-modulen för Azure Stack Hub.

  7. Starta om datorn. Från en upphöjd PowerShell-prompt skriver du:

    shutdown /r
    
  8. Lägg till datorn som en lokalt installerad löpare på din GitHub-lagringsplats. Du hittar instruktioner om hur du lägger till en lokalt installerad löpare i GitHub-dokumenten. Mer information finns i Lägga till lokalt installerade löpare.

    Runner lyssnar

  9. När du är klar kontrollerar du att tjänsten körs och lyssnar på din tjänst. Dubbelkolla genom att köra /run.cmd från löparens katalog.

Valfritt: Installera Azure Stack Hub Tools på din egen värdbaserade löpare

Anvisningarna i den här artikeln kräver inte åtkomst till Azure Stack Hub Tools, men när du utvecklar ditt eget arbetsflöde kan du behöva använda verktygen. Följande instruktioner kan hjälpa dig att installera verktygen på din Egen värdbaserade Windows-löpare. Mer information om Azure Stack Hub Tools finns i Ladda ned Azure Stack Hub Tools från GitHub. Dessa instruktioner förutsätter att du har installerat pakethanteraren Chocolatey.

  1. Installera Git.

    choco install git
    
  2. Från en upphöjd PowerShell-prompt skriver du:

    # 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
    
  3. Om du behöver din löpare för att ansluta till din Azure Stack Hub-instans kan du använda PowerShell. Du hittar anvisningarna i artikeln Anslut till Azure Stack Hub med PowerShell.

Skapa en lokalt installerad löpare

Du kan konfigurera en lokalt installerad löpare i GitHub Docs. En lokalt installerad löpare kan köras på alla datorer som kan ansluta till GitHub. Du kan välja att använda en lokalt installerad löpare om du har en automatiseringsuppgift i arbetsflödet som kräver omfattande beroenden, specifika licensieringskrav, till exempel en USB-dongel för en programvarulicens eller andra dator- eller programvaruspecifika behov. Datorn kan vara en fysisk dator, en virtuell dator eller en container. Du kan placera löparen i ditt datacenter eller i molnet.

I den här artikeln ska du använda en virtuell Windows-dator i Azure som ska konfigureras med Azure Stack Hub-specifika PowerShell-krav.

Anvisningar om hur du konfigurerar, konfigurerar och ansluter din egen värdbaserade löpare till din lagringsplats finns i GitHub Docs, "Om lokalt installerade löpare".

Lokalt installerad löpare ansluten

Anteckna din egen värdbaserade löpares namn och taggar. Arbetsflödet i den här artikeln anropar det med taggen self-hosted.

Lägga till arbetsflödet på din lagringsplats

Skapa ett nytt arbetsflöde med yaml i det här avsnittet för att skapa arbetsflödet.

  1. Öppna din GitHub-lagringsplats.

  2. Välj Åtgärder.

  3. Skapa ett nytt arbetsflöde.

    • Om det här är ditt första arbetsflöde väljer du konfigurera ett arbetsflöde själv under Välj en arbetsflödesmall.
    • Om du har befintliga arbetsflöden väljer du Nytt arbetsflöde>Konfigurera ett arbetsflöde själv.
  4. I sökvägen namnger du filen workflow.yml.

  5. Kopiera och klistra in arbetsflödet 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
    
  6. Välj Start commit (Starta incheckning).

  7. Lägg till incheckningsrubriken och valfri information och välj sedan Checka in ny fil.

När åtgärden körs kontrollerar du att den har körts korrekt.

  1. Öppna din GitHub-lagringsplats. Du kan utlösa arbetsflödet genom att push-överföra till lagringsplatsen.

  2. Välj Åtgärder.

  3. Välj namnet på incheckningen under Alla arbetsflöden.

    Granska incheckningssammanfattning

  4. Välj namnet på jobbet azurestack-test.

    Granska incheckningsinformation

  5. Expandera avsnitten för att granska returvärdena för dina PowerShell- och CLI-kommandon.

Anteckningar om arbetsflödesfilen och åtgärden:

  • Arbetsflödet innehåller ett enda jobb med namnet azurestack-test.
  • En push-händelse utlöser arbetsflödet.
  • Åtgärden använder en lokalt installerad löpare som har konfigurerats på lagringsplatsen och anropas av löparens etikett i arbetsflödet med raden : runs on: self-hosted.
  • Arbetsflödet innehåller tre åtgärder.
  • Den första åtgärden anropar azure-inloggningsåtgärden för att logga in med PowerShell Med GitHub Actions för Azure kan du skapa arbetsflöden som du kan konfigurera på din lagringsplats för att skapa, testa, paketera, släppa och distribuera till Azure. Den här åtgärden använder dina Azure Stack SPN-autentiseringsuppgifter för att ansluta och öppna en session till din Azure Stack Hub-miljö. Du hittar mer information om hur du använder åtgärden i GitHub, Azure Login Action.
  • Den andra åtgärden använder Azure PowerShell. Åtgärden använder Az PowerShell-modulerna och fungerar med både Government- och Azure Stack Hub-moln. När du har kört det här arbetsflödet granskar du jobbet för att verifiera att skriptet har samlat in resursgrupperna i din Azure Stack Hub-miljö. Mer information finns i Azure PowerShell åtgärd
  • Den tredje åtgärden använder Azure CLI för att logga in och ansluta till din Azure Stack Hub för att samla in resursgrupper. Mer information finns i Azure CLI-åtgärd.
  • Mer information om hur du arbetar med GitHub Actions och lokalt installerad löpare finns i GitHub Actions dokumentation.

Nästa steg