Share via


Çekme sunucusu en iyi uygulamaları

Şunlar için geçerlidir: Windows PowerShell 4.0, Windows PowerShell 5.0

Önemli

Çekme Sunucusu (Windows Özelliği DSC-Hizmeti), Windows Server'ın desteklenen bir bileşenidir, ancak yeni özellik veya özellikler sunma planı yoktur. DSC'nin daha yeni bir sürümünün artık genel kullanıma sunulduğundan ve konuk yapılandırma 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ği de içerir.

Özet: Bu belge, çözüme hazırlayan mühendislere yardımcı olmak için süreç ve genişletilebilirlik özelliklerine yöneliktir. Ayrıntılar, müşteriler tarafından tanımlanan en iyi yöntemleri sağlamalı ve önerilerin gelecekte karşılandığından ve kararlı olarak değerlendirildiğinden emin olmak için ürün ekibi tarafından doğrulanmalıdır.

  • Yazar: Michael Greene
  • Gözden Geçirenler: Ben Gelens, Ravikanth Chaganti, Aleksandar Nikoliç
  • Yayımlanma Tarihi: Nisan 2015

Abstract

Bu belge, Windows PowerShell Desired State Configuration çekme sunucusu uygulamasını planlamış herkese resmi rehberlik sağlamak üzere tasarlanmıştır. Çekme sunucusu, dağıtımının yalnızca dakikalar sürmesi gereken basit bir hizmettir. Bu belge bir dağıtımda kullanılabilecek teknik nasıl yapılır yönergeleri sunsa da, bu belgenin değeri en iyi yöntemler ve dağıtmadan önce nelerin düşünileceğine yönelik bir başvurudur. Okuyucular DSC hakkında temel bilgilere ve DSC dağıtımına dahil edilen bileşenleri açıklamak için kullanılan terimlere sahip olmalıdır. Daha fazla bilgi için Windows PowerShell Desired State Configuration Genel Bakış konusuna bakın. DSC'nin bulut temposunun gelişmesi beklendiğinden, çekme sunucusu da dahil olmak üzere temel teknolojinin de gelişmesi ve yeni özellikler eklemesi beklenir. Bu belge, ekte önceki sürümlere başvurular ve ileriye dönük tasarımları teşvik etmek için gelecekteki görünümlü çözümlere başvurular sağlayan bir sürüm tablosu içerir.

Bu belgenin iki ana bölümü:

  • Yapılandırma Planlaması
  • Yükleme Kılavuzu

Windows Management Framework sürümleri

Bu belgedeki bilgiler Windows Management Framework 5.0'a uygulanacak şekilde tasarlanmıştır. Çekme sunucusu dağıtmak ve çalıştırmak için WMF 5.0 gerekli olmasa da, bu belgenin odak noktası sürüm 5.0'dır.

Windows PowerShell İstenen Durum Yapılandırması

Desired State Configuration (DSC), Ortak Bilgi Modeli'ni (CIM) açıklamak için Yönetilen Nesne Biçimi (MOF) adlı bir endüstri söz dizimi kullanarak yapılandırma verilerini dağıtmayı ve yönetmeyi sağlayan bir yönetim platformudur. Linux ve ağ donanımı işletim sistemleri gibi platformlarda bu standartların daha fazla geliştirilmesi için açık yönetim altyapısı (OMI) açık kaynak bir proje mevcuttur. Daha fazla bilgi için MOF belirtimlerine ve OMI Belgeleri veKaynağı'na bağlanan DMTF sayfasına bakın.

Windows PowerShell, bildirim temelli yapılandırmalar oluşturmak ve yönetmek için kullanabileceğiniz Desired State Configuration için bir dizi dil uzantısı sağlar.

Çekme sunucusu rolü

Çekme sunucusu, hedef düğümlerin erişebileceği yapılandırmaları depolamak için merkezi bir hizmet sağlar.

