Vytvoření složeného prostředku DSC
V reálných situacích můžou být konfigurace DSC dlouhé a složité, volají několik různých prostředků DSC a nastavují desítky vlastností. K řešení této složitosti můžete použít konfiguraci DSC jako prostředek DSC pro jiné konfigurace DSC. Tomu se říká složený prostředek DSC. Složený prostředek DSC je konfigurace DSC, která přijímá parametry. Parametry konfigurace DSC fungují jako vlastnosti prostředku DSC. Konfigurace DSC se uloží jako soubor s příponou .schema.psm1
. Další informace o prostředcích DSC najdete v tématu Prostředky DSC.
Důležité
Složené prostředky DSC nefungují s Invoke-DscResource
. V DSC 2.0 a novějších verzích se podporují jenom pro použití s funkcí konfigurace počítače Azure Automanage.
Vytvoření složeného prostředku
V našem příkladu vytvoříme konfiguraci, která vyvolá několik existujících prostředků pro konfiguraci virtuálních počítačů. Místo zadání hodnot, které se mají nastavit v blocích konfigurace, konfigurace přebírá parametry, které se pak použijí v blocích konfigurace.
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"
)
}
}
}
Poznámka
DSC nepodporuje umísťování složených bloků prostředků DSC do definice složeného prostředku DSC.
Uložení konfigurace DSC jako složeného prostředku DSC
Pokud chcete parametrizovanou konfiguraci DSC použít jako prostředek DSC, uložte ho do adresářové struktury podobné prostředku DSC založeného na MOF a pojmenujte ho rozšířením .schema.psm1
. V tomto příkladu pojmenujeme soubor xVirtualMachine.schema.psm1
. Musíte také vytvořit manifest s názvem xVirtualMachine.psd1
, který obsahuje následující řádek.
RootModule = 'xVirtualMachine.schema.psm1'
Poznámka
To je oddělené od MyDscResources.psd1
manifestu modulu pro všechny prostředky DSC ve MyDscResources
složce.
Až budete hotovi, struktura složek by měla být následující.
$env: psmodulepath
|- MyDscResources
|- MyDscResources.psd1
|- DSCResources
|- xVirtualMachine
|- xVirtualMachine.psd1
|- xVirtualMachine.schema.psm1
Prostředek DSC je teď zjistitelný pomocí Get-DscResource
rutiny a jeho vlastnosti jsou zjistitelné buď pomocí této rutiny, nebo pomocí automatického dokončování mezerníku ctrl+ v nástroji VS Code.
Použití složeného prostředku
Dále vytvoříme konfiguraci DSC, která volá složený prostředek DSC. Tato konfigurace DSC volá složený xVirtualMachine
prostředek DSC k vytvoření virtuálního počítače.
Configuration CreateVM {
Import-DSCResource -ModuleName xVirtualMachine
xVirtualMachine VM {
VMName = "Test"
SwitchName = "Internal"
SwitchType = "Internal"
VhdParentPath = "C:\Demo\VHD\RTM.vhd"
VHDPath = "C:\Demo\VHD"
VMStartupMemory = 1024MB
VMState = "Running"
}
}
Tento složený prostředek DSC můžete také použít k vytvoření více virtuálních počítačů předáním pole názvů virtuálních počítačů pro vlastnost VMName složeného prostředku DSC.
Configuration MultipleVms {
Import-DSCResource -ModuleName xVirtualMachine
xVirtualMachine VMs {
VMName = @(
"IIS01"
"SQL01"
"SQL02"
)
SwitchName = "Internal"
SwitchType = "Internal"
VhdParentPath = "C:\Demo\VHD\RTM.vhd"
VHDPath = "C:\Demo\VHD"
VMStartupMemory = 1024MB
VMState = "Running"
}
}
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro