Bileşik kaynaklar: DSC yapılandırmasını kaynak olarak kullanma
Şunlar için geçerlidir: Windows PowerShell 4.0, Windows PowerShell 5.0
Gerçek dünyada yapılandırmalar uzun ve karmaşık hale gelebilir, birçok farklı kaynağı çağırabilir ve çok sayıda özellik ayarlayabilir. Bu karmaşıklığı gidermeye yardımcı olmak için, diğer yapılandırmalar için kaynak olarak Windows PowerShell Desired State Configuration (DSC) yapılandırmasını kullanabilirsiniz. Buna bileşik kaynak adı verilir. Bileşik kaynak, parametreleri alan bir DSC yapılandırmasıdır. Yapılandırmanın parametreleri, kaynağın özellikleri olarak davranır.
Yapılandırma, uzantılı .schema.psm1
bir dosya olarak kaydedilir. Tipik bir DSC kaynağında hem MOF şemasının hem de kaynak betiğinin yerini alır. DSC kaynakları hakkında daha fazla bilgi için bkz. kaynakları Windows PowerShell Desired State Configuration.
Bileşik kaynak oluşturma
Örneğimizde, sanal makineleri yapılandırmak için bir dizi mevcut kaynağı çağıran bir yapılandırma oluşturuyoruz. Yapılandırma bloklarında ayarlanacak değerleri belirtmek yerine yapılandırma, yapılandırma bloklarında kullanılan parametreleri alır.
Configuration xVirtualMachine
{
param
(
# Name of VMs
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[String[]] $VMName,
# Name of Switch to create
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[String] $SwitchName,
# Type of Switch to create
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[String] $SwitchType,
# Source Path for VHD
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[String] $VHDParentPath,
# Destination path for diff VHD
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[String] $VHDPath,
# Startup Memory for VM
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[String] $VMStartupMemory,
# State of the VM
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[String] $VMState
)
# Import the module that defines custom resources
Import-DSCResource -ModuleName xComputerManagement,xHyper-V
# Install the Hyper-V role
WindowsFeature HyperV
{
Ensure = "Present"
Name = "Hyper-V"
}
# Create the virtual switch
xVMSwitch $SwitchName
{
Ensure = "Present"
Name = $SwitchName
Type = $SwitchType
DependsOn = "[WindowsFeature]HyperV"
}
# Check for Parent VHD file
File ParentVHDFile
{
Ensure = "Present"
DestinationPath = $VHDParentPath
Type = "File"
DependsOn = "[WindowsFeature]HyperV"
}
# Check the destination VHD folder
File VHDFolder
{
Ensure = "Present"
DestinationPath = $VHDPath
Type = "Directory"
DependsOn = "[File]ParentVHDFile"
}
# Create VM specific diff VHD
foreach ($Name in $VMName)
{
xVHD "VHD$Name"
{
Ensure = "Present"
Name = $Name
Path = $VHDPath
ParentPath = $VHDParentPath
DependsOn = @("[WindowsFeature]HyperV",
"[File]VHDFolder")
}
}
# Create VM using the above VHD
foreach($Name in $VMName)
{
xVMHyperV "VMachine$Name"
{
Ensure = "Present"
Name = $Name
VhDPath = (Join-Path -Path $VHDPath -ChildPath $Name)
SwitchName = $SwitchName
StartupMemory = $VMStartupMemory
State = $VMState
MACAddress = $MACAddress
WaitForIP = $true
DependsOn = @("[WindowsFeature]HyperV",
"[xVHD]VHD$Name")
}
}
}
Not
DSC şu anda bileşik kaynakların veya iç içe yerleştirilmiş yapılandırmaların bileşik kaynağa yerleştirilmesini desteklememektedir.
Yapılandırmayı bileşik kaynak olarak kaydetme
Parametreli yapılandırmayı bir DSC kaynağı olarak kullanmak için, bunu diğer MOF tabanlı kaynaklar gibi bir dizin yapısına kaydedin ve uzantıyla .schema.psm1
adlandırın. Bu örnekte dosyayı xVirtualMachine.schema.psm1
olarak adlandıracağız. Aşağıdaki satırı içeren adlı xVirtualMachine.psd1
bir bildirim de oluşturmanız gerekir.
RootModule = 'xVirtualMachine.schema.psm1'
Not
Bu, klasörün altındaki tüm kaynaklar için modül bildirimine ek olarak MyDscResources.psd1
sağlanır MyDscResources
.
İşiniz bittiğinde klasör yapısı aşağıdaki gibi olmalıdır.
$env: psmodulepath
|- MyDscResources
|- MyDscResources.psd1
|- DSCResources
|- xVirtualMachine
|- xVirtualMachine.psd1
|- xVirtualMachine.schema.psm1
Kaynak artık cmdlet kullanılarak Get-DscResource
bulunabilir ve özellikleri bu cmdlet tarafından veya Windows PowerShell ISE'de Ctrl+Boşluk otomatik tamamlama kullanılarak bulunabilir.
Bileşik kaynağı kullanma
Ardından bileşik kaynağı çağıran bir yapılandırma oluşturacağız. Bu yapılandırma, bir sanal makine oluşturmak için xVirtualMachine bileşik kaynağını çağırır ve sonra yeniden adlandırmak için xComputer kaynağını çağırır.
configuration RenameVM
{
Import-DSCResource -ModuleName xVirtualMachine
Node localhost
{
xVirtualMachine VM
{
VMName = "Test"
SwitchName = "Internal"
SwitchType = "Internal"
VhdParentPath = "C:\Demo\VHD\RTM.vhd"
VHDPath = "C:\Demo\VHD"
VMStartupMemory = 1024MB
VMState = "Running"
}
}
Node "192.168.10.1"
{
xComputer Name
{
Name = "SQL01"
DomainName = "fourthcoffee.com"
}
}
}
Bu kaynağı, xVirtualMachine kaynağına bir DIZI VM adı geçirerek birden çok VM oluşturmak için de kullanabilirsiniz.
Configuration MultipleVms
{
Import-DSCResource -ModuleName xVirtualMachine
Node localhost
{
xVirtualMachine VMs
{
VMName = "IIS01", "SQL01", "SQL02"
SwitchName = "Internal"
SwitchType = "Internal"
VhdParentPath = "C:\Demo\VHD\RTM.vhd"
VHDPath = "C:\Demo\VHD"
VMStartupMemory = 1024MB
VMState = "Running"
}
}
}
PsDscRunAsCredential desteği
Not
PsDscRunAsCredential , PowerShell 5.0 ve sonraki sürümlerde desteklenir.
PsDscRunAsCredential özelliği, kaynağın belirtilen kimlik bilgileri kümesi altında çalıştırılması gerektiğini belirtmek için DSC yapılandırmaları kaynak bloğunda kullanılabilir. Daha fazla bilgi için bkz . DSC'yi kullanıcı kimlik bilgileriyle çalıştırma.
Özel bir kaynağın içinden kullanıcı bağlamlarına erişmek için otomatik değişkenini $PsDscContext
kullanabilirsiniz.
Örneğin, aşağıdaki kod kaynağın altında çalıştığı kullanıcı bağlamını ayrıntılı çıkış akışına yazar:
if ($PsDscContext.RunAsUser) {
Write-Verbose "User: $PsDscContext.RunAsUser";
}