Layanan Penarikan Konfigurasi Status yang Diinginkan

Penting

Pull Server (Windows Feature DSC-Service) adalah komponen Windows Server yang didukung namun tidak ada rencana untuk menawarkan fitur atau kemampuan baru. kami ingin Anda tahu bahwa versi DSC yang lebih baru sekarang tersedia secara umum, dikelola oleh fitur Azure Policy konfigurasi tamu bernama. Layanan konfigurasi tamu menggabungkan fitur Ekstensi DSC, Konfigurasi Status Azure Automation, dan fitur yang paling sering diminta dari umpan balik pelanggan. Konfigurasi tamu juga mencakup dukungan komputer hibrid melalui server berkemampuan Arc.

Local Configuration Manager (LCM) dapat dikelola secara terpusat oleh solusi Pull Service. Saat menggunakan pendekatan ini, simpul yang sedang dikelola didaftarkan dengan layanan dan diberi konfigurasi dalam pengaturan LCM. Konfigurasi dan semua sumber daya DSC yang diperlukan sebagai dependensi untuk konfigurasi diunduh ke komputer dan digunakan oleh LCM untuk mengelola konfigurasi. Informasi tentang status komputer yang dikelola diunggah ke layanan untuk pelaporan. Konsep ini disebut sebagai "layanan penarikan".

Opsi saat ini untuk layanan penarikan meliputi:

  • layanan Konfigurasi Status yang Diinginkan Azure Automation
  • Layanan penarikan yang berjalan di Windows Server
  • Solusi sumber terbuka yang dikelola komunitas
  • Berbagi SMB

Skala yang direkomendasikan untuk setiap solusi adalah sebagai berikut:

Solusi Simpul klien
Windows Pull Server menggunakan database MDB/ESENT Hingga 500 simpul
Windows Pull Server menggunakan database SQL Hingga 3500 simpul
Azure Automation DSC Baik lingkungan kecil maupun besar

Solusi yang direkomendasikan, dan opsi dengan fitur terbanyak yang tersedia, adalah Azure Automation DSC. Batas atas untuk jumlah simpul per Akun Automation belum diidentifikasi.

Layanan Azure dapat mengelola simpul lokal di pusat data privat, atau di cloud publik seperti Azure dan AWS. Untuk lingkungan privat di mana server tidak dapat langsung terhubung ke Internet, pertimbangkan untuk membatasi lalu lintas keluar hanya ke rentang IP Azure yang diterbitkan (lihat Rentang IP Pusat Data Azure).

Fitur layanan online yang saat ini tidak tersedia dalam layanan penarikan di Windows Server meliputi:

  • Semua data dienkripsi saat transit dan saat tidak aktif
  • Sertifikat klien dibuat dan dikelola secara otomatis
  • Penyimpanan rahasia untuk mengelola kata sandi/kredensial secara terpusat, atau variabel seperti nama server atau string koneksi
  • Mengelola konfigurasi LCM simpul secara terpusat
  • Menetapkan konfigurasi secara terpusat ke simpul klien
  • Merilis perubahan konfigurasi ke "grup kenari" untuk pengujian sebelum mencapai produksi
  • Pelaporan grafis
    • Detail status di tingkat granularitas sumber daya DSC
    • Pesan kesalahan Verbose dari komputer klien untuk pemecahan masalah
  • Integrasi dengan Azure Log Analytics untuk pemberitahuan, tugas otomatis, aplikasi Android/iOS untuk pelaporan dan pemberitahuan

Layanan penarikan DSC di Windows Server

Dimungkinkan untuk mengonfigurasi layanan penarikan untuk berjalan di Windows Server. Perhatikan bahwa solusi layanan penarikan yang disertakan dalam Windows Server hanya mencakup kemampuan menyimpan konfigurasi dan modul untuk mengunduh dan menangkap data laporan ke dalam database. Ini tidak termasuk banyak kemampuan yang ditawarkan oleh layanan di Azure dan sebagainya, bukan alat yang baik untuk mengevaluasi bagaimana layanan akan digunakan.

Layanan penarikan yang ditawarkan di Windows Server adalah layanan web di IIS yang menggunakan antarmuka OData untuk membuat file konfigurasi DSC tersedia untuk menargetkan simpul ketika simpul tersebut memintanya.

Persyaratan untuk menggunakan server penarikan:

  • Server yang berjalan:
    • WMF/PowerShell 4.0 atau yang lebih tinggi
    • Peran server IIS
    • Layanan DSC
  • Idealnya, beberapa cara untuk membuat sertifikat, untuk mengamankan kredensial yang diteruskan ke Configuration Manager Lokal (LCM) pada simpul target

