Aracılığıyla paylaş


İstenen Durum Yapılandırması Çekme Hizmeti

Önemli

Çekme Sunucusu (Windows Özelliği DSC-Hizmeti), Windows Server'ın desteklenen bir bileşenidir, ancak yeni özellikler veya yetenekler sunma planı yoktur. DSC'nin daha yeni bir sürümünün genel kullanıma sunulduğunu ve Azure İlkesi'nin konuk yapılandırması adlı bir ö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 hibrit makine desteğini de içerir.

Yerel Yapılandırma Yöneticisi (LCM), bir Çekme Hizmeti çözümü tarafından merkezi olarak yönetilebilir. Bu yaklaşımı kullanırken, yönetilen düğüm bir hizmete kaydedilir ve LCM ayarlarında bir yapılandırma atanır. Konfigürasyon ve konfigürasyon için bağımlılık olarak gereken tüm DSC kaynakları makineye indirilir ve konfigürasyonu yönetmek için LCM tarafından kullanılır. Yönetilmekte olan makinenin durumuyla ilgili bilgiler, raporlama için hizmete yüklenir. Bu kavram "çekme hizmeti" olarak adlandırılır.

Çekme hizmeti için mevcut seçenekler şunları içerir:

  • Azure Otomasyonu Desired State Configuration hizmeti
  • Windows Server'da çalışan bir çekme hizmeti
  • Topluluk tarafından sürdürülen açık kaynak çözümler
  • Bir KOBİ 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 Pull Server 500 düğüme kadar
SQL veritabanını kullanan Windows Pull Server 3500 düğüme kadar
Azure Otomasyonu 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 bir üst sınır belirlenmemiştir.

Azure hizmeti, şirket içi düğümleri özel veri merkezlerinde veya Azure ve AWS gibi genel bulutlarda yönetebilir. Sunucuların İnternet'e doğrudan 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.

Çevrimiçi hizmetin şu anda Windows Server'daki çekme hizmetinde kullanılamayan özellikleri şunlardır:

  • Tüm veriler aktarım sırasında ve beklemede ş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önetin
  • Yapılandırmaları istemci düğümlerine merkezi olarak atama
  • Üretime ulaşmadan önce test etmek için yapılandırma değişikliklerini "kanarya grupları" olarak yayınlayın
  • Grafiksel raporlama
    • Ayrıntı düzeyinin DSC kaynak düzeyinde durum ayrıntısı
    • Sorun giderme için istemci makinelerden 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

Bir çekme hizmetini Windows Server'da çalışacak şekilde yapılandırmak mümkündür. Windows Server'da bulunan çekme hizmeti çözümünün yalnızca rapor verilerini bir veritabanına 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, IIS'de DSC yapılandırma dosyalarını hedef düğümler istediğinde hedef düğümler için kullanılabilir hale getirmek için OData arabirimi kullanan bir web hizmetidir.

Çekme sunucusu kullanmak için gereksinimler:

  • Çalışan bir sunucu:
    • WMF/PowerShell 4.0 veya üzeri
    • IIS sunucu rolü
    • DSC Hizmeti
  • İdeal olarak, hedef düğümlerde Yerel Yapılandırma Yöneticisi'ne (LCM) geçirilen kimlik bilgilerinin güvenliğini sağlamak için bir sertifika oluşturmanın bazı yolları

Windows Server'ı çekme hizmetini barındıracak şekilde yapılandırmanın en iyi yolu bir DSC yapılandırması kullanmaktır. Aşağıda örnek bir komut dosyası verilmiştir.

Desteklenen veritabanı sistemleri

Windows Server'ın 17090 sürümünden başlayarak, WMF 5.1 Çekme Hizmeti (Windows Özelliği DSC-Hizmeti) için SQL Server seçeneği için destek içerir. Bu, Azure Otomasyonu DSC'ye geçirilmemiş büyük DSC ortamlarını ölçeklendirmek için yeni bir seçenek sağlar.

Ç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ına bir örnek için önce xDscWebService kaynağını kullanma makalesini okuyun ve ardından GitHub'da 2-xDscWebService_RegistrationUseSQLProvider_Config.ps1 gözden geçirin.

xDscWebService kaynağını kullanma

