I am trying to write a puppet module to automate configuring the disk layout of a certain type of server, using DSC. A typical example (
https://github.com/PowerShell/StorageDsc/wiki/Disk) is as follows:
Configuration Example
{
Import-DSCResource -ModuleName StorageDsc
Node localhost
{
WaitForDisk Disk2
{
DiskId = 2
RetryIntervalSec = 60
RetryCount = 60
}
Disk GVolume
{
DiskId = 2
DriveLetter = 'G'
Size = 10GB
DependsOn = '[WaitForDisk]Disk2'
}
Disk JVolume
{
DiskId = 2
DriveLetter = 'J'
FSLabel = 'Data'
DependsOn = '[Disk]GVolume'
}
WaitForDisk Disk3
{
DiskId = 3
RetryIntervalSec = 60
RetryCount = 60
}
Disk SVolume
{
DiskId = 3
DriveLetter = 'S'
Size = 100GB
FSFormat = 'ReFS'
AllocationUnitSize = 64KB
DependsOn = '[WaitForDisk]Disk3'
}
}
}
What I'm not sure about is how to handle the equivalent puppet manifest - I know WaitFor* is not supported, but the other problem is the duplicate resource names:
class myclass {
dsc_storagedsc { 'Disk':
dsc_name => 'DriveOne',
dsc_diskid => 3
}
dsc_storagedsc { 'Disk':
dsc_name => 'DriveTwo',
dsc_diskid => 4
}
}
I'm not sure how I would 'require' those in other parts of the manifest. Also, puppet doesn't seem to like dsc_storagedsc either, though I can use dsc_windowsfeature, reboot, etc. I also tried dsc_storage.