Bagikan melalui


Menggunakan tindakan masuk Azure dengan Azure CLI dan PowerShell on Azure Stack Hub

Anda dapat menyiapkan Tindakan GitHub untuk masuk ke instans Azure Stack Hub, menjalankan PowerShell, lalu menjalankan skrip Azure CLI. Anda dapat menggunakan ini sebagai dasar alur kerja integrasi berkelanjutan, penyebaran berkelanjutan (CI/CD) untuk solusi Anda dengan Azure Stack Hub. Dengan alur kerja ini, Anda dapat mengotomatiskan pembangunan, pengujian, dan penyebaran solusi sehingga Anda dapat fokus menulis kode. Misalnya dengan menambahkan beberapa tindakan lain, Anda mungkin menggunakan alur kerja ini bersama dengan template Azure Resource Manager untuk memprovisikan mesin virtual, memvalidasi repositori aplikasi, lalu menyebarkan aplikasi ke mesin virtual tersebut setiap kali Anda bergabung ke cabang tertentu di GitHub. Untuk sekarang, artikel ini akan membantu Anda mengetahui Tindakan GitHub dan Azure Stack Hub.

Tindakan GitHub adalah alur kerja yang terdiri dari tindakan yang memungkinkan otomatisasi tepat di dalam repositori kode Anda. Anda dapat memicu alur kerja dengan peristiwa di proses pengembangan GitHub. Anda dapat menjalankan tugas otomatisasi Azure DevOps umum seperti pengujian, penyebaran, dan integrasi berkelanjutan.

Untuk menggunakan Tindakan GitHub dengan Azure Stack Hub, Anda harus menggunakan perwakilan layanan (SPN) dengan persyaratan khusus. Pada artikel ini, Anda akan membuat runner yang dihosting sendiri. GitHub memungkinkan Anda menggunakan mesin apa pun yang dapat dijangkau oleh GitHub dalam Tindakan GitHub Anda. Anda dapat membuat mesin virtual (VM) sebagai runner Anda di Azure, di Azure Stack Hub, atau di tempat lain.

Contoh alur kerja ini meliputi:

  • Petunjuk tentang membuat dan memvalidasi SPN Anda.
  • Mengonfigurasi mesin Windows Server 2016 Core sebagai runner Tindakan GitHub yang dihosting sendiri untuk bekerja dengan Azure Stack Hub.
  • Alur kerja yang menggunakan:
    • Tindakan Masuk Azure
    • Tindakan skrip PowerShell

Tindakan GitHub Azure Stack Hub

Diagram berikut menunjukkan lingkungan yang berbeda dan hubungan mereka.

Tindakan Github Azure Stack Hub Bagian-bagian dari menggunakan runner yang dihost sendiri:

  • Tindakan GitHub yang dihosting di GitHub
  • Runner yang dihosting sendiri dihosting di Azure
  • Azure Stack Hub

Batasan penggunaan Tindakan GitHub dengan Azure Stack Hub adalah proses tersebut memerlukan penggunaan Azure Stack Hub yang tersambung ke web. Alur kerja ini dipicu dalam repositori GitHub. Anda dapat menggunakan ID Microsoft Entra atau Layanan Federasi Direktori Aktif (AD FS) sebagai IdP Anda.

Meskipun ini di luar cakupan artikel ini, runner yang dihosting sendiri juga dapat menggunakan jaringan privat maya untuk tersambung ke Azure Stack Hub Anda di balik firewall.

Mendapatkan perwakilan layanan

SPN menyediakan info masuk berbasis peran sehingga proses di luar Azure dapat tersambung ke dan berinteraksi dengan sumber daya. Anda akan memerlukan SPN dengan akses kontributor dan atribut yang ditentukan dalam petunjuk ini untuk digunakan dengan Tindakan GitHub Anda.

