Bagikan melalui


Menyiapkan server penarikan DSC SMB

Berlaku Untuk: Windows PowerShell 4.0, Windows PowerShell 5.0

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.

Server penarikan DSC SMB adalah komputer yang menghosting berbagi file SMB yang membuat file konfigurasi DSC dan sumber daya DSC tersedia untuk menargetkan simpul ketika simpul tersebut memintanya.

Untuk menggunakan server penarikan SMB untuk DSC, Anda harus:

  • Menyiapkan berbagi file SMB di server yang menjalankan PowerShell 4.0 atau yang lebih tinggi
  • Mengonfigurasi klien yang menjalankan PowerShell 4.0 atau yang lebih tinggi untuk menarik dari berbagi SMB tersebut

Menggunakan sumber daya xSmbShare untuk membuat berbagi file SMB

Ada sejumlah cara untuk menyiapkan berbagi file SMB, tetapi mari kita lihat bagaimana Anda dapat melakukan ini dengan menggunakan DSC.

Menginstal sumber daya xSmbShare

Panggil cmdlet Install-Module untuk menginstal modul xSmbShare .

Catatan

Install-Module disertakan dalam modul PowerShellGet , yang disertakan dalam PowerShell 5.0. xSmbShare berisi sumber daya DSC xSmbShare, yang dapat digunakan untuk membuat berbagi file SMB.

Membuat direktori dan berbagi file

Konfigurasi berikut menggunakan sumber daya File untuk membuat direktori untuk berbagi dan sumber daya xSmbShare untuk menyiapkan berbagi SMB:

Configuration SmbShare
{
    Import-DscResource -ModuleName PSDesiredStateConfiguration
    Import-DscResource -ModuleName xSmbShare

    Node localhost
    {

        File CreateFolder
        {
            DestinationPath = 'C:\DscSmbShare'
            Type = 'Directory'
            Ensure = 'Present'
        }

        xSMBShare CreateShare
        {
            Name = 'DscSmbShare'
            Path = 'C:\DscSmbShare'
            FullAccess = 'administrator'
            ReadAccess = 'myDomain\Contoso-Server$'
            FolderEnumerationMode = 'AccessBased'
            Ensure = 'Present'
            DependsOn = '[File]CreateFolder'
        }
    }
}

Konfigurasi membuat direktori C:\DscSmbShare, jika belum ada, lalu menggunakan direktori tersebut sebagai berbagi file SMB. FullAccess harus diberikan ke akun apa pun yang perlu menulis atau menghapus dari berbagi file. ReadAccess harus diberikan kepada simpul klien apa pun yang mendapatkan konfigurasi dan/atau sumber daya DSC dari berbagi.

Catatan

DSC berjalan sebagai akun sistem secara default, sehingga komputer itu sendiri harus memiliki akses ke berbagi.

Berikan akses sistem file ke klien penarikan

Memberikan ReadAccess ke simpul klien memungkinkan simpul tersebut untuk mengakses berbagi SMB, tetapi tidak ke file atau folder dalam berbagi tersebut. Anda harus secara eksplisit memberikan akses simpul klien ke folder dan subfolder berbagi SMB. Kita dapat melakukan ini dengan DSC dengan menambahkan menggunakan sumber daya cNtfsPermissionEntry , yang terkandung dalam modul CNtfsAccessControl . Konfigurasi berikut menambahkan blok cNtfsPermissionEntry yang memberikan akses ReadAndExecute ke klien penarikan:

Configuration DSCSMB
{
    Import-DscResource -ModuleName PSDesiredStateConfiguration
    Import-DscResource -ModuleName xSmbShare
    Import-DscResource -ModuleName cNtfsAccessControl

    Node localhost
    {

        File CreateFolder
        {
            DestinationPath = 'C:\DscSmbShare'
            Type = 'Directory'
            Ensure = 'Present'
        }

        xSMBShare CreateShare
        {
            Name = 'DscSmbShare'
            Path = 'C:\DscSmbShare'
            FullAccess = 'administrator'
            ReadAccess = 'myDomain\Contoso-Server$'
            FolderEnumerationMode = 'AccessBased'
            Ensure = 'Present'
            DependsOn = '[File]CreateFolder'
        }

        cNtfsPermissionEntry PermissionSet1
        {
            Ensure = 'Present'
            Path = 'C:\DscSmbShare'
            Principal = 'myDomain\Contoso-Server$'
            AccessControlInformation = @(
                cNtfsAccessControlInformation
                {
                    AccessControlType = 'Allow'
                    FileSystemRights = 'ReadAndExecute'
                    Inheritance = 'ThisFolderSubfoldersAndFiles'
                    NoPropagateInherit = $false
                }
            )
            DependsOn = '[File]CreateFolder'
        }
    }
}