Çekme sunucusu rolü bir Web Sunucusu örneği veya SMB dosya paylaşımı olarak dağıtılabilir. Web sunucusu özelliği bir OData arabirimi içerir ve isteğe bağlı olarak, yapılandırmalar uygulandıkça başarı veya başarısızlık onayını raporlamak için hedef düğümlere yönelik özellikler içerebilir. Bu işlev, çok sayıda hedef düğümün bulunduğu ortamlarda kullanışlıdır. Çekme sunucusuna işaret edecek bir hedef düğümü (istemci olarak da adlandırılır) yapılandırdıktan sonra en son yapılandırma verileri ve gerekli betikler indirilir ve uygulanır. Bu, tek seferlik bir dağıtım veya çekme sunucusunu büyük ölçekte değişikliği yönetmek için önemli bir varlık haline getiren yeniden oluşan bir iş olarak gerçekleşebilir. Daha fazla bilgi için bkz . Gönderme ve Çekme Yapılandırma Modları.

Yapılandırma planlaması

Herhangi bir kurumsal yazılım dağıtımında, doğru mimariyi planlamaya yardımcı olmak ve dağıtımı tamamlamak için gereken adımlara hazırlıklı olmak için önceden toplanabilir bilgiler vardır. Aşağıdaki bölümlerde hazırlama ve önceden gerçekleşmesi gerekebilecek kuruluş bağlantıları hakkında bilgi sağlanır.

Yazılım gereksinimleri

Çekme sunucusunun dağıtımı için Windows Server'ın DSC Hizmeti özelliği gerekir. Bu özellik Windows Server 2012'de kullanıma sunulmuştur ve devam eden Windows Management Framework (WMF) sürümleri aracılığıyla güncelleştirilmiştir.

Yazılım indirmeleri

Windows Update'dan en son içeriği yüklemeye ek olarak, DSC çekme sunucusunu dağıtmak için en iyi yöntem olarak kabul edilen iki indirme vardır: Windows Management Framework'nin en son sürümü ve çekme sunucusu sağlamayı otomatikleştirmek için bir DSC modülü.

DSC kaynağı

Çekme sunucusu dağıtımı, hizmeti DSC yapılandırma betiği kullanarak sağlayarak basitleştirilebilir. Bu belge, üretime hazır bir sunucu düğümü dağıtmak için kullanılabilecek yapılandırma betiklerini içerir. Yapılandırma betiklerini kullanmak için Windows Server'a dahil olmayan bir DSC modülü gereklidir. Gerekli modül adı, xDscWebService DSC kaynağını içeren xPSDesiredStateConfiguration'dır. xPSDesiredStateConfiguration modülü PowerShell Galerisi indirilebilir.

Install-ModulePowerShellGet modülündeki cmdlet'ini kullanın.

Install-Module xPSDesiredStateConfiguration

PowerShellGet modülü modülü şu şekilde indirir:

C:\Program Files\Windows PowerShell\Modules

Planlama görevi

  • Windows Server 2012 R2 yükleme dosyalarına erişiminiz var mı?
  • Dağıtım ortamının WMF'yi ve modülü çevrimiçi galeriden indirmek için İnternet erişimi olacak mı?
  • İşletim sistemini yükledikten sonra en son güvenlik güncelleştirmelerini nasıl yükleyebilirsiniz?
  • Ortamın güncelleştirmeleri almak için İnternet erişimi olacak mı yoksa yerel bir Windows Server Update Services (WSUS) sunucusu mu olacak?
  • Çevrimdışı ekleme yoluyla güncelleştirmeleri içeren Windows Server yükleme dosyalarına erişiminiz var mı?

Donanım gereksinimleri

Çekme sunucusu dağıtımları hem fiziksel hem de sanal sunucularda desteklenir. Çekme sunucusu için boyutlandırma gereksinimleri, Windows Server 2012 R2 gereksinimleriyle uyumlu hale getirmektedir.

  • CPU: 1,4 GHz 64 bit işlemci
  • Bellek: 512 MB
  • Disk Alanı: 32 GB
  • Ağ: Gigabit Ethernet Bağdaştırıcısı

Planlama görevi

  • Fiziksel donanıma mı yoksa sanallaştırma platformuna mı dağıtacaksınız?
  • Hedef ortamınız için yeni bir sunucu isteme işlemi nedir?
  • Bir sunucunun kullanılabilir duruma gelmesi için ortalama geri dönüş süresi nedir?
  • Hangi boyut sunucusuna istekte bulunacaksınız?

Hesaplar

