Chocolatey ile sürekli dağıtım ayarlama
Not
Azure Otomasyonu State Configuration 30 Eylül 2027'de kullanımdan kaldırılacak, lütfen Bu tarihe kadar Azure Makine Yapılandırması. Daha fazla bilgi için blog gönderisi duyurusunu inceleyin. Azure Machine Configuration hizmeti DSC Uzantısı, Azure Otomasyonu Durum Yapılandırması özelliklerini ve müşteri geri bildirimlerinden en sık istenen özellikleri birleştirir. Azure Makine Yapılandırması, Arc özellikli sunucular aracılığıyla karma makine desteği de içerir.
Dikkat
Linux için Azure Otomasyonu DSC, 30 Eylül 2023'te kullanımdan kaldırılmıştır. Daha fazla bilgi için duyuruya bakın.
DevOps dünyasında, sürekli tümleştirme işlem hattındaki çeşitli noktalarda yardımcı olacak birçok araç vardır. Azure Otomasyonu Durum Yapılandırması, DevOps ekiplerinin kullanabileceği seçeneklere yeni bir eklemedir.
Azure Otomasyonu, Microsoft Azure'da runbook'ları, düğümleri ve kimlik bilgileri, zamanlamalar ve genel değişkenler gibi paylaşılan kaynakları kullanarak çeşitli görevleri otomatikleştirmenizi sağlayan yönetilen bir hizmettir. Azure Otomasyonu Durum Yapılandırması, bu otomasyon özelliğini PowerShell İstenen Durum Yapılandırması (DSC) araçlarını içerecek şekilde genişletir. İşte harika bir genel bakış.
Bu makalede, bir Windows bilgisayarı için Sürekli Dağıtımın (CD) nasıl ayarlanacağı gösterilmektedir. Tekniği kolayca, role gereken sayıda Windows bilgisayarı (örneğin, bir web sitesi) içerecek şekilde genişletebilir ve oradan daha fazla role gidebilirsiniz.
Yüksek düzeyde
Burada oldukça fazla şey oluyor, ancak neyse ki iki ana işleme ayrılabilir:
- Kod yazma ve test etme, ardından sistemin ana ve ikincil sürümleri için yükleme paketleri oluşturma ve yayımlama.
- Paketlerde kodu yükleyen ve yürüten VM'leri oluşturma ve yönetme.
Bu temel işlemlerin her ikisi de gerçekleştikten sonra, yeni sürümler oluşturulur ve dağıtılırken vm'lerinizdeki paketi otomatik olarak güncelleştirmek kolaydır.
Bileşene genel bakış
apt-get gibi paket yöneticileri Linux dünyasında iyi bilinir, ancak Windows dünyasında çok fazla bilinmez. Chocolatey , Windows için bir paket yöneticisidir. Scott Hanselman'ın Chocolatey hakkındaki blog gönderisi harika bir giriş. Chocolatey, merkezi bir depodaki paketleri Windows işletim sistemine yüklemek için komut satırını kullanmanıza olanak tanır. Kendi deponuzu oluşturup yönetebilirsiniz ve Chocolatey belirlediğiniz herhangi bir sayıda depodan paket yükleyebilir.
PowerShell DSC , bir makine için istediğiniz yapılandırmayı bildirmenizi sağlayan bir PowerShell aracıdır. Örneğin Chocolatey'nin yüklenmesini, IIS'nin yüklenmesini, 80 numaralı bağlantı noktasının açılmasını ve web sitenizin 1.0.0 sürümünün yüklenmesini istiyorsanız DSC Local Configuration Manager (LCM) bu yapılandırmayı uygular. DSC çekme sunucusu, makineleriniz için bir yapılandırma deposu içerir. Her makinedeki LCM, yapılandırmasının depolanan yapılandırmayla eşleşip eşleşmediğini görmek için düzenli aralıklarla iade eder. Durumu bildirebilir veya makineyi depolanan yapılandırmayla uyumlu hale getirmeye çalışır. Bir makinenin veya makine kümesinin değiştirilen yapılandırmayla uyumlu hale gelmesini sağlamak için çekme sunucusunda depolanan yapılandırmayı düzenleyebilirsiniz.
DSC kaynağı, ağ yönetimi, Active Directory veya SQL Server gibi belirli özelliklere sahip bir kod modülüdür. Chocolatey DSC Kaynağı NuGet Sunucusuna erişmeyi, paketleri indirmeyi, paketleri yüklemeyi ve diğer görevleri gerçekleştirmeyi bilir. PowerShell Galerisi birçok DSC Kaynağı daha vardır. Bu modülleri yapılandırmalarınız tarafından kullanılmak üzere Azure Otomasyonu Durum Yapılandırması çekme sunucunuza yüklersiniz.
Resource Manager şablonları, altyapınız için aşağıdakiler gibi bildirim temelli bir kaynak oluşturma yöntemi sağlar:
- ağlar ve alt ağlar
- ağ güvenliği
- Yönlendirme
- yük dengeleyiciler,
- NIC'ler, VM'ler ve diğerleri
Resource Manager dağıtım modelinin (bildirim temelli) Azure klasik dağıtım modeliyle (kesinlik temelli) karşılaştırması için bkz . Azure Resource Manager ile klasik dağıtım karşılaştırması. Bu makale temel kaynak sağlayıcılarının bir tartışmasını içerir: işlem, depolama ve ağ.
Resource Manager şablonunun önemli özelliklerinden biri, VM sağlama sırasında bir VM uzantısı yükleyebilmesidir. VM uzantısı, özel betik çalıştırma, virüsten koruma yazılımı yükleme ve DSC yapılandırma betiği çalıştırma gibi belirli özelliklere sahiptir. Başka birçok vm uzantısı türü vardır.
Diyagramda hızlı gezi
En üstten başlayarak kodunuzu yazar, derler, test eder ve ardından bir yükleme paketi oluşturursunuz. Chocolatey, MSI, MSU, ZIP gibi çeşitli yükleme paketlerini işleyebilir. Ayrıca, Chocolatey'nin yerel özellikleri buna bağlı değilse gerçek yüklemeyi yapmak için PowerShell'in tüm gücüne sahip olursunuz. Paketi ulaşılabilen bir yere ( bir paket deposu) yerleştirin. Bu kullanım örneği, Azure blob depolama hesabındaki bir ortak klasörü kullanır, ancak her yerde olabilir. Chocolatey, paket meta verilerinin yönetimi için NuGet sunucuları ve birkaç diğer sunucuyla yerel olarak çalışır. Bu makalede seçenekler açıklanmaktadır. Kullanım örneği NuGet kullanır. Nuspec, paketlerinizle ilgili meta verilerdir. Nuspec bilgileri bir NuPkg içinde derlenip bir NuGet sunucusunda depolanır. Yapılandırmanız ada göre bir paket istediğinde ve bir NuGet sunucusuna başvurduğunda, VM'de Chocolatey DSC kaynağı paketi alır ve yükler. Paketin belirli bir sürümünü de isteyebilirsiniz.
Resmin sol alt kısmında bir Azure Resource Manager şablonu vardır. Bu kullanım örneğinde, VM uzantısı VM'yi Azure Otomasyonu Durum Yapılandırması çekme sunucusuna düğüm olarak kaydeder. Yapılandırma, çekme sunucusunda iki kez depolanır: bir kez düz metin olarak ve bir kez MOF dosyası olarak derlenmiştir. Azure portalında MOF, basit bir yapılandırmanın aksine bir düğüm yapılandırmasını temsil eder.
Nuspec'i oluşturmak, derlemek ve bir NuGet sunucusunda depolamak oldukça basittir. Sürekli dağıtıma yönelik bir sonraki adım aşağıdaki tek seferlik görevleri gerektirir:
- Çekme sunucusunu ayarlama
- Düğümlerinizi sunucuya kaydetme
- Sunucuda ilk yapılandırmayı oluşturma
Yalnızca paketleri depoya yükseltip dağıtırken çekme sunucusundaki yapılandırmayı ve düğüm yapılandırmasını yenilemeniz gerekir.
Resource Manager şablonuyla başlamıyorsanız, VM'lerinizi çekme sunucusuna kaydetmenize yardımcı olacak PowerShell komutları vardır. Daha fazla bilgi için bkz. Azure Otomasyonu Durum Yapılandırmasına göre yönetim için makineleri ekleme.
Kullanım örneği hakkında
Bu makaledeki kullanım örneği, Azure galerisindeki genel bir Windows Server 2012 R2 görüntüsünden bir VM ile başlar. Depolanan herhangi bir görüntüden başlayabilir ve ardından DSC yapılandırmasıyla buradan ince ayar yapabilirsiniz. Ancak, bir görüntüde pişirilen yapılandırmayı değiştirmek, DSC kullanarak yapılandırmayı dinamik olarak güncelleştirmekten çok daha zordur.
Bu tekniği VM'lerinizle kullanmak için Resource Manager şablonu ve VM uzantısı kullanmanız gerekmez. AYRıCA VM'lerinizin CD yönetimi altında olması için Azure'da olması gerekmez. Chocolatey'yi yükleyin ve çekme sunucusunun nerede olduğunu bilmesi için VM'de LCM'yi yapılandırın.
Üretimde olan bir VM'deki bir paketi güncelleştirdiğinizde, güncelleştirme yüklenirken bu VM'yi döngüden çıkarmanız gerekir. Bunu nasıl yaptığınız büyük ölçüde değişir. Örneğin, Azure Load Balancer'ın arkasında bir VM ile Özel Yoklama ekleyebilirsiniz. VM'yi güncelleştirirken yoklama uç noktasının 400 döndürmesini sağlayın. Bu değişikliğe neden olmak için gereken ince ayar yapılandırmanızın içinde olabilir ve güncelleştirme tamamlandıktan sonra 200 döndüren ince ayar da yapılandırmanızda olabilir.
Bu kullanım örneğinin tam kaynağı GitHub'daki bu Visual Studio projesindedir .
1. Adım: Çekme sunucusunu ve Otomasyon hesabını ayarlama
Kimliği doğrulanmış (Connect-AzAccount
) bir PowerShell oturumunda aşağıdaki komutları çalıştırın:
New-AzResourceGroup -Name MY-AUTOMATION-RG -Location MY-RG-LOCATION-IN-QUOTES
$newAzAutomationAccountSplat = @{
ResourceGroupName = 'MY-AUTOMATION-RG'
Location = 'MY-RG-LOCATION-IN-QUOTES'
Name = 'MY-AUTOMATION-ACCOUNT'
}
New-AzAutomationAccount @newAzAutomationAccountSplat
Çekme sunucusu ayarlanırken bu adım birkaç dakika sürer.
Otomasyon hesabınızı aşağıdaki Azure bölgelerinden herhangi birinde oluşturabilirsiniz:
- Doğu ABD 2
- Orta Güney ABD
- US Gov Virginia
- West Europe
- Güneydoğu Asya
- Doğu Japonya
- Orta Hindistan
- Güneydoğu Avustralya
- Orta Kanada
- Kuzey Avrupa
2. Adım: Resource Manager şablonunda VM uzantısı ayarlamaları yapma
Bu Azure Hızlı Başlangıç Şablonu'nda sağlanan VM kaydı (PowerShell DSC VM uzantısı kullanılarak) için ayrıntılar. Bu adım, yeni VM'nizi Durum Yapılandırma Düğümleri listesindeki çekme sunucusuna kaydeder. Bu kaydın bir parçası, düğüme uygulanacak düğüm yapılandırmasını belirtmektir. Bu düğüm yapılandırmasının çekme sunucusunda henüz mevcut olması gerekmez, ancak düğümün adını ve yapılandırmanın adını seçmeniz gerekir. Bu örnekte düğüm, isvbox
yapılandırma adı ise şeklindedir ISVBoxConfig
. içinde DeploymentTemplate.json
belirttiğiniz düğüm yapılandırma adı şeklindedir ISVBoxConfig.isvbox
.
3. Adım: Çekme sunucusuna gerekli DSC kaynaklarını ekleme
PowerShell Galerisi DSC kaynaklarını Azure Otomasyonu hesabınıza yükleyebilir. İstediğiniz kaynağa gidin ve Azure Otomasyonu dağıt'ı seçin.
Kısa süre önce Azure portalına eklenen başka bir teknik, yeni modülleri çekmenize veya mevcut modülleri güncelleştirmenize olanak tanır. Galerideki modüllerin listesini görmek, ayrıntıları detaya gitmek ve Otomasyon hesabınıza aktarmak için Galeriye Gözat simgesini seçin. Modüllerinizi güncel tutmak için bu işlemi kullanabilirsiniz. Ayrıca içeri aktarma özelliği, hiçbir şeyin eşitlenmediğinden emin olmak için diğer modüllerle bağımlılıkları denetler.
Ayrıca, daha sonra yükseltmek istemediğiniz sürece kaynak başına yalnızca bir kez kullanılan el ile bir yaklaşım da vardır. PowerShell tümleştirme modülleri yazma hakkında daha fazla bilgi için bkz. Azure Otomasyonu için Tümleştirme Modülleri Yazma.
Not
Bir Windows bilgisayarı için PowerShell tümleştirme modülünün klasör yapısı, Azure Otomasyonu tarafından beklenen klasör yapısından biraz farklıdır.
Windows Management Framework v5'i yükleyin (Windows 10 için gerekli değildir).
Tümleştirme modülünü yükleyin.
Install-Module -Name MODULE-NAME` <—grabs the module from the PowerShell Gallery
modül klasörünü içinden
C:\Program Files\WindowsPowerShell\Modules\MODULE-NAME
geçici bir klasöre kopyalayın.Örnekleri ve belgeleri ana klasörden silin.
Zip dosyasını klasörün adıyla adlandırarak ana klasörü sıkıştırın.
ZIP dosyasını bir Azure Depolama hesabındaki blob depolama gibi erişilebilir bir HTTP konumuna yerleştirin.
Aşağıdaki komutu çalıştırın.
$newAzAutomationModuleSplat = @{ ResourceGroupName = 'MY-AUTOMATION-RG' AutomationAccountName = 'MY-AUTOMATION-ACCOUNT' Name = 'MODULE-NAME' ContentLinkUri = 'https://STORAGE-URI/CONTAINERNAME/MODULE-NAME.zip' } New-AzAutomationModule @newAzAutomationModuleSplat
Dahil edilen örnek cChoco ve xNetworking için bu adımları uygular.
4. Adım: Düğüm yapılandırmasını çekme sunucusuna ekleme
Yapılandırmanızı çekme sunucusuna ilk kez içeri aktardığınızda ve derlediğinizde özel bir şey yoktur. Aynı yapılandırmanın sonraki tüm içeri aktarmaları veya derlemeleri tam olarak aynı görünür. Paketinizi her güncelleştirdiğinizde ve üretime göndermeniz gerektiğinde, yapılandırma dosyasının doğru olduğundan emin olduktan sonra (paketinizin yeni sürümü dahil) bu adımı gerçekleştirirsiniz. Yapılandırma dosyası ISVBoxConfig.ps1
şu şekildedir:
Configuration ISVBoxConfig
{
Import-DscResource -ModuleName cChoco
Import-DscResource -ModuleName xNetworking
Node 'isvbox' {
cChocoInstaller installChoco
{
InstallDir = 'C:\choco'
}
WindowsFeature installIIS
{
Ensure = 'Present'
Name = 'Web-Server'
}
xFirewall WebFirewallRule
{
Direction = 'Inbound'
Name = 'Web-Server-TCP-In'
DisplayName = 'Web Server (TCP-In)'
Description = 'IIS allow incoming web site traffic.'
Enabled = 'True'
Action = 'Allow'
Protocol = 'TCP'
LocalPort = '80'
Ensure = 'Present'
}
cChocoPackageInstaller trivialWeb
{
Name = 'trivialweb'
Version = '1.0.0'
Source = 'MY-NUGET-V2-SERVER-ADDRESS'
DependsOn = '[cChocoInstaller]installChoco','[WindowsFeature]installIIS'
}
}
}
Aşağıdaki New-ConfigurationScript.ps1
betik Az PowerShell modülünü kullanacak şekilde değiştirildi:
$importAzAutomationDscConfigurationSplat = @{
ResourceGroupName = 'MY-AUTOMATION-RG'
AutomationAccountName = 'MY-AUTOMATION-ACCOUNT'
SourcePath = 'C:\temp\AzureAutomationDsc\ISVBoxConfig.ps1'
Published = -Published
Force = -Force
}
Import-AzAutomationDscConfiguration @importAzAutomationDscConfigurationSplat
$startAzAutomationDscCompilationJobSplat = @{
ResourceGroupName = 'MY-AUTOMATION-RG'
AutomationAccountName = 'MY-AUTOMATION-ACCOUNT'
ConfigurationName = 'ISVBoxConfig'
}
$jobData = Start-AzAutomationDscCompilationJob @startAzAutomationDscCompilationJobSplat
$compilationJobId = $jobData.Id
$getAzAutomationDscCompilationJobSplat = @{
ResourceGroupName = 'MY-AUTOMATION-RG'
AutomationAccountName = 'MY-AUTOMATION-ACCOUNT'
Id = $compilationJobId
}
Get-AzAutomationDscCompilationJob @getAzAutomationDscCompilationJobSplat
5. Adım: Paket meta verilerini oluşturma ve koruma
Paket deposuna yerleştirdiğiniz her paket için bunu açıklayan bir Nuspec gerekir. NuGet sunucunuzda derlenmiş ve depolanmalıdır. Daha fazla bilgi için bkz . [nuget.exe CLI kullanarak NuGet paketi oluşturma].
MyGet.org NuGet sunucusu olarak kullanabilirsiniz. Bu hizmeti satın alabilirsiniz, ancak ücretsiz bir başlangıç SKU'susunuz. Özel paketleriniz için kendi NuGet sunucunuzu yükleme yönergeleri için Nuget.org belgelerine bakın.
6. Adım: Hepsini birbirine bağlayın
Bir sürüm Soru-Cevap'ı her geçtiğinde ve dağıtım için onaylandığında paket oluşturulur ve nuspec ve nupkg güncelleştirilip NuGet sunucusuna dağıtılır. Yapılandırmayı (4. adım) yeni sürüm numarasıyla güncelleştirmeniz gerekir. Ardından, çekme sunucusuna gönderin ve derleyin.
Bu noktadan sonra, güncelleştirmeyi çekmek ve yüklemek bu yapılandırmaya bağlı olan VM'lere bağlıdır. Bu güncelleştirmelerin her biri basittir; yalnızca bir veya iki PowerShell satırı. Azure DevOps için, bazıları derlemede zincirleyebileceğiniz derleme görevlerinde kapsüllenir. Bu makalede daha fazla ayrıntı sağlanır. Bu GitHub deposu , kullanılabilir derleme görevlerinin ayrıntılarını içerir.
İlgili makaleler
Sonraki adımlar
- Genel bakış için bkz. Azure Otomasyonu Durum Yapılandırmasına genel bakış.
- Özelliği kullanmaya başlamak için bkz. Azure Otomasyonu Durum Yapılandırmasını kullanmaya başlama.
- DSC yapılandırmalarını hedef düğümlere atayabilmeniz için derleme hakkında bilgi edinmek için bkz. Azure Otomasyonu Durum Yapılandırmasında DSC yapılandırmalarını derleme.
- PowerShell cmdlet başvurusu için bkz . Az.Automation.
- Fiyatlandırma bilgileri için bkz. Durum Yapılandırması fiyatlandırmasını Azure Otomasyonu.