Desired State Configuration Çekme Hizmeti

Önemli

Çekme Sunucusu (Windows Özelliği DSC-Service), Windows Server'ın desteklenen bir bileşenidir, ancak yeni özellik veya özellik sunma planları yoktur. Yönetilen istemcileri Azure Otomasyonu DSC'ye (Windows Server'da Çekme Sunucusu'Windows ötesinde özellikler içerir) veya burada listelenen topluluk çözümlerinden biri olarak geçişe başlamaları önerilir.

Yerel Yapılandırma Yöneticisi (LCM) ç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ırmaya bağımlılıklar olarak gereken yapılandırma ve tüm DSC kaynakları makineye indirilir ve LCM tarafından yapılandırmayı yönetmek için kullanılır. Yönetilen makinenin durumuyla ilgili bilgiler raporlama için hizmete karşıya yüklendi. 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 üzerinde çalışan bir çekme hizmeti
  • Community 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
Windows MDB/SONRAT veritabanı kullanarak Çekme Sunucusu En fazla 500 düğüm
Windows SQL kullanarak Çekme Sunucusu En fazla 3500 düğüm
Azure Automation DSC Hem küçük hem de büyük ortamlar

Önerilen çözüm ve en fazla özelliğin olduğu seçenek DSC'Azure Otomasyonu seçeneğidir. Otomasyon Hesabı başına düğüm sayısı için üst sınır belirlenemedi.

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ğlanamayladığı özel ortamlar için giden trafiği yalnızca yayımlanmış Azure IP aralığıyla sınırlamayı göz önünde bulundurabilirsiniz (bkz. Azure Veri Merkezi IP Aralıkları).

Windows Server'da çekme hizmeti tarafından şu anda kullanılabilir durumda Windows özellikleri:

  • Tüm veriler taşıma ve istirma sırasında şifrelenir
  • İstemci sertifikaları otomatik olarak oluşturulur ve yönetilir
  • Parolaları/kimlik bilgilerini merkezi olarak yönetmek için gizli diziler deposuveya sunucu adları veya bağlantı dizeleri gibi değişkenler
  • Düğüm LCM yapılandırmasını merkezi olarak yönetme
  • Yapılandırmaları istemci düğümlerine merkezi olarak atama
  • Üretime ulaşmadan önce test için "canary groups" için sürüm yapılandırması değişiklikleri
  • Grafik raporlama
    • Ayrıntı düzeyi DSC kaynak düzeyindeki 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ıştıracak şekilde yapılandırabilirsiniz. Windows Server'a dahil edilen çekme hizmeti çözümünün yalnızca rapor verilerini indirmek ve veritabanında yakalamak için yapılandırmaları ve modülleri depolama özelliklerini içerir. Azure'da hizmet tarafından sunulan birçok özelliği içermemektedir ve bu nedenle hizmetin nasıl kullanılacalarını değerlendirmek için iyi bir araç değildir.

Windows Server'da sunulan çekme hizmeti, ISS'de DSC yapılandırma dosyalarını hedef düğümler için kullanılabilir hale etmek için OData arabirimini kullanan bir web hizmetidir.

Çekme sunucusu kullanma gereksinimleri:

  • Çalıştıran bir sunucu:
    • WMF/PowerShell 4.0 veya daha yenisi
    • IIS sunucu rolü
    • DSC Hizmeti
  • İdeal olarak, hedef düğümlerde Yerel Düğümler'e (LCM) geçirilen kimlik Yapılandırma Yöneticisi oluşturmak için bir sertifika oluşturmanın bazı yollarına

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
MDB NEDEN (Varsayılan), MDB NEDEN (Varsayılan), MDB NEDEN (Varsayılan), SQL Server, MDB

Windows Server'ın 17090 yayın SQL Server çekme hizmeti (Windows Özelliği DSC-Service) için desteklenen bir seçenektir. Bu, DSC'ye geçirilmeyip büyük DSC ortamlarını ölçeklendirmek için Azure Otomasyonu sağlar.

Not

SQL Server wmf 5.1 (veya önceki) sürümlerine eklenmez ve yalnızca 17090 veya daha büyük Windows Server sürümlerinde kullanılabilir.