Web çekme sunucusu kurmanın en kolay yolu, xPSDesiredStateConfiguration modülünde bulunan xDscWebService kaynağını kullanmaktır. Aşağıdaki adımlarda, kaynağın web hizmetini ayarlayan bir Configuration ortamda nasıl kullanılacağı açıklanmaktadır.

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

  2. Kuruluşunuz veya bir kamu yetkilisi içindeki güvenilir bir Sertifika Yetkilisinden DSC Pull sunucusu için bir SSL sertifikası alın. Yetkiliden alınan sertifika genellikle PFX formatındadır.

  3. Sertifikayı, DSC Pull sunucusu olacak düğüme, olması gereken CERT:\LocalMachine\Myvarsayılan konuma yükleyin. Sertifika parmak izini not edin.

  4. Kayıt Anahtarı olarak kullanılacak bir GUID seçin. PowerShell kullanarak bir tane oluşturmak için PS istemine aşağıdakileri girin ve enter tuşuna basın: [guid]::newGuid() veya New-Guid. Bu anahtar, istemci düğümleri tarafından kayıt sırasında kimlik doğrulaması yapmak için paylaşılan bir anahtar olarak kullanılacaktır. Daha fazla bilgi için aşağıdaki Kayıt Anahtarı bölümüne bakın.

  5. PowerShell ISE'de (F5) aşağıdaki yapılandırma betiğini başlatın ( xPSDesiredStateConfiguration modülünün klasörüne olarak Sample_xDscWebServiceRegistration.ps1eklenir).

    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. 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 = 'AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00'
        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 bir yapılandırma kimliği yerine yapılandırma adlarını kullanabilmeleri için sunucuya kaydolmalarına izin vermek için, yukarıdaki yapılandırma tarafından oluşturulan bir kayıt anahtarı, içinde RegistrationKeys.txtadlı C:\Program Files\WindowsPowerShell\DscService bir dosyaya kaydedilir. Kayıt anahtarı, istemci tarafından çekme sunucusuyla ilk kayıt sırasında kullanılan paylaşılan bir gizli kod dizesi olarak işlev görür. İstemci, kayıt başarıyla tamamlandıktan sonra çekme sunucusunda benzersiz bir şekilde 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.

Uyarı

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 kaydolacak herhangi bir hedef düğüm için meta yapılandırmada olması gerekir. Hedef makine başarıyla kaydedildikten sonra aşağıdaki meta yapılandırmada yer alan 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 örnek için '140a952b-b9d6-406b-b416-e0f759c9c0e4'). Kayıt anahtarı değerini her zaman güvenli bir şekilde ele alın, çünkü bunu bilmek herhangi bir hedef makinenin çekme sunucusuna kaydolmasına izin verir.

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

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

        # The name of the pull server, same as $NodeName used in previous configuration
        [ValidateNotNullOrEmpty()]
        [string] $ServerName = 'localhost'
    )

    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

Uyarı

ReportServerWeb bölümü, raporlama verilerinin çekme sunucusuna gönderilmesine izin verir.

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, bir ConfigurationID'nin varlığı, çekme sunucusu protokolünün V1 sürümünün kullanıldığı ve kayıt işlemi olmadığı anlamına gelir.

Uyarı

PUSH senaryosunda, geçerli sürümde bir çekme sunucusuna hiç kaydolmamış düğümler için meta yapılandırma dosyasında bir ConfigurationID özelliği 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ındaki ConfigurationPath ve ModulePath özellikleri tarafından tanımlanan klasörler, hedef düğümlerin çekmesi için kullanılabilir olacak modülleri ve yapılandırmaları yerleştireceğiniz yerdir. Çekme sunucusunun bunları doğru şekilde işleyebilmesi 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>.zipgöre sıkıştırılması ve adlandırılması gerekir.

Örneğin, 3.1.2.0 modül sürümüne sahip xWebAdminstration adlı bir modül .xWebAdministration_3.1.2.0.zip Bir 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 eklenen ve tek bir dizinde birden çok modül sürümü desteği olan modül biçimi desteklenmez. Bu, çekme sunucusuyla kullanılmak üzere DSC kaynak modüllerini paketlemeden önce dizin yapısında küçük bir değişiklik yapmanız gerekeceği anlamına gelir. WMF 5.0'da DSC kaynağını içeren modüllerin varsayılan biçimi 'dir <Module Folder>\<Module Version>\DscResources\<DSC Resource Folder>\. Çekme sunucusu için paketlemeden önce, <Module version> yolun <Module Folder>\DscResources\<DSC Resource Folder>\. Bu değişiklikle, klasörü yukarıda açıklandığı gibi sıkıştırın ve bu zip dosyalarını ModulePath klasörüne yerleştirin.

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

Yapılandırma MOF biçimi

Hedef düğümdeki bir 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, MOF yapılandırmasının bulunduğu klasörü belirten bir Path parametresi alır. Cmdlet, adlı bir sağlama toplamı dosyası ConfigurationMOFName.mof.checksumoluşturur, burada ConfigurationMOFName yapılandırma mof dosyasının adıdır. Belirtilen klasörde birden fazla konfigürasyon MOF dosyası varsa, klasördeki her konfigürasyon 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.

Uyarı

Yapılandırma MOF dosyasını herhangi bir şekilde değiştirirseniz, sağlama toplamı dosyasını da yeniden oluşturmanız gerekir.

Takım Teçhizatı

Çekme sunucusunu ayarlamak, doğrulamak ve yönetmek için xPSDesiredStateConfiguration modülünün en son sürümünde örnek olarak bulunan aşağıdaki araçları kullanın:

  1. Çekme sunucusunda kullanılmak üzere DSC kaynak modüllerinin ve yapılandırma dosyalarının paketlenmesine yardımcı olacak bir modül. PublishModulesAndMofsToPullServer.psm1 (İngilizce). 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 yapılandırılmış. PullServerSetupTests.ps1.

Çekme Hizmeti için Topluluk Çözümleri

DSC topluluğu, çekme hizmeti protokolünü uygulamak için birden çok çözüm yazmıştır. Şirket içi ortamlar için bunlar, çekme hizmeti özellikleri ve artımlı geliştirmelerle topluluğa geri katkıda bulunma fırsatı sunar.

İstemci yapılandırmasını çekme

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

Ayrıca bakınız