Udostępnij za pośrednictwem


Korzystanie z akcji logowania platformy Azure za pomocą interfejsu wiersza polecenia platformy Azure i programu PowerShell w usłudze Azure Stack Hub

Możesz skonfigurować GitHub Actions, aby zalogować się do wystąpienia usługi Azure Stack Hub, uruchomić program PowerShell, a następnie uruchomić skrypt interfejsu wiersza polecenia platformy Azure. Można go użyć jako podstawy przepływu pracy ciągłej integracji, ciągłego wdrażania (CI/CD) dla rozwiązania za pomocą usługi Azure Stack Hub. Dzięki temu przepływowi pracy można zautomatyzować tworzenie, testowanie i wdrażanie rozwiązania, aby skoncentrować się na pisaniu kodu. Na przykład przez dodanie innych akcji można użyć tego przepływu pracy wraz z szablonem usługi Azure Resource Manager w celu aprowizowania maszyny wirtualnej, zweryfikowania repozytorium aplikacji, a następnie wdrożenia aplikacji na tej maszynie wirtualnej za każdym razem, gdy scalasz określoną gałąź w usłudze GitHub. Na razie ten artykuł pomoże Ci zorientować się na GitHub Actions i usługę Azure Stack Hub.

GitHub Actions to przepływy pracy składające się z akcji, które umożliwiają automatyzację bezpośrednio wewnątrz repozytorium kodu. Przepływy pracy można wyzwalać przy użyciu zdarzeń w procesie programowania w usłudze GitHub. Typowe zadania automatyzacji metodyki DevOps, takie jak testowanie, wdrażanie i ciągła integracja.

Aby użyć GitHub Actions z usługą Azure Stack Hub, musisz użyć jednostki usługi (SPN) z określonymi wymaganiami. W tym artykule utworzysz własny moduł uruchamiający. Usługa GitHub umożliwia korzystanie z dowolnej maszyny, którą można uzyskać w usłudze GitHub w GitHub Actions. Maszynę wirtualną możesz utworzyć jako moduł uruchamiający na platformie Azure, w usłudze Azure Stack Hub lub w innym miejscu.

Ten przykładowy przepływ pracy obejmuje następujące elementy:

  • Instrukcje dotyczące tworzenia i weryfikowania nazwy SPN.
  • Konfigurowanie podstawowej maszyny z systemem Windows 2016 Server jako GitHub Actions własnego modułu uruchamiającego do pracy z usługą Azure Stack Hub.
  • Przepływ pracy korzystający z:
    • Akcja Logowania platformy Azure
    • Akcja skryptu programu PowerShell

GitHub Actions usługi Azure Stack Hub

Na poniższym diagramie przedstawiono różne środowiska i ich relacje.

Akcja github usługi Azure Stack Hub Części korzystania z własnego modułu uruchamiającego:

  • GitHub Actions hostowane w usłudze GitHub
  • Samodzielny moduł uruchamiający hostowany na platformie Azure
  • Azure Stack Hub

Ograniczenie używania GitHub Actions z usługą Azure Stack Hub polega na tym, że proces wymaga użycia usługi Azure Stack Hub połączonej z internetem. Przepływ pracy jest wyzwalany w repozytorium GitHub. Możesz użyć zarówno identyfikatora Microsoft Entra, jak i usług Federacyjnych Active Directory (AD FS) jako dostawcy tożsamości.

Mimo że jest to poza zakresem tego artykułu, twój samodzielny moduł uruchamiający może również używać wirtualnej sieci prywatnej do nawiązywania połączenia z usługą Azure Stack Hub za zaporą.

Pobieranie jednostki usługi

Nazwa SPN udostępnia poświadczenia oparte na rolach, dzięki czemu procesy spoza platformy Azure mogą łączyć się z zasobami i korzystać z niej. Do użycia z GitHub Actions będzie potrzebna nazwa SPN z dostępem współautora oraz atrybuty określone w tych instrukcjach.

Jako użytkownik usługi Azure Stack Hub nie masz uprawnień do tworzenia nazwy SPN. Musisz zażądać tej zasady od operatora chmury. Instrukcje są podane tutaj, aby można było utworzyć nazwę SPN, jeśli jesteś operatorem chmury lub możesz zweryfikować nazwę SPN, jeśli jesteś deweloperem przy użyciu nazwy SPN w przepływie pracy dostarczonym przez operatora chmury.