Çekme sunucusunu SQL Server kullanmak üzere yapılandırmak için SqlProvider'ı ve $true SqlConnectionString'i geçerli bir bağlantı SQL Server ayarlayın. Daha fazla bilgi için bkz. SqlClient Bağlantı Dizeleri. xDscWebService SQL Server bir örnek için, önce xDscWebService kaynağını kullanma makalesini okuyun ve sonra 2-xDscWebService_RegistrationUseSQLProvider_Config.ps1'GitHub.

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 ayarlayacak bir Configuration içinde kaynağın nasıl kullanımı açıklayacak.

  1. xPSDesiredStateConfiguration modülünü yüklemek için Install-Module cmdlet'ini arayın.

    Not

    Install-Module , PowerShell 5.0 ve üzerinde bulunan PowerShellGet modülüne dahil edilir.

  2. DSC Çekme sunucusu için, güvenilen bir Sertifika Yetkilisini (kurum içinde veya genel bir yetkiliden) ssl sertifikası alın. Yetkiliden alınan sertifika genellikle PFX biçimindedir.

  3. Sertifikayı DSC Çekme sunucusu olacak düğüme, olması gereken varsayılan konuma CERT:\LocalMachine\My yükleyin.

    • Sertifika parmak izini not etmek.
  4. Kayıt Anahtarı olarak kullanılacak GUID'yi seçin. PowerShell kullanarak bir tane oluşturmak için PS istemine aşağıdakini girin ve Enter tuşuna basın: [guid]::newGuid() veya New-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.

  5. PowerShell ISE'de, aşağıdaki yapılandırma betiği (xPSDesiredStateConfiguration modülünün klasörüne olarak dahil) başlatmak (F5 Sample_xDscWebServiceRegistration.ps1 ) . 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
            }
        }
    }
    
  6. Yapılandırmayı çalıştırın ve SSL sertifikasının parmak izini certificateThumbPrint parametresi ve BIR GUID kayıt anahtarını RegistrationKey parametresi olarak geçirme:

    # 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_xDscWebServiceRegistration -certificateThumbprint 'A7000024B753FA6FFF88E966FD6E19301FAE9CCC' -RegistrationKey '140a952b-b9d6-406b-b416-e0f759c9c0e4' -OutputPath c:\Configs\PullServer
    
    # 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ı kullanmak üzere sunucuya kaydolmasına izin vermek için, yukarıdaki yapılandırma tarafından oluşturulan bir kayıt anahtarı içinde adlı bir dosyaya RegistrationKeys.txt C:\Program Files\WindowsPowerShell\DscService kaydedilir. Kayıt anahtarı, çekme sunucusuyla istemci tarafından ilk kayıt sırasında kullanılan paylaşılan bir gizli anahtar olarak işlev gösterir. İstemci, kayıt başarıyla tamamlandıktan sonra çekme sunucusunda benzersiz olarak kimlik doğrulaması yapmak için kullanılan otomatik olarak imzalanan bir sertifika oluşturacak. Bu sertifikanın parmak izi yerel olarak depolanır ve çekme sunucusunun URL'si ile ilişkilendirildi.

Not

Kayıt anahtarları PowerShell 4.0'da desteklenmiyor.

Bir düğümü çekme sunucusuyla kimlik doğrulaması yapmak üzere yapılandırmak için, kayıt anahtarının bu çekme sunucusuna kaydedecek herhangi bir hedef düğüm için meta yapılandırmada olması gerekir. Aşağıdaki meta yapılandırmada RegistrationKey değerinin hedef makine başarıyla kaydedildikten sonra kaldırıldığına ve değerin çekme sunucusundaki dosyada depolanan değerle eşleşmesi gerektiğini unutmayın (bu örnekte RegistrationKeys.txt '140a952b-b9d6-406b-b416-e0f759c9c0e4' ). Herhangi bir hedef makinenin çekme sunucusuna kaydolması için izin veren kayıt anahtarı değerini her zaman güvenli bir şekilde işle.

[DSCLocalConfigurationManager()]
configuration Sample_MetaConfigurationToRegisterWithLessSecurePullServer
{
    param
    (
        [ValidateNotNullOrEmpty()]
        [string] $NodeName = 'localhost',

        [ValidateNotNullOrEmpty()]
        [string] $RegistrationKey, #same as the one used to set up pull server in previous configuration

        [ValidateNotNullOrEmpty()]
        [string] $ServerName = 'localhost' #node 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" # notice it is https
            RegistrationKey    = $RegistrationKey
            ConfigurationNames = @('ClientConfig')
        }

        ReportServerWeb CONTOSO-PullSrv
        {
            ServerURL       = "https://$ServerName`:8080/PSDSCPullServer.svc" # notice it is https
            RegistrationKey = $RegistrationKey
        }
    }
}

