Aracılığıyla paylaş


Azure Stack Hub'da Azure CLI ve PowerShell ile Azure oturum açma eylemini kullanma

Azure Stack Hub örneğinizde oturum açmak, PowerShell çalıştırmak ve ardından bir Azure CLI betiği çalıştırmak için GitHub Actions ayarlayabilirsiniz. Bunu Azure Stack Hub ile çözümünüz için sürekli tümleştirme, sürekli dağıtım (CI/CD) iş akışının temeli olarak kullanabilirsiniz. Bu iş akışıyla, kod yazmaya odaklanabilmeniz için çözümünüzü derleme, test etme ve dağıtmayı otomatikleştirebilirsiniz. Örneğin, bu iş akışını bir VM sağlamak, uygulama deposunu doğrulamak ve GitHub'daki belirli bir dalla her birleştirişinizde bu VM'ye bir uygulama dağıtmak için azure Resource Manager şablonuyla birlikte kullanabilirsiniz. Şimdilik bu makale GitHub Actions ve Azure Stack Hub ile çalışmaya başlamanıza yardımcı olacaktır.

GitHub Actions kod deponuzun içinde otomasyonu etkinleştiren eylemlerden oluşan iş akışlarıdır. GitHub geliştirme sürecinizdeki olaylarla iş akışlarını tetikleyebilirsiniz. Test, dağıtım ve sürekli tümleştirme gibi yaygın DevOps otomasyon görevlerini gerçekleştirebilirsiniz.

Azure Stack Hub ile GitHub Actions kullanmak için belirli gereksinimlere sahip bir hizmet sorumlusu (SPN) kullanmanız gerekir. Bu makalede şirket içinde barındırılan bir çalıştırıcı oluşturacaksınız. GitHub, GitHub Actions GitHub tarafından erişilebilen tüm makineleri kullanmanıza olanak tanır. Azure'da, Azure Stack Hub'da veya başka bir yerde çalıştırıcınız olarak bir sanal makine (VM) oluşturabilirsiniz.

Bu örnek iş akışı şunları içerir:

  • SPN'nizi oluşturma ve doğrulama yönergeleri.
  • Windows 2016 Server çekirdek makinesini Azure Stack Hub ile çalışmak üzere şirket içinde barındırılan GitHub Actions çalıştırıcı olarak yapılandırma.
  • Aşağıdakilerin kullanıldığı bir iş akışı:
    • Azure Oturum Açma eylemi
    • PowerShell betik eylemi

Azure Stack Hub GitHub Actions

Aşağıdaki diyagramda farklı ortamlar ve bunların ilişkileri gösterilmektedir.

Azure Stack Hub Github eylemi Şirket içinde barındırılan çalıştırıcıyı kullanmanın bölümleri:

  • GitHub'da barındırılan GitHub Actions
  • Azure'da barındırılan şirket içinde barındırılan çalıştırıcı
  • Azure Stack Hub

Azure Stack Hub ile GitHub Actions kullanmanın bir sınırlaması, işlemin web'e bağlı bir Azure Stack Hub'ı kullanmasını gerektirmesidir. İş akışı bir GitHub deposunda tetikleniyor. Kimlik sağlayıcınız olarak hem Microsoft Entra Kimliğini hem de Active Directory Federasyon Hizmetleri'ni (AD FS) kullanabilirsiniz.

Bu makalenin kapsamı dışında olsa da, şirket içinde barındırılan çalıştırıcınız bir güvenlik duvarının arkasındaki Azure Stack Hub'ınıza bağlanmak için bir sanal özel ağ da kullanabilir.

Hizmet sorumlusunu alma

SPN, Azure dışındaki işlemlerin kaynaklara bağlanabilmesi ve kaynaklarla etkileşim kurabilmesi için rol tabanlı kimlik bilgileri sağlar. GitHub Actions kullanmak için katkıda bulunan erişimine sahip bir SPN'ye ve bu yönergelerde belirtilen özniteliklere ihtiyacınız olacaktır.