Çekme sunucusu örneğini dağıtmak için hizmet hesabı gereksinimi yoktur. Ancak, web sitesinin yerel bir kullanıcı hesabı bağlamında çalışabileceği senaryolar vardır. Örneğin, web sitesi içeriği için bir depolama paylaşımına erişme gereksinimi varsa ve Depolama paylaşımını barındıran Windows Server veya cihaz etki alanına katılmamışsa.

DNS kayıtları

İstemcileri çekme sunucusu ortamıyla çalışacak şekilde yapılandırırken kullanmak için bir sunucu adı gerekir. Test ortamlarında genellikle sunucu ana bilgisayar adı kullanılır veya DNS ad çözümlemesi kullanılamıyorsa sunucunun IP adresi kullanılabilir. Üretim ortamlarında veya üretim dağıtımını temsil etmeye yönelik bir laboratuvar ortamında en iyi yöntem dns CNAME kaydı oluşturmaktır.

DNS CNAME, ana bilgisayar (A) kaydınıza başvurmak için bir diğer ad oluşturmanıza olanak tanır. Ek ad kaydının amacı, gelecekte bir değişiklik yapılması gerektiğinde esnekliği artırmaktır. CNAME, istemci yapılandırmasını yalıtmaya yardımcı olabilir, böylece bir çekme sunucusunu değiştirme veya ek çekme sunucuları ekleme gibi sunucu ortamında yapılan değişiklikler, istemci yapılandırmasına karşılık gelen bir değişiklik gerektirmez.

DNS kaydı için bir ad seçerken çözüm mimarisini göz önünde bulundurun. Yük dengeleme kullanılıyorsa, HTTPS üzerinden trafiğin güvenliğini sağlamak için kullanılan sertifikanın DNS kaydıyla aynı adı paylaşması gerekir.

Senaryo en iyi yöntemleri

  • Test Ortamı - Mümkünse planlanan üretim ortamını yeniden oluşturun. Sunucu ana bilgisayar adı basit yapılandırmalar için uygundur. DNS kullanılamıyorsa, ana bilgisayar adı yerine bir IP adresi kullanılabilir.
  • Tek Düğümlü Dağıtım - Sunucu ana bilgisayar adına işaret eden bir DNS CNAME kaydı oluşturun.

Daha fazla bilgi için bkz. Windows Server'da DNS Hepsini Bir Kez Deneme yapılandırma.

Planlama görevi

  • DNS kayıtlarının oluşturulması ve değiştirilmesi için kime başvurabileceğinizi biliyor musunuz?
  • DNS kaydı isteği için ortalama geri dönüş nedir?
  • Sunucular için statik Ana Bilgisayar Adı (A) kayıtları istemeniz gerekiyor mu?
  • CNAME olarak ne istiyorsunuz?
  • Gerekirse, ne tür bir Yük Dengeleme çözümü kullanacaksınız? (ayrıntılar için Yük Dengeleme başlıklı bölüme bakın)

Ortak Anahtar Altyapısı

Günümüzde çoğu kuruluş ağ trafiğinin, özellikle de sunucuların nasıl yapılandırıldığı gibi hassas veriler içeren trafiğin aktarım sırasında doğrulanması ve/veya şifrelenmesini gerektirir. İstemci isteklerini düz metinde kolaylaştıran HTTP kullanarak bir çekme sunucusu dağıtmak mümkün olsa da, HTTPS kullanarak trafiğin güvenliğini sağlamak en iyi yöntemdir. Hizmet , xPSDesiredStateConfiguration DSC kaynağında bir dizi parametre kullanılarak HTTPS kullanacak şekilde yapılandırılabilir.

Çekme sunucusu için HTTPS trafiğinin güvenliğini sağlamaya yönelik sertifika gereksinimleri, diğer HTTPS web sitelerinin güvenliğini sağlamaktan farklı değildir. Windows Server Sertifika Hizmetleri'ndeki Web Sunucusu şablonu gerekli özellikleri karşılar.

Planlama görevi

  • Sertifika istekleri otomatik değilse, sertifika istemek için kiminle iletişime geçmeniz gerekir?
  • İstek için ortalama geri dönüş nedir?
  • Sertifika dosyası size nasıl aktarılacak?
  • Sertifika özel anahtarı size nasıl aktarılacak?
  • Varsayılan süre sonu ne kadardır?
  • Çekme sunucusu ortamı için sertifika adı için kullanabileceğiniz bir DNS adına karar verdiyseniz?