Cara terbaik untuk mengonfigurasi Windows Server ke layanan penarikan host adalah dengan menggunakan konfigurasi DSC. Contoh skrip disediakan di bawah ini.

Sistem database yang didukung

Format Metafile Windows 4.0 WMF 5.0 Format Metafile Windows 5.1 WMF 5.1 (Windows Server Insider Preview 17090)
MDB ESENT (Default), MDB ESENT (Default), MDB ESENT (Default), SQL Server, MDB

Mulai rilis 17090 Windows Server, SQL Server adalah opsi yang didukung untuk Pull Service (Windows Feature DSC-Service). Ini menyediakan opsi baru untuk menskalakan lingkungan DSC besar yang belum bermigrasi ke Azure Automation DSC.

Catatan

dukungan SQL Server tidak akan ditambahkan ke versi WMF 5.1 sebelumnya (atau yang lebih lama) dan hanya akan tersedia pada versi Windows Server yang lebih besar dari atau sama dengan 17090.

Untuk mengonfigurasi server penarikan untuk menggunakan SQL Server, atur SqlProvider ke $true dan SqlConnectionString ke String Koneksi SQL Server yang valid. Untuk informasi selengkapnya, lihat String Koneksi SqlClient. Untuk contoh konfigurasi SQL Server dengan xDscWebService, pertama-tama baca Menggunakan sumber daya xDscWebService lalu tinjau 2-xDscWebService_RegistrationUseSQLProvider_Config.ps1 di GitHub.

Menggunakan sumber daya xDscWebService

Cara termampu untuk menyiapkan server penarikan web adalah dengan menggunakan sumber daya xDscWebService , yang disertakan dalam modul xPSDesiredStateConfiguration . Langkah-langkah berikut menjelaskan cara menggunakan sumber daya dalam Configuration yang menyiapkan layanan web.

  1. Panggil cmdlet Install-Module untuk menginstal modul xPSDesiredStateConfiguration .

    Catatan

    Install-Module disertakan dalam modul PowerShellGet , yang disertakan dalam PowerShell 5.0 dan yang lebih tinggi.

  2. Dapatkan sertifikat SSL untuk server Penarikan DSC dari Otoritas Sertifikat tepercaya, baik dalam organisasi Anda atau otoritas publik. Sertifikat yang diterima dari otoritas biasanya dalam format PFX.

  3. Instal sertifikat pada simpul yang akan menjadi server Penarikan DSC di lokasi default, yang seharusnya CERT:\LocalMachine\My.

    • Catat thumbprint sertifikat.
  4. Pilih GUID yang akan digunakan sebagai Kunci Pendaftaran. Untuk membuatnya menggunakan PowerShell, masukkan yang berikut ini di perintah PS dan tekan enter: [guid]::newGuid() atau New-Guid. Kunci ini akan digunakan oleh simpul klien sebagai kunci bersama untuk mengautentikasi selama pendaftaran. Untuk informasi selengkapnya, lihat bagian Kunci Pendaftaran di bawah ini.

  5. Dalam ISE PowerShell, mulai (F5) skrip konfigurasi berikut (disertakan dalam folder modul xPSDesiredStateConfiguration sebagai Sample_xDscWebServiceRegistration.ps1) . Skrip ini menyiapkan server penarikan.

    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. Jalankan konfigurasi, melewati thumbprint sertifikat SSL sebagai parameter certificateThumbPrint dan kunci pendaftaran GUID sebagai parameter RegistrationKey :

    # 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
    

Kunci Pendaftaran

Untuk mengizinkan simpul klien mendaftar ke server sehingga mereka dapat menggunakan nama konfigurasi alih-alih ID konfigurasi, kunci pendaftaran yang dibuat oleh konfigurasi di atas disimpan dalam file bernama RegistrationKeys.txt di C:\Program Files\WindowsPowerShell\DscService. Kunci pendaftaran berfungsi sebagai rahasia bersama yang digunakan selama pendaftaran awal oleh klien dengan server penarikan. Klien akan menghasilkan sertifikat yang ditandatangani sendiri yang digunakan untuk mengautentikasi secara unik ke server penarikan setelah pendaftaran berhasil diselesaikan. Thumbprint sertifikat ini disimpan secara lokal dan terkait dengan URL server penarikan.

Catatan

Kunci pendaftaran tidak didukung di PowerShell 4.0.

Untuk mengonfigurasi simpul untuk mengautentikasi dengan server penarikan, kunci pendaftaran harus berada dalam metakonfigurasi untuk simpul target apa pun yang akan mendaftar ke server penarikan ini. Perhatikan bahwa RegistrationKey dalam metakonfigurasi di bawah ini dihapus setelah komputer target berhasil didaftarkan, dan bahwa nilai harus cocok dengan nilai yang disimpan dalam RegistrationKeys.txt file di server penarikan ('140a952b-b9d6-406b-b416-e0f759c9c0e4' untuk contoh ini). Selalu perlakukan nilai kunci pendaftaran dengan aman, karena mengetahui hal itu memungkinkan komputer target untuk mendaftar ke server penarikan.