Operator chmury musi utworzyć nazwę SPN przy użyciu interfejsu wiersza polecenia platformy Azure.

Poniższe fragmenty kodu są zapisywane dla maszyny z systemem Windows przy użyciu wiersza polecenia programu PowerShell z interfejsem wiersza polecenia platformy Azure. Jeśli używasz interfejsu wiersza polecenia na maszynie z systemem Linux i powłoki bash, usuń rozszerzenie wiersza lub zastąp je ciągiem \.

  1. Przygotuj wartości następujących parametrów używanych do utworzenia nazwy SPN:

    Parametr Przykład Opis
    endpoint-resource-manager "https://management.orlando.azurestack.corp.microsoft.com" Punkt końcowy zarządzania zasobami.
    sufiks-storage-endpoint "orlando.azurestack.corp.microsoft.com" Sufiks punktu końcowego dla kont magazynu.
    sufiks-keyvault-dns ".vault.orlando.azurestack.corp.microsoft.com" Sufiks dns usługi Key Vault.
    endpoint-active-directory-graph-resource-id "https://graph.windows.net/" Identyfikator zasobu usługi Active Directory.
    endpoint-sql-management https://notsupported Punkt końcowy zarządzania serwerem SQL. Ustaw tę wartość na https://notsupported
    profil 2020-09-01-hybrid Profil do użycia w tej chmurze.
  2. Otwórz narzędzie wiersza polecenia, takie jak Windows PowerShell lub Bash i zaloguj się. Użyj następującego polecenia:

    az login
    
  3. register Użyj polecenia dla nowego środowiska lub update polecenia, jeśli używasz istniejącego środowiska. Użyj poniższego polecenia.

    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. Pobierz identyfikator subskrypcji i grupę zasobów, której chcesz użyć dla nazwy SPN.

  5. Utwórz nazwę SPN przy użyciu następującego polecenia z identyfikatorem subskrypcji i grupą zasobów:

    az ad sp create-for-rbac --name "myApp" --role contributor `
        --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} `
        --sdk-auth
    
  6. Sprawdź wynikowy obiekt JSON. Użyjesz obiektu JSON do utworzenia wpisu tajnego w repozytorium GitHub zawierającego akcję. Obiekt JSON powinien mieć następujące atrybuty:

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

Dodawanie jednostki usługi do repozytorium

Wpisy tajne usługi GitHub umożliwiają szyfrowanie poufnych informacji do użycia w akcjach. Utworzysz wpis tajny zawierający nazwę SPN, aby akcja mogła zalogować się do wystąpienia usługi Azure Stack Hub.

Ostrzeżenie

Usługa GitHub zaleca, aby nie używać własnych modułów uruchamiających z publicznymi repozytoriami Rozwidlenia repozytorium publicznego może uruchamiać niebezpieczny kod na maszynie modułu uruchamiającego własny moduł uruchamiający, tworząc żądanie ściągnięcia, które wykonuje kod w przepływie pracy. Aby uzyskać więcej informacji, zobacz "About self-hosted runners".

  1. Otwórz lub utwórz repozytorium GitHub. Jeśli potrzebujesz wskazówek dotyczących tworzenia repozytorium w usłudze GitHub, możesz znaleźć instrukcje w dokumentacji usługi GitHub.
  2. Ustaw repozytorium na prywatne.
    1. Wybierz pozycję Ustawienia>Zmień widoczność repozytorium.
    2. Wybierz pozycję Ustaw jako prywatne.
    3. Wpisz nazwę repozytorium.
    4. Wybierz pozycję Rozumiem, zmień widoczność repozytorium.
  3. Wybierz pozycję Ustawienia.
  4. Wybierz pozycję Wpisy tajne.
  5. Wybierz pozycję Nowy wpis tajny repozytorium. Dodawanie wpisu tajnego GitHub Actions
  6. Nadaj kluczowi nazwę wpisu tajnego AZURE_CREDENTIALS.
  7. Wklej obiekt JSON reprezentujący nazwę SPN.
  8. Wybierz przycisk Add secret (Dodaj wpis tajny).

