çekme hizmetini Desired State Configuration
Önemli
Çekme Sunucusu (Windows Özelliği DSC-Hizmeti), Windows Server'ın desteklenen bir bileşenidir, ancak yeni özellikler veya özellikler sunma planı yoktur. DSC'nin daha yeni bir sürümünün artık genel kullanıma sunulduğu ve konuk yapılandırması adlı Azure İlkesi özelliği tarafından yönetildiğini bilmenizi isteriz. Konuk yapılandırma hizmeti DSC Uzantısı, Azure Otomasyonu State Configuration ve müşteri geri bildirimlerinden en sık istenen özellikleri birleştirir. Konuk yapılandırması, Arc özellikli sunucular aracılığıyla karma makine desteğini de içerir.
Yerel Configuration Manager (LCM) bir Çekme Hizmeti çözümü tarafından merkezi olarak yönetilebilir. Bu yaklaşım kullanılırken, yönetilen düğüm bir hizmete kaydedilir ve LCM ayarlarında bir yapılandırma atanır. Yapılandırma ve yapılandırma için bağımlılık olarak gereken tüm DSC kaynakları makineye indirilir ve LCM tarafından yapılandırmayı yönetmek için kullanılır. Yönetilen makinenin durumu hakkındaki bilgiler raporlama için hizmete yüklenir. Bu kavram "çekme hizmeti" olarak adlandırılır.
Çekme hizmeti için geçerli seçenekler şunlardır:
- Azure Otomasyonu Desired State Configuration hizmeti
- Windows Server'da çalışan bir çekme hizmeti
- Topluluk tarafından korunan açık kaynak çözümleri
- SMB paylaşımı
Her çözüm için önerilen ölçek aşağıdaki gibidir:
Çözüm | İstemci düğümleri |
---|---|
MDB/ESENT veritabanını kullanan Windows Çekme Sunucusu | En fazla 500 düğüm |
SQL veritabanını kullanan Windows Pull Server | En fazla 3500 düğüm |
Azure Automation DSC | Hem küçük hem de büyük ortamlar |
Önerilen çözüm ve en fazla özelliğe sahip seçenek Azure Otomasyonu DSC'dir. Otomasyon Hesabı başına düğüm sayısı için üst sınır tanımlanmadı.
Azure hizmeti, şirket içi düğümleri özel veri merkezlerinde veya Azure ve AWS gibi genel bulutlarda yönetebilir. Sunucuların doğrudan İnternet'e bağlanamadığı özel ortamlar için, giden trafiği yalnızca yayımlanan Azure IP aralığıyla sınırlamayı göz önünde bulundurun (bkz. Azure Veri Merkezi IP Aralıkları).
Windows Server'daki çekme hizmetinde şu anda kullanılamayan çevrimiçi hizmetin özellikleri şunlardır:
- Aktarımdaki ve bekleyen tüm veriler şifrelenir
- İstemci sertifikaları otomatik olarak oluşturulur ve yönetilir
- Parolaları/kimlik bilgilerini veya sunucu adları ya da bağlantı dizeleri gibi değişkenleri merkezi olarak yönetmek için gizli dizi deposu
- Düğüm LCM yapılandırmasını merkezi olarak yönetme
- İstemci düğümlerine yapılandırmaları merkezi olarak atama
- Üretime ulaşmadan önce test için "kanarya gruplarında" yapılandırma değişikliklerini serbest bırakma
- Grafik raporlama
- DSC kaynak ayrıntı düzeyinde durum ayrıntıları
- Sorun giderme için istemci makinelerinden ayrıntılı hata iletileri
- Uyarı, otomatik görevler, raporlama ve uyarı için Android/iOS uygulaması için Azure Log Analytics ile tümleştirme
Windows Server'da DSC çekme hizmeti
Çekme hizmetini Windows Server'da çalışacak şekilde yapılandırmak mümkündür. Windows Server'a dahil edilen çekme hizmeti çözümünün yalnızca bir veritabanına rapor verilerini indirmek ve yakalamak için yapılandırmaları ve modülleri depolama özelliklerini içerdiğini unutmayın. Azure'da hizmet tarafından sunulan özelliklerin çoğunu içermez ve bu nedenle hizmetin nasıl kullanılacağını değerlendirmek için iyi bir araç değildir.
Windows Server'da sunulan çekme hizmeti, DSC yapılandırma dosyalarının bu düğümler tarafından istendiğinde hedef düğümler için kullanılabilir olmasını sağlamak için OData arabirimi kullanan IIS'deki bir web hizmetidir.
Çekme sunucusu kullanma gereksinimleri:
- Çalıştıran bir sunucu:
- WMF/PowerShell 4.0 veya üzeri
- IIS sunucu rolü
- DSC Hizmeti
- İdeal olan, hedef düğümlerde Yerel Configuration Manager (LCM) geçirilen kimlik bilgilerinin güvenliğini sağlamak için bir sertifika oluşturmanın bazı araçlarıdır
Windows Server'ı çekme hizmetini barındıracak şekilde yapılandırmanın en iyi yolu DSC yapılandırması kullanmaktır. Aşağıda örnek bir betik verilmiştir.
Desteklenen veritabanı sistemleri
WMF 4.0 | WMF 5.0 | WMF 5.1 | WMF 5.1 (Windows Server Insider Preview 17090) |
---|---|---|---|
MDB | ESENT (Varsayılan), MDB | ESENT (Varsayılan), MDB | ESENT (Varsayılan), SQL Server, MDB |
Windows Server'ın 17090 sürümünden itibaren SQL Server Çekme Hizmeti (Windows Özelliği DSC-Service) için desteklenen bir seçenektir. Bu, Azure Otomasyonu DSC'ye geçirilmemiş büyük DSC ortamlarını ölçeklendirmek için yeni bir seçenek sağlar.
Not
SQL Server desteği WMF 5.1'in (veya önceki) önceki sürümlerine eklenmez ve yalnızca 17090'dan büyük veya buna eşit Windows Server sürümlerinde kullanılabilir.
Çekme sunucusunu SQL Server kullanacak şekilde yapılandırmak için SqlProvider'ı$true
ve SqlConnectionString'i geçerli bir SQL Server Bağlantı Dizesi olarak ayarlayın. Daha fazla bilgi için bkz . SqlClient Bağlantı Dizeleri.
xDscWebService ile SQL Server yapılandırması örneği için önce xDscWebService kaynağını kullanma bölümünü okuyun ve ardından GitHub'da 2-xDscWebService_RegistrationUseSQLProvider_Config.ps1 gözden geçirin.
xDscWebService kaynağını kullanma
Web çekme sunucusu ayarlamanın en kolay yolu, xPSDesiredStateConfiguration modülüne dahil edilen xDscWebService kaynağını kullanmaktır. Aşağıdaki adımlarda, web hizmetini ayarlayan bir Configuration
kaynağın nasıl kullanılacağı açıklanmaktadır.
xPSDesiredStateConfiguration modülünü yüklemek için Install-Module cmdlet'ini çağırın.
Not
Install-Module
, PowerShell 5.0 ve üzeri sürümlerde bulunan PowerShellGet modülüne dahil edilir.DSC Çekme sunucusu için kuruluşunuzun içinden veya bir kamu yetkilisinden güvenilen bir Sertifika Yetkilisinden SSL sertifikası alın. Yetkiliden alınan sertifika genellikle PFX biçimindedir.
Sertifikayı, olması gereken
CERT:\LocalMachine\My
varsayılan konumda DSC Çekme sunucusu olacak düğüme yükleyin.- Sertifika parmak izini not edin.
Kayıt Anahtarı olarak kullanılacak GUID'yi seçin. PowerShell kullanarak bir tane oluşturmak için PS istemine aşağıdakileri girin ve enter tuşuna basın:
[guid]::newGuid()
veyaNew-Guid
. Bu anahtar, kayıt sırasında kimlik doğrulaması yapmak için istemci düğümleri tarafından paylaşılan anahtar olarak kullanılır. Daha fazla bilgi için aşağıdaki Kayıt Anahtarı bölümüne bakın.PowerShell ISE'de aşağıdaki yapılandırma betiğini (F5) başlatın ( xPSDesiredStateConfiguration modülünün klasörüne olarak
Sample_xDscWebServiceRegistration.ps1
dahildir) . Bu betik, çekme sunucusunu ayarlar.configuration Sample_xDscWebServiceRegistration { param ( [string[]]$NodeName = 'localhost', [ValidateNotNullOrEmpty()] [string] $certificateThumbPrint, [Parameter(HelpMessage='This should be a string with enough entropy (randomness)' + ' to protect the registration of clients to the pull server. We will use new' + ' GUID by default.' )] [ValidateNotNullOrEmpty()] [string] $RegistrationKey # A guid that clients use to initiate conversation with pull server ) Import-DSCResource -ModuleName PSDesiredStateConfiguration Import-DSCResource -ModuleName xPSDesiredStateConfiguration Node $NodeName { WindowsFeature DSCServiceFeature { Ensure = "Present" Name = "DSC-Service" } xDscWebService PSDSCPullServer { Ensure = "Present" EndpointName = "PSDSCPullServer" Port = 8080 PhysicalPath = "$env:SystemDrive\inetpub\PSDSCPullServer" CertificateThumbPrint = $certificateThumbPrint ModulePath = "$env:PROGRAMFILES\WindowsPowerShell\DscService\Modules" ConfigurationPath = "$env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration" State = "Started" DependsOn = "[WindowsFeature]DSCServiceFeature" RegistrationKeyPath = "$env:PROGRAMFILES\WindowsPowerShell\DscService" AcceptSelfSignedCertificates = $true UseSecurityBestPractices = $true Enable32BitAppOnWin64 = $false } File RegistrationKeyFile { Ensure = 'Present' Type = 'File' DestinationPath = "$env:ProgramFiles\WindowsPowerShell\DscService\RegistrationKeys.txt" Contents = $RegistrationKey } } }
SSL sertifikasının parmak izini certificateThumbPrint parametresi ve GUID kayıt anahtarını RegistrationKey parametresi olarak geçirerek yapılandırmayı çalıştırın:
# To find the Thumbprint for an installed SSL certificate for use with the pull server list all # certificates in your local store and then copy the thumbprint for the appropriate certificate # by reviewing the certificate subjects dir Cert:\LocalMachine\my # Then include this thumbprint when running the configuration $sample_xDscWebServiceRegistrationSplat = @{ certificateThumbprint = 'A7000024B753FA6FFF88E966FD6E19301FAE9CCC' RegistrationKey = '140a952b-b9d6-406b-b416-e0f759c9c0e4' OutputPath = 'C:\Configs\PullServer' } Sample_xDscWebServiceRegistration @sample_xDscWebServiceRegistrationSplat # Run the compiled configuration to make the target node a DSC Pull Server Start-DscConfiguration -Path c:\Configs\PullServer -Wait -Verbose
Kayıt Anahtarı
İstemci düğümlerinin yapılandırma kimliği yerine yapılandırma adlarını kullanabilmesi için sunucuya kaydolmasına izin vermek için, yukarıdaki yapılandırma tarafından oluşturulan bir kayıt anahtarı içinde adlı RegistrationKeys.txt
bir dosyaya C:\Program Files\WindowsPowerShell\DscService
kaydedilir. Kayıt anahtarı, istemci tarafından çekme sunucusuna ilk kayıt sırasında kullanılan paylaşılan bir gizli dizi olarak çalışır. İstemci, kayıt başarıyla tamamlandıktan sonra çekme sunucusunda benzersiz kimlik doğrulaması yapmak için kullanılan otomatik olarak imzalanan bir sertifika oluşturur. Bu sertifikanın parmak izi yerel olarak depolanır ve çekme sunucusunun URL'si ile ilişkilendirilir.
Not
Kayıt anahtarları PowerShell 4.0'da desteklenmez.
Bir düğümü çekme sunucusuyla kimlik doğrulaması yapacak şekilde yapılandırmak için kayıt anahtarının bu çekme sunucusuna kaydedilecek tüm hedef düğümler için meta yapılandırmada olması gerekir. Hedef makine başarıyla kaydedildikten sonra aşağıdaki meta yapılandırmada RegistrationKey'in kaldırıldığını ve değerin çekme sunucusundaki dosyada RegistrationKeys.txt
depolanan değerle eşleşmesi gerektiğini unutmayın (bu örnekte '140a952b-b9d6-406b-b416-e0f759c9c0e4'). Kayıt anahtarı değerini her zaman güvenli bir şekilde değerlendirin, çünkü tüm hedef makinelerin çekme sunucusuna kaydolmasına izin verir.
[DSCLocalConfigurationManager()]
configuration Sample_MetaConfigurationToRegisterWithLessSecurePullServer
{
param
(
[ValidateNotNullOrEmpty()]
[string] $NodeName = 'localhost',
[ValidateNotNullOrEmpty()]
[string] $RegistrationKey, # the key used to set up pull server in previous configuration
[ValidateNotNullOrEmpty()]
[string] $ServerName = 'localhost' # The name of the pull server, same as $NodeName used in previous configuration
)
Node $NodeName
{
Settings
{
RefreshMode = 'Pull'
}
ConfigurationRepositoryWeb CONTOSO-PullSrv
{
ServerURL = "https://$ServerName`:8080/PSDSCPullServer.svc"
RegistrationKey = $RegistrationKey
ConfigurationNames = @('ClientConfig')
}
ReportServerWeb CONTOSO-PullSrv
{
ServerURL = "https://$ServerName`:8080/PSDSCPullServer.svc"
RegistrationKey = $RegistrationKey
}
}
}
$MetaConfigurationSplat = @{
RegistrationKey = $RegistrationKey
OutputPath = 'c:\Configs\TargetNodes'
}
Sample_MetaConfigurationToRegisterWithLessSecurePullServer @MetaConfigurationSplat
Not
ReportServerWeb bölümü, raporlama verilerinin çekme sunucusuna gönderilmesini sağlar.
Meta yapılandırma dosyasında ConfigurationID özelliğinin olmaması, çekme sunucusunun çekme sunucusu protokolünün V2 sürümünü desteklediği anlamına gelir, bu nedenle ilk kayıt gereklidir. Buna karşılık ConfigurationID'nin varlığı, çekme sunucusu protokolünün V1 sürümünün kullanıldığı ve kayıt işleminin olmadığı anlamına gelir.
Not
Bir PUSH senaryosunda, geçerli sürümde, çekme sunucusuna hiç kaydolmamış düğümler için meta yapılandırma dosyasında configurationid özelliğinin tanımlanmasını gerekli kılan bir hata vardır. Bu, V1 Çekme Sunucusu protokollerini zorlar ve kayıt hatası iletilerini önler.
Yapılandırmaları ve kaynakları yerleştirme
Çekme sunucusu kurulumu tamamlandıktan sonra, çekme sunucusu yapılandırmasındaki ConfigurationPath ve ModulePath özellikleri tarafından tanımlanan klasörler, hedef düğümlerin çekmesi için kullanılabilecek modülleri ve yapılandırmaları yerleştireceğiniz yerdir. Çekme sunucusunun bunları doğru şekilde işlemesi için bu dosyaların belirli bir biçimde olması gerekir.
DSC kaynak modülü paket biçimi
Her kaynak modülünün aşağıdaki desene {Module Name}_{Module Version}.zip
göre sıkıştırılmış ve adlandırılmış olması gerekir.
Örneğin, 3.1.2.0 modül sürümüne sahip xWebAdminstration adlı bir modül olarak adlandırılabilir xWebAdministration_3.1.2.0.zip
. Modülün her sürümü tek bir zip dosyasında bulunmalıdır.
Her zip dosyasında bir kaynağın yalnızca tek bir sürümü olduğundan, WMF 5.0'da tek bir dizinde birden çok modül sürümü desteğiyle eklenen modül biçimi desteklenmez. Bu, çekme sunucusuyla kullanmak üzere DSC kaynak modüllerini paketlemeden önce dizin yapısında küçük bir değişiklik yapmanız gerektiği anlamına gelir. WMF 5.0'da DSC kaynağı içeren modüllerin varsayılan biçimidir {Module Folder}\{Module Version}\DscResources\{DSC Resource Folder}\
. Çekme sunucusu için paketlemeden önce yolun olması {Module Folder}\DscResources\{DSC Resource Folder}\
için {Module version} klasörünü kaldırın. Bu değişiklikle, yukarıda açıklandığı gibi klasörü sıkıştırın ve bu zip dosyalarını ModulePath klasörüne yerleştirin.
Yeni eklenen modül için sağlama toplamı dosyası oluşturmak için kullanın New-DscChecksum {module zip file}
.
Yapılandırma MOF biçimi
Hedef düğümdeki LCM'nin yapılandırmayı doğru edebilmesi için yapılandırma MOF dosyasının sağlama toplamı dosyasıyla eşlenmesi gerekir. Sağlama toplamı oluşturmak için New-DscChecksum cmdlet'ini çağırın. cmdlet'i, MOF yapılandırmasının bulunduğu klasörü belirten bir Path parametresi alır. cmdlet'i, ConfigurationMOFName
yapılandırma mof dosyasının adı olan adlı ConfigurationMOFName.mof.checksum
bir sağlama toplamı dosyası oluşturur. Belirtilen klasörde birden fazla yapılandırma MOF dosyası varsa, klasördeki her yapılandırma için bir sağlama toplamı oluşturulur. MOF dosyalarını ve ilişkili sağlama toplamı dosyalarını ConfigurationPath klasörüne yerleştirin.
Not
Yapılandırma MOF dosyasını herhangi bir şekilde değiştirirseniz sağlama toplamı dosyasını da yeniden oluşturmanız gerekir.
Araçlar
Çekme sunucusunu ayarlamayı, doğrulamayı ve yönetmeyi kolaylaştırmak için xPSDesiredStateConfiguration modülünün en son sürümünde örnek olarak aşağıdaki araçlar yer alır:
Çekme sunucusunda kullanılmak üzere DSC kaynak modüllerini ve yapılandırma dosyalarını paketlemeye yardımcı olacak bir modül. PublishModulesAndMofsToPullServer.psm1. Aşağıdaki örnekler:
# Example 1 - Package all versions of given modules installed locally and MOF files are in c:\LocalDepot $moduleList = @('xWebAdministration', 'xPhp') Publish-DSCModuleAndMof -Source C:\LocalDepot -ModuleNameList $moduleList # Example 2 - Package modules and mof documents from c:\LocalDepot Publish-DSCModuleAndMof -Source C:\LocalDepot -Force
Çekme sunucusunu doğrulayan bir betik doğru yapılandırıldı. PullServerSetupTests.ps1.
Çekme Hizmeti için Topluluk Çözümleri
DSC topluluğu, çekme hizmeti protokollerini uygulamak için birden çok çözüm yazdı. Şirket içi ortamlar için bunlar çekme hizmeti özellikleri ve artımlı geliştirmelerle topluluğa geri katkıda bulunma fırsatı sunar.
Çekme istemcisi yapılandırması
Aşağıdaki konular çekme istemcilerini ayarlamayı ayrıntılı olarak açıklar:
- Yapılandırma kimliği kullanarak DSC çekme istemcisi ayarlama
- Yapılandırma adlarını kullanarak DSC çekme istemcisi ayarlama
- Kısmi yapılandırmalar