DSC SMB çekme sunucusu ayarlama
Ş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 özellikler veya özellikler sunma planı yoktur. DSC'nin daha yeni bir sürümünün artık genel kullanıma sunulduğu ve konuk yapılandırması 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ğini de içerir.
DSC SMB çekme sunucusu, DSC yapılandırma dosyalarının ve DSC kaynaklarının, bu düğümler tarafından istendiğinde hedef düğümler için kullanılabilir olmasını sağlayan SMB dosya paylaşımlarını barındıran bir bilgisayardır.
DSC için SMB çekme sunucusu kullanmak için şunları yapmak gerekir:
- PowerShell 4.0 veya üzerini çalıştıran bir sunucuda SMB dosya paylaşımı ayarlama
- PowerShell 4.0 veya üzerini çalıştıran bir istemciyi bu SMB paylaşımından çekecek şekilde yapılandırma
SMB dosya paylaşımı oluşturmak için xSmbShare kaynağını kullanma
SMB dosya paylaşımını ayarlamanın çeşitli yolları vardır, ancak DSC kullanarak bunu nasıl yapabileceğinize bakalım.
xSmbShare kaynağını yükleme
xSmbShare modülünü yüklemek için Install-Module cmdlet'ini çağırın.
Not
Install-Module
, PowerShell 5.0'da bulunan PowerShellGet modülüne dahildir.
xSmbShare, SMB dosya paylaşımı oluşturmak için kullanılabilecek xSmbShare DSC kaynağını içerir.
Dizin ve dosya paylaşımı oluşturma
Aşağıdaki yapılandırma, paylaşım için dizini oluşturmak için Dosya kaynağını ve SMB paylaşımını ayarlamak için xSmbShare kaynağını kullanır:
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'
}
}
}
Yapılandırma, henüz yoksa dizinini C:\DscSmbShare
oluşturur ve ardından bu dizini SMB dosya paylaşımı olarak kullanır. Dosya paylaşımına yazması veya dosya paylaşımından silinmesi gereken tüm hesaplara FullAccess verilmelidir. ReadAccess , paylaşımdan yapılandırmaları ve/veya DSC kaynaklarını alan tüm istemci düğümlerine verilmelidir.
Not
DSC varsayılan olarak sistem hesabı olarak çalışır, bu nedenle bilgisayarın paylaşıma erişimi olmalıdır.
Dosya sistemine çekme istemcisine erişim verme
ReadAccess'in bir istemci düğümüne verilmesi, düğümün SMB paylaşımına erişmesine izin verir, ancak bu paylaşımdaki dosya veya klasörlere erişmez. İstemci düğümlerine SMB paylaşım klasörü ve alt klasörleri için açıkça erişim vermalısınız. Bunu, CNtfsAccessControl modülünde yer alan cNtfsPermissionEntry kaynağını kullanarak ekleyerek DSC ile yapabiliriz. Aşağıdaki yapılandırma, çekme istemcisine ReadAndExecute erişimi veren bir cNtfsPermissionEntry bloğu ekler:
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'
}
}
}
Yapılandırmaları ve kaynakları yerleştirme
İstemci düğümlerinin SMB paylaşım klasörüne çekmesini istediğiniz tüm yapılandırma MOF dosyalarını ve/veya DSC kaynaklarını kaydedin.
Herhangi bir yapılandırma MOF dosyası, hedef düğümün LCM'sinin ConfigurationID özelliğinin değeri olan olarak adlandırılmalıdır<ConfigurationID>.mof
<ConfigurationID>
. Çekme istemcilerini ayarlama hakkında daha fazla bilgi için bkz. Yapılandırma kimliğini kullanarak çekme istemcisi ayarlama.
Not
SMB çekme sunucusu kullanıyorsanız yapılandırma kimliklerini kullanmanız gerekir. Yapılandırma adları SMB için desteklenmez.
Her kaynak modülünün aşağıdaki desene {Module Name}_{Module Version}.zip
göre sıkıştırılmış ve adlandırılmış olması gerekir. Örneğin, 3.1.2.0 modül sürümüne sahip xWebAdminstration adlı modül olarak adlandırılır xWebAdministration_3.2.1.0.zip
. Modülün her sürümü tek bir zip dosyasında bulunmalıdır. Zip dosyasındaki modülün ayrı sürümleri desteklenmez.
DSC kaynak modüllerini çekme sunucusuyla kullanmak üzere paketlemeden önce dizin yapısında küçük bir değişiklik yapmanız gerekir.
WMF 5.0'da DSC kaynağı içeren modüllerin varsayılan biçimi şeklindedir {Module Folder}\{Module Version}\DscResources\{DSC Resource Folder}\
.
Çekme sunucusu için paketlemeden önce yolu olması için klasörü kaldırmanız {Module version}
yeterlidir {Module Folder}\DscResources\{DSC Resource Folder}\
. Bu değişiklikle, yukarıda açıklandığı gibi klasörü sıkıştırın ve bu zip dosyalarını SMB paylaşım klasörüne yerleştirin.
MOF sağlama toplamı oluşturma
Hedef düğümdeki LCM'nin yapılandırmayı doğrulayabilmesi için yapılandırma MOF dosyasının sağlama toplamı dosyasıyla eşlenmesi gerekir. Sağlama toplamı oluşturmak için New-DSCCheckSum cmdlet'ini çağırın. cmdlet'i, MOF yapılandırmasının bulunduğu klasörü belirten bir Path
parametre alır. Cmdlet, adlı bir sağlama toplamı dosyası ConfigurationMOFName.mof.checksum
oluşturur; 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 yapılandırma için bir sağlama toplamı oluşturulur.
Sağlama toplamı dosyası, yapılandırma MOF dosyasıyla$env:PROGRAMFILES\WindowsPowerShell\DscService\Configuration
(varsayılan olarak) aynı dizinde bulunmalı ve uzantı eklenmiş olarak .checksum
aynı ada sahip olmalıdır.
Not
Yapılandırma MOF dosyasını herhangi bir şekilde değiştirirseniz sağlama toplamı dosyasını da yeniden oluşturmanız gerekir.
SMB için çekme istemcisi ayarlama
SMB paylaşımından yapılandırmaları ve/veya kaynakları çeken bir istemci ayarlamak için, yapılandırmaların ve DSC kaynaklarının çekildiği paylaşımı belirten ConfigurationRepositoryShare ve ResourceRepositoryShare bloklarıyla istemcinin Yerel Configuration Manager (LCM) yapılandırabilirsiniz.
LCM'yi yapılandırma hakkında daha fazla bilgi için bkz. Yapılandırma kimliğini kullanarak çekme istemcisi ayarlama.
Not
Kolaylık olması için, bu örnekte Credential parametresine düz metin parola geçirilmesine izin vermek için PSDscAllowPlainTextPassword kullanılır. Kimlik bilgilerini daha güvenli bir şekilde geçirme hakkında daha fazla bilgi için bkz. Yapılandırma Verileri'ndeki Kimlik Bilgileri Seçenekleri. Yalnızca kaynak çekiyor olsanız bile SMB çekme sunucusu için meta yapılandırmanın Ayarlar bloğunda bir ConfigurationID belirtmeniz GEREKİr.
$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
})
}
Teşekkürler
Aşağıdaki kişilere özel teşekkürler:
- Mike F. Robbins, DSC için SMB kullanma gönderileri bu konudaki içeriği bilgilendirmeye yardımcı oldu. Blogu Mike F Robbins'te.
- cNtfsAccessControl modülünü yazan Serge Nikalaichyk. Bu modülün kaynağı cNtfsAccessControl konumundadır.