Tworzenie maszyny wirtualnej i instalowanie wymagań wstępnych

  1. Utwórz własny moduł uruchamiający.

    Te instrukcje tworzą moduł uruchamiający jako maszynę wirtualną z systemem Windows na platformie Azure. Jeśli musisz nawiązać połączenie z usługą Azure Stack Hub hostowaną w centrum danych, może być wymagane połączenie sieci VPN. Instrukcje dotyczące włączania połączenia można znaleźć w sekcji Instalowanie narzędzi usługi Azure Stack Hub na własnym module uruchamiającym , który może wymagać połączenia sieci VPN.

  2. Użyj połączenia zdalnego, aby nawiązać połączenie z serwerem z systemem Windows 2016 przy użyciu adresu IP serwera, nazwy użytkownika i hasła zdefiniowanego podczas tworzenia maszyny.

  3. Zainstaluj aplikację Chocolatey. Chocolatey to menedżer pakietów dla systemu Windows, którego można użyć do instalowania zależności i zarządzania nimi z poziomu wiersza polecenia. W wierszu polecenia programu PowerShell z podwyższonym poziomem uprawnień wpisz:

    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. Zainstaluj program PowerShell Core. W wierszu polecenia programu PowerShell z podwyższonym poziomem uprawnień wpisz:

    choco install powershell-core
    
  5. Zainstaluj interfejs wiersza polecenia platformy Azure. W wierszu polecenia programu PowerShell z podwyższonym poziomem uprawnień wpisz:

    choco install azure-cli
    
  6. Zainstaluj program PowerShell usługi Azure Stack Hub. W wierszu polecenia programu PowerShell z podwyższonym poziomem uprawnień wpisz:

    [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
    

    Aby uzyskać więcej informacji na temat korzystania z modułów Az usługi Azure Stack Hub, zobacz Instalowanie modułu Az programu PowerShell dla usługi Azure Stack Hub.

  7. Uruchom ponownie maszynę. W wierszu polecenia programu PowerShell z podwyższonym poziomem uprawnień wpisz:

    shutdown /r
    
  8. Dodaj maszynę jako własny moduł uruchamiający do repozytorium GitHub. Instrukcje dotyczące dodawania własnego modułu uruchamiającego można znaleźć w dokumentacji usługi GitHub. Aby uzyskać więcej informacji, zobacz Dodawanie własnych modułów uruchamiaczy.

    Moduł uruchamiający nasłuchuje

  9. Po zakończeniu sprawdź, czy usługa jest uruchomiona i nasłuchuje twojej usługi. Sprawdź dokładnie, uruchamiając polecenie /run.cmd z katalogu modułu uruchamiającego.

Opcjonalnie: Instalowanie narzędzi usługi Azure Stack Hub w module uruchamiającym własne moduły uruchamiającego

Instrukcje zawarte w tym artykule nie wymagają dostępu do narzędzi usługi Azure Stack Hub, ale podczas opracowywania własnego przepływu pracy może być konieczne użycie narzędzi. Poniższe instrukcje mogą pomóc w zainstalowaniu narzędzi we własnym module uruchamiającym testy systemu Windows. Aby uzyskać więcej informacji na temat narzędzi usługi Azure Stack Hub, zobacz Pobieranie narzędzi usługi Azure Stack Hub z usługi GitHub. W tych instrukcjach założono, że zainstalowano menedżera pakietów Chocolatey.

  1. Zainstaluj usługę Git.

    choco install git
    
  2. W wierszu polecenia programu PowerShell z podwyższonym poziomem uprawnień wpisz:

    # 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. Jeśli potrzebujesz modułu uruchamiającego połączenie z wystąpieniem usługi Azure Stack Hub, możesz użyć programu PowerShell. Instrukcje można znaleźć w artykule Connect to Azure Stack Hub with PowerShell (Nawiązywanie połączenia z usługą Azure Stack Hub przy użyciu programu PowerShell).

Tworzenie własnego modułu uruchamiającego

Możesz skonfigurować własny moduł uruchamiający w witrynie GitHub Docs. Własny moduł uruchamiający może działać na dowolnej maszynie, która może łączyć się z usługą GitHub. Możesz użyć własnego modułu uruchamiającego, jeśli masz zadanie automatyzacji w przepływie pracy, które wymaga rozbudowanych zależności, określonych wymagań licencyjnych, takich jak przełącznik USB dla licencji na oprogramowanie lub inne potrzeby związane z oprogramowaniem. Maszyna może być maszyną fizyczną, maszyną wirtualną lub kontenerem. Moduł uruchamiający można umieścić w centrum danych lub w chmurze.

W tym artykule użyjesz maszyny wirtualnej z systemem Windows hostowanej na platformie Azure, która zostanie skonfigurowana z określonymi wymaganiami programu PowerShell dla usługi Azure Stack Hub.

Aby uzyskać instrukcje dotyczące konfigurowania, konfigurowania i łączenia własnego modułu uruchamiającego moduł uruchamiający z repozytorium, zobacz witrynę GitHub Docs , "About self-hosted runners" (Informacje o samodzielnie hostowanych modułach uruchamiających).

Połączony własny moduł uruchamiający

Zanotuj nazwę i tagi własnego modułu uruchamiającego. Przepływ pracy w tym artykule wywoła go przy użyciu tagu self-hosted.

Dodawanie przepływu pracy do repozytorium

Utwórz nowy przepływ pracy przy użyciu pliku yaml w tej sekcji, aby utworzyć przepływ pracy.

  1. Otwórz repozytorium GitHub.

  2. Wybierz pozycję Akcje.

  3. Utwórz nowy przepływ pracy.

    • Jeśli jest to pierwszy przepływ pracy, wybierz opcję Skonfiguruj przepływ pracy samodzielnie w obszarze Wybierz szablon przepływu pracy.
    • Jeśli masz istniejące przepływy pracy, wybierz pozycję Nowy przepływ pracySkonfiguruj przepływ pracy> samodzielnie.
  4. W ścieżce nadaj plikowi workflow.ymlnazwę .

  5. Skopiuj i wklej plik yml przepływu pracy.

    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. Wybierz pozycję Start commit (Rozpocznij zatwierdzanie).

  7. Dodaj tytuł zatwierdzenia i opcjonalne szczegóły, a następnie wybierz pozycję Zatwierdź nowy plik.

Po uruchomieniu akcji sprawdź, czy została pomyślnie uruchomiona.

  1. Otwórz repozytorium GitHub. Przepływ pracy można wyzwolić, wypychając go do repozytorium.

  2. Wybierz pozycję Akcje.

  3. Wybierz nazwę zatwierdzenia w obszarze Wszystkie przepływy pracy.

    Przeglądanie podsumowania zatwierdzenia

  4. Wybierz nazwę zadania azurestack-test.

    Przeglądanie szczegółów zatwierdzenia

  5. Rozwiń sekcje, aby przejrzeć wartości zwracane dla poleceń programu PowerShell i interfejsu wiersza polecenia.

Uwagi dotyczące pliku przepływu pracy i akcji:

  • Przepływ pracy zawiera jedno zadanie o nazwie azurestack-test.
  • Zdarzenie wypychania wyzwala przepływ pracy.
  • Akcja korzysta z własnego modułu uruchamiającego, który został skonfigurowany w repozytorium i jest wywoływany przez etykietę modułu uruchamiającego w przepływie pracy z wierszem: runs on: self-hosted.
  • Przepływ pracy zawiera trzy akcje.
  • Pierwsza akcja wywołuje akcję Logowania platformy Azure, aby zalogować się przy użyciu programu PowerShell z GitHub Actions dla platformy Azure, można tworzyć przepływy pracy, które można skonfigurować w repozytorium w celu kompilowania, testowania, tworzenia pakietów, wydawania i wdrażania na platformie Azure. Ta akcja używa poświadczeń spN usługi Azure Stack do nawiązania połączenia i otwarcia sesji w środowisku usługi Azure Stack Hub. Więcej informacji na temat korzystania z akcji można znaleźć w temacie GitHub, Azure Login Action (Akcja logowania do platformy Azure w usłudze GitHub).
  • Druga akcja używa Azure PowerShell. Akcja korzysta z modułów Az programu PowerShell i współpracuje z chmurami government i Azure Stack Hub. Po uruchomieniu tego przepływu pracy przejrzyj zadanie, aby sprawdzić, czy skrypt zebrał grupy zasobów w środowisku usługi Azure Stack Hub. Aby uzyskać więcej informacji, zobacz Azure PowerShell Action (Akcja Azure PowerShell)
  • Trzecia akcja używa interfejsu wiersza polecenia platformy Azure do logowania się i nawiązywania połączenia z usługą Azure Stack Hub w celu zbierania grup zasobów. Aby uzyskać więcej informacji, zobacz Akcja interfejsu wiersza polecenia platformy Azure.
  • Aby uzyskać więcej informacji na temat pracy z GitHub Actions i własnym modułem uruchamiającym testy, zobacz dokumentację GitHub Actions.

Następne kroki