Azure Stack Hub kullanıcısı olarak SPN oluşturma izniniz yok. Bu ilkeyi bulut operatörünüzden istemeniz gerekir. Burada, bulut operatörüyseniz SPN'yi oluşturabilmeniz veya iş akışınızda bir bulut operatörü tarafından sağlanan bir SPN kullanan bir geliştiriciyseniz SPN'yi doğrulayabileceğiniz için yönergeler sağlanmıştır.

Bulut operatörünün Azure CLI kullanarak SPN'yi oluşturması gerekir.

Aşağıdaki kod parçacıkları, Azure CLI ile PowerShell istemi kullanılarak bir Windows makinesi için yazılmıştır. CLI'yi bir Linux makinesinde kullanıyorsanız ve bash kullanıyorsanız, satır uzantısını kaldırın veya bir ile \değiştirin.

  1. SPN'yi oluşturmak için kullanılan aşağıdaki parametrelerin değerlerini hazırlayın:

    Parametre Örnek Description
    endpoint-resource-manager "https://management.orlando.azurestack.corp.microsoft.com" Kaynak yönetimi uç noktası.
    suffix-storage-endpoint "orlando.azurestack.corp.microsoft.com" Depolama hesapları için uç nokta son eki.
    suffix-keyvault-dns ".vault.orlando.azurestack.corp.microsoft.com" Key Vault hizmeti dns soneki.
    endpoint-active-directory-graph-resource-id "https://graph.windows.net/" Active Directory kaynak kimliği.
    endpoint-sql-management https://notsupported sql server yönetim uç noktası. Bunu olarak ayarlayın https://notsupported
    profil 2020-09-01-hybrid Bu bulut için kullanılacak profil.
  2. Windows PowerShell veya Bash gibi komut satırı aracınızı açın ve oturum açın. Aşağıdaki komutu kullanın:

    az login
    
  3. register Yeni bir ortam için komutunu veya update var olan bir ortamı kullanıyorsanız komutunu kullanın. Aşağıdaki komutu kullanın.

    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. SPN için kullanmak istediğiniz abonelik kimliğinizi ve kaynak grubunuzu alın.

  5. Abonelik kimliği ve kaynak grubu ile aşağıdaki komutla SPN'yi oluşturun:

    az ad sp create-for-rbac --name "myApp" --role contributor `
        --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} `
        --sdk-auth
    
  6. Elde edilen JSON nesnesini denetleyin. Eyleminizi içeren GitHub deponuzda gizli dizinizi oluşturmak için JSON nesnesini kullanacaksınız. JSON nesnesi aşağıdaki özniteliklere sahip olmalıdır:

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

Depoya hizmet sorumlusu ekleme

Eylemlerinizde kullanılacak hassas bilgileri şifrelemek için GitHub gizli dizilerini kullanabilirsiniz. Eylemin Azure Stack Hub örneğinde oturum açabilmesi için SPN'nizi içerecek bir gizli dizi oluşturacaksınız.

Uyarı

GitHub, ortak deponuzun ortak depo çatallarıyla şirket içinde barındırılan çalıştırıcıları kullanmamanızı önerir. İş akışında kodu yürüten bir çekme isteği oluşturarak şirket içinde barındırılan çalıştırıcı makinenizde tehlikeli kod çalıştırabilir. Daha fazla bilgi için bkz. "Şirket içinde barındırılan koşucular hakkında."

  1. GitHub deposunu açın veya oluşturun. GitHub'da depo oluşturma konusunda yardıma ihtiyacınız varsa GitHub belgelerinde yönergeleri bulabilirsiniz.
  2. Deponuzu özel olarak ayarlayın.
    1. Ayarlar>Depo görünürlüğünü değiştir'i seçin.
    2. Özel yap'ı seçin.
    3. Deponuzun adını yazın.
    4. Anladım'ı seçin, depo görünürlüğünü değiştirin.
  3. Ayarlar'ı seçin.
  4. Gizli Diziler'i seçin.
  5. Yeni depo gizli dizisi'ni seçin. GitHub Actions gizli dizinizi ekleme
  6. Gizli dizinize AZURE_CREDENTIALSadını verin.
  7. SPN'nizi temsil eden JSON nesnesini yapıştırın.
  8. Add secret (Gizli dizi ekle) öğesini seçin.