Menempatkan konfigurasi dan sumber daya

Simpan file MOF konfigurasi dan/atau sumber daya DSC apa pun yang Anda inginkan agar simpul klien ditarik di folder berbagi SMB.

File MOF konfigurasi apa pun harus diberi nama <ConfigurationID>.mof, di mana <ConfigurationID> adalah nilai properti ConfigurationID dari LCM simpul target. Untuk informasi selengkapnya tentang menyiapkan klien penarikan, lihat Menyiapkan klien penarikan menggunakan ID konfigurasi.

Catatan

Anda harus menggunakan ID konfigurasi jika Anda menggunakan server penarikan SMB. Nama konfigurasi tidak didukung untuk SMB.

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.2.1.0.zip. Setiap versi modul harus dimuat dalam satu file zip. Versi terpisah modul dalam file zip tidak didukung. Sebelum mengemas modul sumber daya DSC untuk digunakan dengan server penarikan, Anda perlu 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, cukup hapus {Module version} folder sehingga jalurnya menjadi {Module Folder}\DscResources\{DSC Resource Folder}\. Dengan perubahan ini, zip folder seperti yang dijelaskan di atas dan tempatkan file zip ini di folder berbagi SMB.

Membuat checksum MOF

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 Path parameter 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.

File checksum harus ada di direktori yang sama dengan file MOF konfigurasi ($env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration secara default), dan memiliki nama yang sama dengan .checksum ekstensi yang ditambahkan.

Catatan

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

Menyiapkan klien penarikan untuk SMB

Untuk menyiapkan klien yang menarik konfigurasi dan/atau sumber daya dari berbagi SMB, Anda mengonfigurasi Configuration Manager Lokal (LCM) klien dengan blok ConfigurationRepositoryShare dan ResourceRepositoryShare yang menentukan berbagi untuk menarik konfigurasi dan sumber daya DSC.

Untuk informasi selengkapnya tentang mengonfigurasi LCM, lihat Menyiapkan klien penarikan menggunakan ID konfigurasi.

Catatan

Untuk kesederhanaan, contoh ini menggunakan PSDscAllowPlainTextPassword untuk memungkinkan meneruskan kata sandi teks biasa ke parameter Kredensial . Untuk informasi tentang meneruskan kredensial dengan lebih aman, lihat Opsi Kredensial di Data Konfigurasi. Anda HARUS menentukan ConfigurationID di blok Pengaturan metakonfigurasi untuk server penarikan SMB, bahkan jika Anda hanya menarik sumber daya.

$secpasswd = ConvertTo-SecureString "Pass1Word" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("TestUser", $secpasswd)

[DSCLocalConfigurationManager()]
configuration SmbCredTest
{
    Node $AllNodes.NodeName
    {
        Settings
        {
            RefreshMode = 'Pull'
            RefreshFrequencyMins = 30
            RebootNodeIfNeeded = $true
            ConfigurationID    = '16db7357-9083-4806-a80c-ebbaf4acd6c1'
        }

         ConfigurationRepositoryShare SmbConfigShare
        {
            SourcePath = '\\WIN-E0TRU6U11B1\DscSmbShare'
            Credential = $mycreds
        }

        ResourceRepositoryShare SmbResourceShare
        {
            SourcePath = '\\WIN-E0TRU6U11B1\DscSmbShare'
            Credential = $mycreds

        }
    }
}

$ConfigurationData = @{
    AllNodes = @(
        @{
            #the "*" means "all nodes named in ConfigData" so we don't have to repeat ourselves
            NodeName="localhost"
            PSDscAllowPlainTextPassword = $true
        })
}

Pengakuan

Terima kasih khusus kepada individu-individu berikut:

  • Mike F. Robbins, yang postingannya menggunakan SMB untuk DSC membantu menginformasikan konten dalam topik ini. Blognya ada di Mike F Robbins.
  • Serge Nikalaichyk, yang menulis modul cNtfsAccessControl . Sumber untuk modul ini ada di cNtfsAccessControl.

Lihat juga

Ringkasan Konfigurasi Status yang Diinginkan Windows PowerShell

Memberlakukan konfigurasi

Menyiapkan klien penarikan menggunakan ID konfigurasi