Sample_MetaConfigurationToRegisterWithLessSecurePullServer -RegistrationKey $RegistrationKey -OutputPath c:\Configs\TargetNodes

Not

ReportServerWeb bölümü, raporlama verilerini çekme sunucusuna göndermesine olanak sağlar.

Meta yapılandırma dosyasında ConfigurationID özelliğinin olmaması, çekme sunucusunun çekme sunucusu protokolünün V2 sürümünü desteklemektedir ve 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 anlamına gelir ve kayıt işlemi yoktur.

Not

Bir PUSH senaryosunda, geçerli sürümde, hiçbir zaman çekme sunucusuna kayıtlı düğümlerin meta yapılandırma dosyasında ConfigurationID özelliğini tanımlamayı gerekli kılan bir hata vardır. Bu, V1 Çekme Sunucusu protokolünü 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ında ConfigurationPath ve ModulePath özellikleri tarafından tanımlanan klasörler, çekecek hedef düğümler için kullanılabilir olacak modülleri ve yapılandırmaları yer almaktadır. Bu dosyaların, çekme sunucusunun düzgün şekilde işlemesi için belirli bir biçimde olması gerekir.

DSC kaynak modülü paket biçimi

Her kaynak modülünün sıkıştırılmış ve aşağıdaki modele göre adlandırılmış olması gerekir {Module Name}_{Module Version}.zip .

Örneğin, xWebAdminstration adlı bir modülün Modül sürümü 3.1.2.0 olarak adlandırılır 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 ' de tek bir dizinde birden çok modül sürümü desteğiyle eklenen modül biçimi desteklenmez. Diğer bir deyişle, çekme sunucusu ile kullanım için DSC kaynak modüllerini paketlemeden önce dizin yapısında küçük bir değişiklik yapmanız gerekir. WMF 5,0 ' de DSC kaynağını içeren modüllerin varsayılan biçimi vardır {Module Folder}\{Module Version}\DscResources\{DSC Resource Folder}\ . Çekme sunucusuna paketlemeden önce, yol haline gelmesi için {module sürümü} klasörünü kaldırın {Module Folder}\DscResources\{DSC Resource Folder}\ . Bu değişiklik ile, yukarıda açıklandığı gibi klasörü zip halinde ve bu ZIP dosyalarını ModulePath klasörüne yerleştirin.

New-DscChecksum {module zip file}Yeni eklenen modül için bir sağlama toplamı dosyası oluşturmak için kullanın.

Yapılandırma MOF biçimi

Bir hedef düğümdeki LCM 'nin yapılandırmayı doğrulayabilmesi için bir yapılandırma MOF dosyasının bir sağlama toplamı dosyasıyla eşleştirilmesi gerekir. Sağlama toplamı oluşturmak için New-DscChecksum cmdlet 'ini çağırın. Cmdlet 'i, yapılandırma MOF 'nin bulunduğu klasörü belirten bir yol parametresi alır. Cmdlet 'i adlı bir sağlama toplamı dosyası oluşturur ConfigurationMOFName.mof.checksum , burada ConfigurationMOFName yapılandırma mof dosyasının adıdır. Belirtilen klasörde birden fazla yapılandırma MOF dosyası varsa, klasördeki her bir yapılandırma için bir sağlama toplamı oluşturulur. MOF dosyalarını ve ilgili 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

İstek sunucusunu ayarlamayı, doğrulamayı ve yönetmeyi kolaylaştırmak için aşağıdaki araçlar xPSDesiredStateConfiguration modülünün en son sürümüne örnek olarak dahil edilir:

  1. Çekme sunucusunda kullanılmak üzere DSC kaynak modüllerinin ve yapılandırma dosyalarının paketlenmesi için 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
    
  2. Çekme sunucusunu doğrulayan bir betik doğru şekilde yapılandırılır. PullServerSetupTests.ps1.

Community Çekme hizmeti çözümleri

DSC topluluğu, çekme hizmeti protokolünü uygulamak için birden çok çözüm yazdı. Şirket içi ortamlar için, bu teklif çekme hizmeti özellikleri ve artımlı geliştirmeler sayesinde topluluğa katkıda bulunmak için bir fırsat sunar.

İstek temelli istemci yapılandırması

Aşağıdaki konularda, çekme istemcilerinin ayrıntılı olarak ayarlanması açıklanır:

Ayrıca bkz.