Mimari seçme

Çekme sunucusu, IIS'de barındırılan bir web hizmeti veya SMB dosya paylaşımı kullanılarak dağıtılabilir. Çoğu durumda web hizmeti seçeneği daha fazla esneklik sağlar. HTTPS trafiğinin ağ sınırlarında gezinmesi sık görülürken, SMB trafiği genellikle ağlar arasında filtrelenir veya engellenir. Web hizmeti ayrıca istemcilerin merkezi görünürlük için durumu bir sunucuya geri bildirmesi için bir mekanizma sağlayan bir Uyumluluk Sunucusu veya Web Raporlama Yöneticisi (bu belgenin gelecekteki bir sürümünde ele alınacak her iki konu da) ekleme seçeneği sunar. SMB, ilkenin bir web sunucusunun kullanılmaması gerektiğini belirlediği ortamlar ve bir web sunucusu rolünü istenmeyen hale getiren diğer ortam gereksinimleri için bir seçenek sağlar. Her iki durumda da trafiği imzalama ve şifreleme gereksinimlerini değerlendirmeyi unutmayın. HTTPS, SMB imzalama ve IPSEC ilkeleri dikkate alınması gereken tüm seçeneklerdir.

Yük dengeleme

Web hizmetiyle etkileşim kuran istemciler, tek bir yanıtta döndürülen bilgiler için bir istekte bulunur. Sıralı istek gerekmez, bu nedenle yük dengeleme platformunun oturumların belirli bir noktada tek bir sunucuda tutulmasını sağlaması gerekmez.

Planlama görevi

  • Sunucular arasında trafiğin yük dengelemesi için hangi çözüm kullanılacak?
  • Donanım yük dengeleyici kullanıyorsanız, kim cihaza yeni yapılandırma ekleme isteği alır?
  • Yeni yük dengeli bir web hizmeti yapılandırma isteği için ortalama geri dönüş nedir?
  • İstek için hangi bilgiler gerekli olacak?
  • Ek bir IP istemeniz gerekecek mi yoksa yük dengelemeden sorumlu ekip bunu işleyecek mi?
  • Gereken DNS kayıtlarınız var mı ve bu, yük dengeleme çözümünü yapılandırmakla sorumlu ekip tarafından gerekli olacak mı?
  • Yük dengeleme çözümü, PKI'nın cihaz tarafından işlenmesini mi gerektiriyor yoksa oturum gereksinimleri olmadığı sürece HTTPS trafiğinin yükünü dengeleyebilir mi?

Çekme sunucusunda hazırlama yapılandırmaları ve modülleri

Yapılandırma planlamasının bir parçası olarak, çekme sunucusu tarafından hangi DSC modüllerinin ve yapılandırmaların barındırılacağını düşünmeniz gerekir. Yapılandırma planlaması amacıyla, bir çekme sunucusuna içerik hazırlama ve dağıtma hakkında temel bilgilere sahip olmak önemlidir.

Gelecekte bu bölüm genişletilecek ve DSC Çekme Sunucusu için İşlemler Kılavuzu'na eklenecektir. Kılavuzda, modülleri ve yapılandırmaları otomasyonla zaman içinde yönetmeye yönelik günlük süreç ele alınacaktır.

DSC modülleri

Yapılandırma isteyen istemciler gerekli DSC modüllerine ihtiyaç duyar. Çekme sunucusunun bir işlevi, DSC modüllerinin istemcilere isteğe bağlı dağıtımını otomatikleştirmektir. İlk kez bir çekme sunucusu dağıtıyorsanız, belki de laboratuvar veya kavram kanıtı olarak, büyük olasılıkla DSC modülleri için PowerShell Galerisi veya PowerShell.org GitHub depoları gibi genel depolarda bulunan DSC modüllerine bağımlı olacaksınız.

PowerShell Galerisi gibi güvenilir çevrimiçi kaynaklar için bile, genel bir depodan indirilen tüm modüllerin, üretimde kullanılmadan önce PowerShell deneyimine ve modüllerin kullanılacağı ortam bilgisi olan biri tarafından gözden geçirilmesi gerektiğini unutmamak önemlidir. Bu görevi tamamlarken, modülde belgeler ve örnek betikler gibi kaldırılabilir ek yük olup olmadığını denetlemek için uygun bir zamandır. Bu, modüllerin sunucudan istemciye ağ üzerinden indirileceği ilk istekte istemci başına ağ bant genişliğini azaltır.

Her modülün, modül yükünü içeren ModuleName_Version.zip adlı bir ZIP dosyası olan belirli bir biçimde paketlenmiş olması gerekir. Dosya sunucuya kopyalandıktan sonra bir sağlama toplamı dosyası oluşturulmalıdır. İstemciler sunucuya bağlandığında, DSC modülünün içeriğinin yayımlandıktan sonra değişmediğini doğrulamak için sağlama toplamı kullanılır.

New-DscChecksum -ConfigurationPath .\ -OutPath .\

Planlama görevi

  • Bir test veya laboratuvar ortamı planlıyorsanız hangi senaryoların doğrulanması önemlidir?
  • İhtiyacınız olan her şeyi kapsayan kaynaklar içeren genel kullanıma açık modüller var mı yoksa kendi kaynaklarınızı yazmanız mı gerekiyor?
  • Ortamınızın genel modülleri almak için İnternet erişimi olacak mı?
  • DSC modüllerini gözden geçirmek kimin sorumluluğunda olacak?
  • Üretim ortamı planlıyorsanız DSC modüllerini depolamak için yerel depo olarak ne kullanacaksınız?
  • Merkezi ekip, uygulama ekiplerinden DSC modüllerini kabul edecek mi? İşlem ne olacak?
  • Üretime hazır DSC modüllerinin paketleme, kopyalama ve oluşturma adımlarını kaynak deponuzdan sunucuya otomatikleştirecek misiniz?
  • Otomasyon platformunun yönetiminden ekibiniz de sorumlu olacak mı?

DSC yapılandırmaları

Çekme sunucusunun amacı, DSC yapılandırmalarını istemci düğümlerine dağıtmak için merkezi bir mekanizma sağlamaktır. Yapılandırmalar sunucuda MOF belgeleri olarak depolanır. Her belge benzersiz bir Guid ile adlandırılır. İstemciler bir çekme sunucusuna bağlanacak şekilde yapılandırıldığında, istekte bulunmaları gereken yapılandırma için guid de verilir. Guid tarafından yapılandırmalara başvurulan bu sistem genel benzersizliği garanti eder ve bir yapılandırmanın düğüm başına ayrıntı düzeyiyle veya aynı yapılandırmalara sahip olması gereken birçok sunucuya yayılan bir rol yapılandırması olarak uygulanabilmesi için esnektir.

Guıd

Bir çekme sunucusu dağıtımında düşünürken yapılandırma Guid'lerini planlamak ek dikkate değerdir. Guid'lerin nasıl işlendiğine ilişkin belirli bir gereksinim yoktur ve işlem büyük olasılıkla her ortam için benzersiz olacaktır. İşlem basitten karmaşıka kadar değişebilir: merkezi olarak depolanan CSV dosyası, basit bir SQL tablosu, CMDB veya başka bir araç veya yazılım çözümüyle tümleştirme gerektiren karmaşık bir çözüm. İki genel yaklaşım vardır:

  • Sunucu başına Guid atama — Her sunucu yapılandırmasının ayrı ayrı denetlendiğinin bir ölçüsünü sağlar. Bu, güncelleştirmeler konusunda bir hassasiyet düzeyi sağlar ve az sayıda sunucu içeren ortamlarda iyi çalışabilir.

  • Sunucu rolü başına Guid atama — Web sunucuları gibi aynı işlevi gerçekleştiren tüm sunucular, gerekli yapılandırma verilerine başvurmak için aynı GUID'yi kullanır. Birçok sunucu aynı GUID'yi paylaşıyorsa, yapılandırma değiştiğinde bunların tümünün aynı anda güncelleştirileceğini unutmayın.

    GUID, sunucuların ortamınızda nasıl dağıtıldığı ve yapılandırıldığı hakkında bilgi edinmek için kötü niyetli biri tarafından kullanılabilmesi nedeniyle hassas veriler olarak kabul edilmesi gereken bir şeydir. Daha fazla bilgi için bkz. PowerShell Desired State Configuration Çekme Modu'nda Guid'leri güvenli bir şekilde ayırma.

Planlama görevi

  • Yapılandırmaları hazır olduklarında çekme sunucusu klasörüne kopyalamak kimin sorumluluğunda olacak?
  • Yapılandırmalar bir uygulama ekibi tarafından yazıldıysa, bunları teslim etme işlemi ne olacak?
  • Yapılandırmaları yazıldığı gibi ekipler arasında depolamak için bir depodan yararlanacak mısınız?
  • Yapılandırmaları sunucuya kopyalama ve hazır olduklarında sağlama toplamı oluşturma işlemini otomatikleştirir misiniz?
  • Guid'leri sunuculara veya rollere nasıl eşleyeceksiniz ve bu nerede depolanacak?
  • İstemci makinelerini yapılandırma işlemi olarak neleri kullanacaksınız ve Yapılandırma Guid'lerini oluşturma ve depolama sürecinizle nasıl tümleştirilecek?

Yükleme Kılavuzu

Bu belgede verilen betikler kararlı örneklerdir. Betikleri üretim ortamında yürütmeden önce her zaman dikkatle gözden geçirin.

Önkoşullar

Sunucunuzdaki PowerShell sürümünü doğrulamak için aşağıdaki komutu kullanın.

$PSVersionTable.PSVersion

Mümkünse Windows Management Framework'nin en son sürümüne yükseltin. Ardından aşağıdaki komutu kullanarak modülü indirin xPsDesiredStateConfiguration .

Install-Module xPSDesiredStateConfiguration

Komut, modülü indirmeden önce onayınızı ister.

Yükleme ve yapılandırma betikleri

DSC çekme sunucusunu dağıtmak için en iyi yöntem bir DSC yapılandırma betiği kullanmaktır. Bu belgede hem DSC web hizmetini yapılandıran temel ayarlar hem de DSC web hizmeti de dahil olmak üzere bir Windows Server uçtan uca yapılandıracak gelişmiş ayarlar içeren betikler sunulacaktır.

Not: Şu anda xPSDesiredStateConfiguration DSC modülü sunucunun EN-US yerel ayarı olmasını gerektirir.

Windows Server 2012 için temel yapılandırma

# This is a very basic Configuration to deploy a pull server instance in a lab
# environment on Windows Server 2012.

Configuration PullServer {
Import-DscResource -ModuleName xPSDesiredStateConfiguration

        # Load the Windows Server DSC Service feature
        WindowsFeature DSCServiceFeature
        {
          Ensure = 'Present'
          Name = 'DSC-Service'
        }

        # Use the DSC Resource to simplify deployment of the web service
        xDSCWebService PSDSCPullServer
        {
          Ensure = 'Present'
          EndpointName = 'PSDSCPullServer'
          Port = 8080
          PhysicalPath = "$env:SYSTEMDRIVE\inetpub\wwwroot\PSDSCPullServer"
          CertificateThumbPrint = 'AllowUnencryptedTraffic'
          ModulePath = "$env:PROGRAMFILES\WindowsPowerShell\DscService\Modules"
          ConfigurationPath = "$env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration"
          State = 'Started'
          DependsOn = '[WindowsFeature]DSCServiceFeature'
        }
}
PullServer -OutputPath 'C:\PullServerConfig\'
Start-DscConfiguration -Wait -Force -Verbose -Path 'C:\PullServerConfig\'

Windows Server 2012 R2 için gelişmiş yapılandırma

# This is an advanced Configuration example for Pull Server production deployments
# on Windows Server 2012 R2. Many of the features demonstrated are optional and
# provided to demonstrate how to adapt the Configuration for multiple scenarios
# Select the needed resources based on the requirements for each environment.
# Optional scenarios include:
#      * Reduce footprint to Server Core
#      * Rename server and join domain
#      * Switch from SSL to TLS for HTTPS
#      * Automatically load certificate from Certificate Authority
#      * Locate Modules and Configuration data on remote SMB share
#      * Manage state of default websites in IIS

param (
        [Parameter(Mandatory=$true)]
        [ValidateNotNullorEmpty()]
        [System.String] $ServerName,
        [System.String] $DomainName,
        [System.String] $CARootName,
        [System.String] $CAServerFQDN,
        [System.String] $CertSubject,
        [System.String] $SMBShare,
        [Parameter(Mandatory=$true)]
        [ValidateNotNullorEmpty()]
        [PsCredential] $Credential
    )

