Examples/EndToEndExample/2-InstallAndRunJetstress.ps1
<#
.EXAMPLE This example shows how to install and run jet stress. #> $ConfigurationData = @{ AllNodes = @( @{ #region Common Settings for All Nodes NodeName = '*' <# NOTE! THIS IS NOT RECOMMENDED IN PRODUCTION. This is added so that AppVeyor automatic tests can pass, otherwise the tests will fail on passwords being in plain text and not being encrypted. Because it is not possible to have a certificate in AppVeyor to encrypt the passwords we need to add the parameter 'PSDscAllowPlainTextPassword'. NOTE! THIS IS NOT RECOMMENDED IN PRODUCTION. See: http://blogs.msdn.com/b/powershell/archive/2014/01/31/want-to-secure-credentials-in-windows-powershell-desired-state-configuration.aspx #> PSDscAllowPlainTextPassword = $true <# The location of the exported public certifcate which will be used to encrypt credentials during compilation. CertificateFile = 'C:\public-certificate.cer' #> #Thumbprint of the certificate being used for decrypting credentials Thumbprint = '39bef4b2e82599233154465323ebf96a12b60673' #DiskToDBMap used by xExchAutoMountPoint specifically for Jetstress purposes JetstressDiskToDBMap = 'DB1,DB2,DB3,DB4','DB5,DB6,DB7,DB8' #The base file server UNC path that will be used for copying things like certificates, Exchange binaries, and Jetstress binaries FileServerBase = '\\rras-1.mikelab.local\Binaries' #endregion } #region Individual Node Settings #region DAG01 Nodes @{ NodeName = 'e15-1' } @{ NodeName = 'e15-2' } @{ NodeName = 'e15-3' } @{ NodeName = 'e15-4' } #endregion ) } Configuration Example { param ( [Parameter(Mandatory = $true)] [System.Management.Automation.PSCredential] $ExchangeAdminCredential ) Import-DscResource -Module xExchange Node $AllNodes.NodeName { #Create mount points for use with Jetstress. Here I prefer to use the same database names for ALL servers, #that way I can use the same JetstressConfig.xml for all of them. xExchAutoMountPoint AMPForJetstress { Identity = $Node.NodeName AutoDagDatabasesRootFolderPath = 'C:\ExchangeDatabases' AutoDagVolumesRootFolderPath = 'C:\ExchangeVolumes' DiskToDBMap = $Node.JetstressDiskToDBMap SpareVolumeCount = 0 VolumePrefix = 'EXVOL' CreateSubfolders = $true } #Copy the Jetstress install file File CopyJetstress { Ensure = 'Present' SourcePath = "$($Node.FileServerBase)\Jetstress\Jetstress.msi" DestinationPath = 'C:\Binaries\Jetstress\Jetstress.msi' Credential = $ExchangeAdminCredential } #Install Jetstress Package InstallJetstress { Ensure = 'Present' Path = 'C:\Binaries\Jetstress\Jetstress.msi' Name = 'Microsoft Exchange Jetstress 2013' ProductId = '75189587-0D84-4404-8F02-79C39728FA64' DependsOn = '[xExchAutoMountPoint]AMPForJetstress','[File]CopyJetstress' } #Copy required ESE DLL's to the Jetstress installation directory File CopyESEDlls { Ensure = 'Present' Type = 'Directory' Recurse = $true SourcePath = "$($Node.FileServerBase)\Jetstress\ESEDlls" DestinationPath = 'C:\Program Files\Exchange Jetstress' Credential = $ExchangeAdminCredential DependsOn = '[Package]InstallJetstress' } #Copy JetstressConfig.xml to the Jetstress installation directory File CopyJetstressConfig { Ensure = 'Present' SourcePath = "$($Node.FileServerBase)\Jetstress\JetstressConfig.xml" DestinationPath = 'C:\Program Files\Exchange Jetstress\JetstressConfig.xml' Credential = $ExchangeAdminCredential DependsOn = '[Package]InstallJetstress' } #Run the Jetstress test, and evaluate the results xExchJetstress RunJetstress { Type = 'Performance' JetstressPath = 'C:\Program Files\Exchange Jetstress' JetstressParams = '/c "C:\Program Files\Exchange Jetstress\JetstressConfig.xml"' MinAchievedIOPS = 100 DependsOn = '[File]CopyESEDlls','[File]CopyJetstressConfig' } } } |