VM'nizi oluşturma ve önkoşulları yükleme

  1. Şirket içinde barındırılan çalıştırıcınızı oluşturun.

    Bu yönergeler, Azure'da Windows VM olarak bir çalıştırıcı oluşturur. Veri merkezinde barındırılan Azure Stack Hub'ınıza bağlanmanız gerekiyorsa VPN bağlantısına ihtiyacınız olabilir. Vpn bağlantısı gerektirebilecek şirket içinde barındırılan çalıştırıcınıza Azure Stack Hub Araçları yükleme bölümünde bağlantıyı etkinleştirme yönergelerini bulabilirsiniz.

  2. Makineyi oluştururken tanımladığınız sunucu IP adresini, kullanıcı adını ve parolayı kullanarak Windows 2016 sunucunuza bağlanmak için uzak bağlantı kullanın.

  3. Chocolatey'yi yükleyin. Chocolatey, komut satırından bağımlılıkları yüklemek ve yönetmek için kullanabileceğiniz bir Windows paket yöneticisidir. Yükseltilmiş bir PowerShell isteminden şunu yazın:

    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. PowerShell Core'u yükleyin. Yükseltilmiş bir PowerShell isteminden şunu yazın:

    choco install powershell-core
    
  5. Azure CLI'yı yükleyin. Yükseltilmiş bir PowerShell isteminden şunu yazın:

    choco install azure-cli
    
  6. Azure Stack Hub PowerShell'i yükleyin. Yükseltilmiş bir PowerShell isteminden şunu yazın:

    [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
    

    Azure Stack Hub Az modüllerini kullanma hakkında daha fazla bilgi için bkz. Azure Stack Hub için PowerShell Az modülünü yükleme.

  7. Makinenizi yeniden başlatın. Yükseltilmiş bir PowerShell isteminden şunu yazın:

    shutdown /r
    
  8. Makineyi GitHub deponuza şirket içinde barındırılan bir çalıştırıcı olarak ekleyin. GitHub belgelerinde şirket içinde barındırılan çalıştırıcı ekleme yönergelerini bulabilirsiniz. Daha fazla bilgi için bkz. Şirket içi barındırılan çalıştırıcılar ekleme.

    Koşucu dinliyor

  9. İşiniz bittiğinde, hizmetin çalıştığını ve hizmetinizi dinlediğini doğrulayın. Çalıştırıcının dizininden komutunu çalıştırarak /run.cmd çift denetim yapın.

İsteğe bağlı: Şirket içinde barındırılan çalıştırıcınıza Azure Stack Hub Araçları'nı yükleme

Bu makaledeki yönergeler Azure Stack Hub Araçları'na erişim gerektirmez, ancak kendi iş akışınızı geliştirirken araçları kullanmanız gerekebilir. Aşağıdaki yönergeler, araçları Windows şirket içi barındırılan çalıştırıcınıza yüklemenize yardımcı olabilir. Azure Stack Hub Araçları hakkında daha fazla bilgi için bkz. GitHub'dan Azure Stack Hub Araçları'nı indirme. Bu yönergeler, chocolatey paket yöneticisini yüklediğinizi varsayar.

  1. Git'i yükleyin.

    choco install git
    
  2. Yükseltilmiş bir PowerShell isteminden şunu yazın:

    # 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. Çalıştırıcınızın Azure Stack Hub örneğine bağlanması gerekiyorsa PowerShell'i kullanabilirsiniz. Yönergeleri PowerShell ile Azure Stack Hub'a bağlanma makalesinde bulabilirsiniz.

Şirket içinde barındırılan çalıştırıcı oluşturma

GitHub Docs'ta şirket içinde barındırılan bir çalıştırıcı ayarlayabilirsiniz. Şirket içinde barındırılan bir çalıştırıcı GitHub'a bağlanabilen herhangi bir makinede çalışabilir. İş akışınızda kapsamlı bağımlılıklar, yazılım lisansı için USB donanım kilidi gibi belirli lisans gereksinimleri veya makineye veya yazılıma özgü diğer gereksinimlere ihtiyaç duyan bir otomasyon göreviniz varsa şirket içinde barındırılan bir çalıştırıcı kullanmayı seçebilirsiniz. Makineniz fiziksel makine, VM veya kapsayıcı olabilir. Çalıştırıcıyı veri merkezinize veya buluta yerleştirebilirsiniz.

Bu makalede, Azure Stack Hub'a özgü PowerShell gereksinimleriyle yapılandırılacak, Azure'da barındırılan bir Windows VM kullanacaksınız.

Şirket içi barındırılan çalıştırıcınızı ayarlama, yapılandırma ve deponuza bağlama yönergeleri için github belgelerine bakın, "Şirket içi barındırılan koşucular hakkında".

Şirket İçinde barındırılan çalıştırıcı bağlandı

Şirket içinde barındırılan çalıştırıcınızın adını ve etiketlerini not edin. Bu makaledeki iş akışı etiketi self-hostedkullanılarak çağrılır.

İş akışını deponuza ekleme

İş akışınızı oluşturmak için bu bölümdeki yaml'yi kullanarak yeni bir iş akışı oluşturun.

  1. GitHub deponuzu açın.

  2. Eylemler'i seçin.

  3. Yeni bir iş akışı oluşturun.

    • Bu ilk iş akışınızsa, İş akışı şablonu seçinbölümünden iş akışı ayarla'yı seçin.
    • Mevcut iş akışlarınız varsa Yeni iş akışı Kendiniziş akışı> ayarlayın'ı seçin.
  4. Yolunda, dosyasını workflow.ymlolarak adlandırın.

  5. İş akışı yml'sini kopyalayıp yapıştırın.

    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. Start commit (İşlemeye başla) öğesini seçin.

  7. İşleme başlığını ve isteğe bağlı ayrıntıları ekleyip Yeni dosya işle'yi seçin.

Eylem çalıştırıldığında, başarıyla çalıştırıldığını doğrulayın.

  1. GitHub deponuzu açın. Depoya göndererek iş akışını tetikleyebilirsiniz.

  2. Eylemler'i seçin.

  3. Tüm iş akışları'nın altında işlemenin adını seçin.

    İşleme özetini gözden geçirme

  4. İşin adını ( azurestack-test) seçin.

    İşleme ayrıntılarını gözden geçirme

  5. PowerShell ve CLI komutlarınızın dönüş değerlerini gözden geçirmek için bölümleri genişletin.

İş akışı dosyası ve eylemiyle ilgili notlar:

  • İş akışı adlı azurestack-testtek bir iş içerir.
  • Anında iletme olayı iş akışını tetikler.
  • Eylem, depoda ayarlanmış şirket içinde barındırılan bir çalıştırıcı kullanır ve iş akışında çalıştırıcının etiketi tarafından şu satırla çağrılır: runs on: self-hosted.
  • İş akışı üç eylem içerir.
  • İlk eylem, Azure için PowerShell ile GitHub Actions ile oturum açmak için Azure Oturum Açma eylemini çağırır. Derlemek, test etmek, paketlemek, yayımlamak ve Azure'a dağıtmak için deponuzda ayarlayabileceğiniz iş akışları oluşturabilirsiniz. Bu eylem, Azure Stack Hub ortamınıza bağlanmak ve oturum açmak için Azure Stack SPN kimlik bilgilerinizi kullanır. Eylemi kullanma hakkında daha fazla bilgiyi GitHub, Azure Oturum Açma Eylemi'nde bulabilirsiniz.
  • İkinci eylemde Azure PowerShell kullanılır. Eylem Az PowerShell modüllerini kullanır ve hem Kamu hem de Azure Stack Hub bulutlarıyla çalışır. Bu iş akışını çalıştırdıktan sonra, betiğin Azure Stack Hub ortamınızdaki kaynak gruplarını topladığı doğrulamak için işi gözden geçirin. Daha fazla bilgi için bkz. Azure PowerShell Eylemi
  • Üçüncü eylem, azure cli kullanarak oturum açar ve kaynak gruplarını toplamak için Azure Stack Hub'ınıza bağlanır. Daha fazla bilgi için bkz. Azure CLI Eylemi.
  • GitHub Actions ve şirket içi barındırılan çalıştırıcıyla çalışma hakkında daha fazla bilgi için GitHub Actions belgelerine bakın.

Sonraki adımlar