Configuration PullServer {
    Import-DscResource -ModuleName xPSDesiredStateConfiguration, xWebAdministration, xCertificate, xComputerManagement
    Node localhost
    {

        # Configure the server to automatically corret configuration drift including reboots if needed.
        LocalConfigurationManager
        {
            ConfigurationMode = 'ApplyAndAutoCorrect'
            RebootNodeifNeeded = $node.RebootNodeifNeeded
            CertificateId = $node.Thumbprint
        }

        # Remove all GUI interfaces so the server has minimum running footprint.
        WindowsFeature ServerCore
        {
            Ensure = 'Absent'
            Name = 'User-Interfaces-Infra'
        }

        # Set the server name and if needed, join a domain. If not joining a domain, remove the DomainName parameter.
        xComputer DomainJoin
        {
            Name = $Node.ServerName
            DomainName = $Node.DomainName
            Credential = $Node.Credential
        }

        # The next series of settings disable SSL and enable TLS, for environments where that is required by policy.
        Registry TLS1_2ServerEnabled
        {
            Ensure = 'Present'
            Key = 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server'
            ValueName = 'Enabled'
            ValueData = 1
            ValueType = 'Dword'
        }

        Registry TLS1_2ServerDisabledByDefault
        {
            Ensure = 'Present'
            Key = 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server'
            ValueName = 'DisabledByDefault'
            ValueData = 0
            ValueType = 'Dword'
        }

        Registry TLS1_2ClientEnabled
        {
            Ensure = 'Present'
            Key = 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client'
            ValueName = 'Enabled'
            ValueData = 1
            ValueType = 'Dword'
        }

        Registry TLS1_2ClientDisabledByDefault
        {
            Ensure = 'Present'
            Key = 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client'
            ValueName = 'DisabledByDefault'
            ValueData = 0
            ValueType = 'Dword'
        }

        Registry SSL2ServerDisabled
        {
            Ensure = 'Present'
            Key = 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server'
            ValueName = 'Enabled'
            ValueData = 0
            ValueType = 'Dword'
        }

        # Install the Windows Server DSC Service feature
        WindowsFeature DSCServiceFeature
        {
            Ensure = 'Present'
            Name = 'DSC-Service'
        }

        # If using a certificate from a local Active Directory Enterprise Root Certificate Authority,
        # complete a request and install the certificate
        xCertReq SSLCert
        {
            CARootName = $Node.CARootName
            CAServerFQDN = $Node.CAServerFQDN
            Subject = $Node.CertSubject
            AutoRenew = $Node.AutoRenew
            Credential = $Node.Credential
        }

        # Use the DSC resource to simplify deployment of the web service.  You might also consider
        # modifying the default port, possibly leveraging port 443 in environments where that is
        # enforced as a standard.
        xDSCWebService PSDSCPullServer
        {
            Ensure = 'Present'
            EndpointName = 'PSDSCPullServer'
            Port = 8080
            PhysicalPath = "$env:SYSTEMDRIVE\inetpub\wwwroot\PSDSCPullServer"
            CertificateThumbPrint = 'CertificateSubject'
            CertificateSubject = $Node.CertSubject
            ModulePath = "$($Node.SMBShare)\DscService\Modules"
            ConfigurationPath = "$($Node.SMBShare)\DscService\Configuration"
            State = 'Started'
            DependsOn = '[WindowsFeature]DSCServiceFeature'
        }

        # Validate web config file contains current DB settings
        xWebConfigKeyValue CorrectDBProvider
        {
            ConfigSection = 'AppSettings'
            Key = 'dbprovider'
            Value = 'System.Data.OleDb'
            WebsitePath = 'IIS:\sites\PSDSCPullServer'
            DependsOn = '[xDSCWebService]PSDSCPullServer'
        }
        xWebConfigKeyValue CorrectDBConnectionStr
        {
            ConfigSection = 'AppSettings'
            Key = 'dbconnectionstr'
            Value = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\WindowsPowerShell\DscService\Devices.mdb;'
            WebsitePath = 'IIS:\sites\PSDSCPullServer'
            DependsOn = '[xDSCWebService]PSDSCPullServer'
        }

        # Stop the default website
        xWebsite StopDefaultSite
        {
            Ensure = 'Present'
            Name = 'Default Web Site'
            State = 'Stopped'
            PhysicalPath = 'C:\inetpub\wwwroot'
            DependsOn = '[WindowsFeature]DSCServiceFeature'
        }
    }
}

