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.
Ş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.
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. 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
register
Yeni bir ortam için komutunu veyaupdate
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
SPN için kullanmak istediğiniz abonelik kimliğinizi ve kaynak grubunuzu alın.
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
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."
- GitHub deposunu açın veya oluşturun. GitHub'da depo oluşturma konusunda yardıma ihtiyacınız varsa GitHub belgelerinde yönergeleri bulabilirsiniz.
- Deponuzu özel olarak ayarlayın.
- Ayarlar>Depo görünürlüğünü değiştir'i seçin.
- Özel yap'ı seçin.
- Deponuzun adını yazın.
- Anladım'ı seçin, depo görünürlüğünü değiştirin.
- Ayarlar'ı seçin.
- Gizli Diziler'i seçin.
-
Yeni depo gizli dizisi'ni seçin.
- Gizli dizinize
AZURE_CREDENTIALS
adını verin. - SPN'nizi temsil eden JSON nesnesini yapıştırın.
- Add secret (Gizli dizi ekle) öğesini seçin.
VM'nizi oluşturma ve önkoşulları yükleme
Ş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.
- Azure'da Windows VM oluşturma yönergeleri için bkz. Hızlı Başlangıç: Azure portal Windows sanal makinesi oluşturma. Bu yönergeleri takip ederken Windows Server 2016 Core'u yükleyin.
- Azure Stack Hub'da Windows VM oluşturma yönergeleri için bkz . Hızlı Başlangıç: Azure Stack Hub portalıyla Windows server VM oluşturma. Bu yönergeleri takip ederken Windows Server 2016 Core'u yükleyin.
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.
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'))
PowerShell Core'u yükleyin. Yükseltilmiş bir PowerShell isteminden şunu yazın:
choco install powershell-core
Azure CLI'yı yükleyin. Yükseltilmiş bir PowerShell isteminden şunu yazın:
choco install azure-cli
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.
Makinenizi yeniden başlatın. Yükseltilmiş bir PowerShell isteminden şunu yazın:
shutdown /r
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.
İş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.
Git'i yükleyin.
choco install git
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
Ç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 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-hosted
kullanı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.
GitHub deponuzu açın.
Eylemler'i seçin.
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.
Yolunda, dosyasını
workflow.yml
olarak adlandırın.İş 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
Start commit (İşlemeye başla) öğesini seçin.
İş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.
GitHub deponuzu açın. Depoya göndererek iş akışını tetikleyebilirsiniz.
Eylemler'i seçin.
Tüm iş akışları'nın altında işlemenin adını seçin.
İşin adını ( azurestack-test) seçin.
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-test
tek 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
- GitHub Marketi'nde daha fazla eylem bulun.
- Azure Stack Hub için yaygın dağıtımlar hakkında bilgi edinin
- Azure Stack Hub'da Azure Resource Manager şablonlarını kullanma hakkında bilgi edinin
- DevOps hibrit bulut desenini, DevOps desenini gözden geçirin