Sebagai pengguna Azure Stack Hub, Anda tidak memiliki izin untuk membuat SPN. Anda harus meminta perwakilan ini dari operator cloud Anda. Petunjuk disediakan di sini sehingga Anda dapat membuat SPN jika merupakan operator cloud, atau Anda dapat memvalidasi SPN jika merupakan pengembang yang menggunakan SPN dalam alur kerja Anda yang disediakan oleh operator cloud.

Operator cloud harus membuat SPN menggunakan Azure CLI.

Cuplikan kode berikut ditulis untuk komputer Windows menggunakan perintah PowerShell dengan Azure CLI. Jika Anda menggunakan CLI di komputer Linux dan bash, hapus ekstensi baris atau ganti ekstensi dengan \.

  1. Siapkan nilai parameter berikut yang digunakan untuk membuat SPN:

    Parameter Contoh Deskripsi
    endpoint-resource-manager "https://management.orlando.azurestack.corp.microsoft.com" Titik akhir pengelolaan sumber daya.
    suffix-storage-endpoint "orlando.azurestack.corp.microsoft.com" Akhiran titik akhir untuk akun penyimpanan.
    suffix-keyvault-dns ".vault.orlando.azurestack.corp.microsoft.com" Akhiran dns layanan Key Vault.
    endpoint-active-directory-graph-resource-id "https://graph.windows.net/" ID sumber daya Active Directory.
    endpoint-sql-management https://notsupported Titik akhir pengelolaan server sql. Atur titik akhir ini ke https://notsupported
    profil 2020-09-01-hybrid Profil untuk digunakan untuk cloud ini.
  2. Buka alat baris perintah Anda seperti PowerShell Windows atau Bash dan masuk. Gunakan perintah berikut:

    az login
    
  3. Gunakan perintah register untuk lingkungan baru atau perintah update jika Anda menggunakan lingkungan yang sudah ada. Gunakan perintah berikut.

    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. Dapatkan ID langganan dan grup sumber daya yang ingin Anda gunakan untuk SPN.

  5. Buat SPN dengan perintah berikut dengan ID langganan dan grup sumber daya:

    az ad sp create-for-rbac --name "myApp" --role contributor `
        --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} `
        --sdk-auth
    
  6. Periksa objek JSON yang dihasilkan. Anda harus menggunakan objek JSON untuk membuat rahasia di repositori GitHub yang berisi tindakan Anda. Objek JSON harus memiliki atribut berikut:

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

Menambahkan perwakilan layanan ke repositori

Anda dapat menggunakan rahasia GitHub untuk mengenkripsi informasi sensitif untuk digunakan pada tindakan Anda. Anda akan membuat rahasia untuk berisi SPN Anda sehingga tindakan dapat masuk ke instans Azure Stack Hub Anda.

Peringatan

GitHub merekomendasikan agar Anda tidak menggunakan runner yang dihosting sendiri dengan repositori publik, Fork dari repositori publik Anda mungkin menjalankan kode berbahaya pada mesin runner yang dihosting sendiri dengan membuat permintaan pull yang menjalankan kode tersebut dalam alur kerja. Untuk informasi selengkapnya, lihat "Tentang runner yang dihosting sendiri".

  1. Buka atau buat repositori GitHub. Jika Anda memerlukan panduan untuk membuat repositori di GitHub, Anda dapat menemukan petunjuk di dokumen GitHub.
  2. Atur repositori Anda ke privat.
    1. Pilih Pengaturan>Ubah visibilitas repositori.
    2. Pilih Jadikan privat.
    3. Ketik nama repositori Anda.
    4. Pilih Saya mengerti, ubah visibilitas repositori.
  3. Pilih Pengaturan.
  4. Pilih Rahasia.
  5. Pilih Rahasia repositori baru. Tambahkan rahasia GitHub Actions Anda
  6. Beri nama rahasia AZURE_CREDENTIALS Anda.
  7. Tempelkan objek JSON yang mewakili SPN Anda.
  8. Pilih Tambahkan rahasia.