[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

Catatan

Bagian ReportServerWeb memungkinkan data pelaporan dikirim ke server penarikan.

Kurangnya properti ConfigurationID dalam file metakonfigurasi secara implisit berarti bahwa server penarikan mendukung versi V2 dari protokol server penarikan sehingga pendaftaran awal diperlukan. Sebaliknya, kehadiran ConfigurationID berarti bahwa versi V1 dari protokol server penarikan digunakan dan tidak ada pemrosesan pendaftaran.

Catatan

Dalam skenario PUSH, bug ada dalam rilis saat ini yang membuatnya perlu untuk menentukan properti ConfigurationID dalam file metakonfigurasi untuk simpul yang belum pernah terdaftar dengan server penarikan. Ini akan memaksa protokol V1 Pull Server dan menghindari pesan kegagalan pendaftaran.

Menempatkan konfigurasi dan sumber daya

Setelah penyiapan server penarikan selesai, folder yang ditentukan oleh properti ConfigurationPath dan ModulePath dalam konfigurasi server penarikan adalah tempat Anda akan menempatkan modul dan konfigurasi yang akan tersedia untuk simpul target untuk ditarik. File-file ini harus dalam format tertentu agar server penarikan memprosesnya dengan benar.

Format paket modul sumber daya DSC

Setiap modul sumber daya perlu di-zip dan diberi nama sesuai dengan pola {Module Name}_{Module Version}.zipberikut .

Misalnya, modul bernama xWebAdminstration dengan versi modul 3.1.2.0 akan diberi nama xWebAdministration_3.1.2.0.zip. Setiap versi modul harus dimuat dalam satu file zip. Karena hanya ada satu versi sumber daya di setiap file zip, format modul yang ditambahkan dalam WMF 5.0 dengan dukungan untuk beberapa versi modul dalam satu direktori tidak didukung. Ini berarti bahwa sebelum mengemas modul sumber daya DSC untuk digunakan dengan server penarikan, Anda harus membuat perubahan kecil pada struktur direktori. Format default modul yang berisi sumber daya DSC di WMF 5.0 adalah {Module Folder}\{Module Version}\DscResources\{DSC Resource Folder}\. Sebelum mengemas untuk server penarikan, hapus folder {Module version} sehingga jalur menjadi {Module Folder}\DscResources\{DSC Resource Folder}\. Dengan perubahan ini, zip folder seperti yang dijelaskan di atas dan tempatkan file zip ini di folder ModulePath .

Gunakan New-DscChecksum {module zip file} untuk membuat file checksum untuk modul yang baru ditambahkan.

Format MOF konfigurasi

File MOF konfigurasi perlu dipasangkan dengan file checksum sehingga LCM pada simpul target dapat memvalidasi konfigurasi. Untuk membuat checksum, panggil cmdlet New-DscChecksum . Cmdlet mengambil parameter Jalur yang menentukan folder tempat MOF konfigurasi berada. Cmdlet membuat file checksum bernama ConfigurationMOFName.mof.checksum, di mana ConfigurationMOFName adalah nama file mof konfigurasi. Jika ada lebih dari satu file MOF konfigurasi di folder yang ditentukan, checksum dibuat untuk setiap konfigurasi di folder. Tempatkan file MOF dan file checksum terkait di folder ConfigurationPath .

Catatan

Jika Anda mengubah file MOF konfigurasi dengan cara apa pun, Anda juga harus membuat ulang file checksum.

Alat

Untuk membuat pengaturan, memvalidasi, dan mengelola server penarikan lebih mudah, alat berikut disertakan sebagai contoh dalam versi terbaru modul xPSDesiredStateConfiguration:

  1. Modul yang akan membantu modul sumber daya DSC pengemasan dan file konfigurasi untuk digunakan di server penarikan. PublishModulesAndMofsToPullServer.psm1. Contoh di bawah ini:

    # 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. Skrip yang memvalidasi server penarikan dikonfigurasi dengan benar. PullServerSetupTests.ps1.

Solusi Komunitas untuk Layanan Pull

Komunitas DSC telah menulis beberapa solusi untuk menerapkan protokol layanan penarikan. Untuk lingkungan lokal, ini menawarkan kemampuan layanan penarikan dan kesempatan untuk berkontribusi kembali kepada komunitas dengan peningkatan inkremental.

Menarik konfigurasi klien

Topik berikut menjelaskan pengaturan klien penarikan secara rinci:

Lihat juga