$configData = @{
    AllNodes = @(
        @{
            NodeName = 'localhost'
            ServerName = $ServerName
            DomainName = $DomainName
            CARootName = $CARootName
            CAServerFQDN = $CAServerFQDN
            CertSubject = $CertSubject
            AutoRenew = $true
            SMBShare = $SMBShare
            Credential = $Credential
            RebootNodeifNeeded = $true
            CertificateFile = 'c:\PullServerConfig\Cert.cer'
            Thumbprint = 'B9A39921918B466EB1ADF2509E00F5DECB2EFDA9'
            }
        )
    }

PullServer -ConfigurationData $configData -OutputPath 'C:\PullServerConfig\'
Set-DscLocalConfigurationManager -ComputerName localhost -Path 'C:\PullServerConfig\'
Start-DscConfiguration -Wait -Force -Verbose -Path 'C:\PullServerConfig\'

# .\Script.ps1 -ServerName web1 -domainname 'test.pha' -carootname 'test-dc01-ca' -caserverfqdn 'dc01.test.pha' -certsubject 'CN=service.test.pha' -smbshare '\\sofs1.test.pha\share'

Çekme sunucusu işlevselliğini doğrulama

# This function is meant to simplify a check against a DSC pull server. If you do not use the
# default service URL, you will need to adjust accordingly.
function Verify-DSCPullServer ($fqdn) {
    ([xml](Invoke-WebRequest "https://$($fqdn):8080/psdscpullserver.svc" | % Content)).service.workspace.collection.href
}

Verify-DSCPullServer 'INSERT SERVER FQDN'
Expected Result:
Action
Module
StatusReport
Node

İstemcileri yapılandırma

Configuration PullClient {
    param(
        $ID,
        $Server
    )
    LocalConfigurationManager
    {
        ConfigurationID = $ID;
        RefreshMode = 'PULL';
        DownloadManagerName = 'WebDownloadManager';
        RebootNodeIfNeeded = $true;
        RefreshFrequencyMins = 30;
        ConfigurationModeFrequencyMins = 15;
        ConfigurationMode = 'ApplyAndAutoCorrect';
        DownloadManagerCustomData = @{
            ServerUrl = "http://"+$Server+":8080/PSDSCPullServer.svc"
            AllowUnsecureConnection = $true
        }
    }
}

PullClient -ID 'INSERTGUID' -Server 'INSERTSERVER' -Output 'C:\DSCConfig\'
Set-DscLocalConfigurationManager -ComputerName 'Localhost' -Path 'C:\DSCConfig\' -Verbose

Ek başvurular, kod parçacıkları ve örnekler

Bu örnekte, test için istemci bağlantısının nasıl el ile başlatıldığı (WMF5 gerektirir) gösterilmektedir.

Update-DscConfiguration -Wait -Verbose

Add-DnsServerResourceRecordName cmdlet'i, DNS bölgesine tür CNAME kaydı eklemek için kullanılır.

Sağlama Toplamı Oluşturmak ve DSC MOF'yi SMB Çekme Sunucusuna Yayımlamak için PowerShell İşlevi, gerekli sağlama toplamını otomatik olarak oluşturur ve ardından hem MOF yapılandırmasını hem de sağlama toplamı dosyalarını SMB çekme sunucusuna kopyalar.

Ek - ODATA hizmeti veri dosyası türlerini anlama

Veri dosyası, OData web hizmetini içeren bir çekme sunucusunun dağıtımı sırasında bilgi oluşturmak için depolanır. Dosya türü, aşağıda açıklandığı gibi işletim sistemine bağlıdır.

  • Windows Server 2012 - Dosya türü her zaman.mdb
  • Windows Server 2012 R2 - Yapılandırmada belirtilmemişse .mdb dosya türü varsayılan olarak .edb olarak ayarlanır

Çekme Sunucusu yüklemek için gelişmiş örnek betiğinde , dosya türünün neden olduğu hata olasılığını önlemek için dosya ayarlarını otomatik olarak denetlemeye web.config ilişkin bir örnek de bulabilirsiniz.