Membuat mesin virtual Anda dan menginstal prasyarat

  1. Buat runner yang dihosting sendiri.

    Petunjuk ini membuat runner sebagai mesin virtual Windows di Azure. Jika Anda perlu tersambung ke Azure Stack Hub yang dihosting di pusat data, Anda mungkin memerlukan koneksi VPN. Anda dapat menemukan petunjuk tentang mengaktifkan koneksi di bagian Menginstal Azure Stack Hub Tools pada runner yang dihosting sendiri yang mungkin memerlukan koneksi VPN.

  2. Gunakan koneksi jarak jauh untuk tersambung ke server Windows 2016 Anda menggunakan alamat IP server, nama pengguna, dan kata sandi yang Anda tentukan saat membuat mesin.

  3. Instal Chocolatey. Chocolatey adalah pengelola paket untuk Windows yang dapat Anda gunakan untuk menginstal dan mengelola dependensi dari baris perintah. Pada perintah PowerShell yang lebih tinggi, ketik:

    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. Instal PowerShell Core. Pada perintah PowerShell yang lebih tinggi, ketik:

    choco install powershell-core
    
  5. Instal Azure CLI. Pada perintah PowerShell yang lebih tinggi, ketik:

    choco install azure-cli
    
  6. Instal PowerShell Azure Stack Hub. Pada perintah PowerShell yang lebih tinggi, ketik:

    [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
    

    Untuk informasi selengkapnya tentang menggunakan modul Az Azure Stack Hub, lihat Menginstal modul Az PowerShell untuk Azure Stack Hub.

  7. Hidupkan ulang mesin Anda. Pada perintah PowerShell yang lebih tinggi, ketik:

    shutdown /r
    
  8. Tambahkan mesin sebagai runner yang dihosting sendiri ke repositori GitHub Anda. Anda dapat menemukan petunjuk tentang menambahkan runner yang dihosting sendiri di dokumen GitHub. Untuk informasi selengkapnya, lihat Menambahkan runner yang dihosting sendiri.

    Runner mendengarkan

  9. Setelah selesai, verifikasi bahwa layanan berjalan dan mendengarkan layanan Anda. Periksa kembali dengan menjalankan /run.cmd dari direktori runner.

Opsional: Instal Azure Stack Hub Tools pada runner yang dihosting sendiri

Petunjuk dalam artikel ini tidak memerlukan akses ke Azure Stack Hub Tools, tetapi saat Anda mengembangkan alur kerja sendiri, Anda mungkin perlu menggunakan alat tersebut. Petunjuk berikut dapat membantu Anda menginstal alat pada runner yang dihosting sendiri Windows. Untuk informasi selengkapnya tentang Azure Stack Hub Tools, lihat Mengunduh Azure Stack Hub Tools dari GitHub. Petunjuk ini menganggap Anda telah menginstal pengelola paket Chocolatey.

  1. Pasang Git.

    choco install git
    
  2. Pada perintah PowerShell yang lebih tinggi, ketik:

    # 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. Jika perlu agar runner tersambung ke instans Azure Stack Hub, Anda dapat menggunakan PowerShell. Anda dapat menemukan petunjuk dalam artikel Menyambungkan ke Azure Stack Hub dengan PowerShell.

Membuat runner yang dihosting sendiri

Anda dapat menyiapkan runner yang dihosting sendiri di Dokumen GitHub. Runner yang dihosting sendiri dapat berjalan di mesin apa pun yang dapat tersambung ke GitHub. Anda dapat memilih untuk menggunakan runner yang dihosting sendiri jika memiliki tugas otomatisasi dalam alur kerja Anda yang memerlukan dependensi ekstensif, persyaratan lisensi khusus seperti dongle USB untuk lisensi perangkat lunak, atau kebutuhan khusus mesin atau perangkat lunak lain. Mesin Anda bisa menjadi mesin fisik, mesin virtual, atau kontainer. Anda dapat menempatkan runner di pusat data atau di cloud.

Pada artikel ini, Anda akan menggunakan mesin virtual Windows yang dihosting di Azure yang akan dikonfigurasi dengan persyaratan PowerShell khusus Azure Stack Hub.

Untuk petunjuk tentang menyiapkan, mengonfigurasi, dan menyambungkan runner yang dihosting sendiri ke repositori Anda, lihat Dokumen GitHub, "Tentang runner yang dihosting sendiri".

Runner yang dihost sendiri tersambung

Catat nama dan tag runner yang dihosting sendiri. Alur kerja dalam artikel ini akan memanggilnya menggunakan tag self-hosted.

Menambahkan alur kerja ke repositori Anda

Buat alur kerja baru menggunakan yaml di bagian ini untuk membuat alur kerja Anda.

  1. Buka repositori GitHub Anda.

  2. Pilih Tindakan.

  3. Buat alur kerja baru.

    • Jika ini adalah alur kerja pertama Anda, pilih Siapkan alur kerja sendiri di bawah Pilih templat alur kerja.
    • Jika Anda memiliki alur kerja yang sudah ada, pilih Alur kerja baru>Siapkan alur kerja sendiri.
  4. Di jalur, beri nama file workflow.yml.

  5. Salin dan tempel yml alur kerja.

    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. Pilih Mulai terapkan.

  7. Tambahkan judul penerapan dan detail opsional, kemudian pilih Penerapan file baru.

Saat tindakan berjalan, verifikasi apakah tindakan telah berhasil berjalan.

  1. Buka repositori GitHub Anda. Anda dapat memicu alur kerja dengan mendorong ke repositori.

  2. Pilih Tindakan.

  3. Pilih nama penerapan di bawah Semua alur kerja.

    Meninjau ringkasan penerapan

  4. Pilih nama pekerjaan, azurestack-test.

    Meninjau detail penerapan

  5. Perluas bagian untuk meninjau nilai yang ditampilkan untuk perintah PowerShell dan CLI Anda.

Catatan tentang file alur kerja dan tindakan:

  • Alur kerja berisi satu pekerjaan bernama azurestack-test.
  • Peristiwa pendorongan memicu alur kerja.
  • Tindakan ini menggunakan runner yang dihosting sendiri dan telah disiapkan di repositori, serta dipanggil oleh label runner dalam alur kerja dengan baris: runs on: self-hosted.
  • Alur kerja berisi tiga tindakan.
  • Tindakan pertama memanggil tindakan Masuk Azure untuk masuk dengan PowerShell Dengan Tindakan GitHub untuk Azure, Anda dapat membuat alur kerja yang dapat Anda siapkan di repositori untuk membangun, menguji, mengemas, merilis, dan menyebarkan ke Azure. Tindakan ini menggunakan info masuk SPN Azure Stack Anda untuk menyambungkan dan membuka sesi ke lingkungan Azure Stack Hub Anda. Anda dapat menemukan informasi selengkapnya tentang menggunakan tindakan di GitHub, Tindakan Masuk Azure.
  • Tindakan kedua menggunakan Azure PowerShell. Tindakan ini menggunakan modul PowerShell Az dan bekerja dengan cloud Government dan Azure Stack Hub. Setelah Anda menjalankan alur kerja ini, tinjau pekerjaan untuk memvalidasi bahwa skrip telah mengumpulkan grup sumber daya di lingkungan Azure Stack Hub Anda. Untuk informasi selengkapnya, lihat Tindakan Azure PowerShell
  • Tindakan ketiga, menggunakan Azure CLI untuk masuk dan tersambung ke Azure Stack Hub Anda untuk mengumpulkan grup sumber daya. Untuk informasi selengkapnya, lihat Tindakan Azure CLI.
  • Untuk informasi selengkapnya tentang bekerja dengan Tindakan GitHub dan runner yang dihosting sendiri, lihat dokumentasi Tindakan GitHub.

Langkah berikutnya