Examples/SQL-ClusterDB.ps1
<#
.NOTES THIS EXAMPLE IS OBSOLETE. Due to major changes in the resource modules over the last several versions, this example has not been updated to reflect those changes. Please refer to the resource example folder for updated examples. https://github.com/PowerShell/SqlServerDsc/tree/master/Examples/Resources There is an issue open to replace this example, please see issue https://github.com/PowerShell/SqlServerDsc/issues/462 #> [Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSAvoidUsingConvertToSecureStringWithPlainText", "")] param () Configuration SQL { Import-DscResource -Module SqlServerDSC Import-DscResource -Module xFailoverCluster Node $AllNodes.NodeName { # Set LCM to reboot if needed LocalConfigurationManager { DebugMode = "ForceModuleImport" RebootNodeIfNeeded = $true } WindowsFeature "NET-Framework-Core" { Ensure = "Present" Name = "NET-Framework-Core" Source = $Node.SourcePath + "\WindowsServer2012R2\sources\sxs" } WindowsFeature "Failover-Clustering" { Ensure = "Present" Name = "Failover-Clustering" } WindowsFeature "RSAT-Clustering-PowerShell" { Ensure = "Present" Name = "RSAT-Clustering-PowerShell" } if($Node.NodeName -eq "CLDBA.contoso.com") { xCluster "CLDBx" { DependsOn = @( "[WindowsFeature]Failover-Clustering", "[WindowsFeature]RSAT-Clustering-PowerShell" ) Name = "CLDBx" StaticIPAddress = "192.168.1.251" DomainAdministratorCredential = $Node.InstallerServiceAccount } WaitForAll "CLDBx" { ResourceName = "[xCluster]CLDBx" NodeName = @( "CLDBB.contoso.com", "CLDBC.contoso.com", "CLDBD.contoso.com" ) Credential = $Node.InstallerServiceAccount RetryIntervalSec = 5 RetryCount = 720 } xClusterDisk "iSCSI" { DependsOn = "[WaitForAll]CLDBx" DiskFriendlyName = "MSFT Virtual HD SCSI Disk Device" DiskNumbers = "" } } else { WaitForAll "CLDBx" { ResourceName = "[xCluster]CLDBx" NodeName = "CLDBA.contoso.com" Credential = $Node.InstallerServiceAccount RetryIntervalSec = 5 RetryCount = 720 } xCluster "CLDBx" { DependsOn = "[WaitForAll]CLDBx" Name = "CLDBx" StaticIPAddress = "192.168.1.251" DomainAdministratorCredential = $Node.InstallerServiceAccount } } xSQLServerFailoverClusterSetup "PrepareMSSQLSERVER" { DependsOn = @( "[WindowsFeature]NET-Framework-Core", "[WindowsFeature]Failover-Clustering" ) Action = "Prepare" SourcePath = $Node.SourcePath SetupCredential = $Node.InstallerServiceAccount Features = "SQLENGINE,AS,IS" InstanceName = "MSSQLSERVER" FailoverClusterNetworkName = "CLSCDB" SQLSvcAccount = $Node.SQLServiceAccount } SqlWindowsFirewall "FirewallMSSQLSERVER" { DependsOn = "[xSQLServerFailoverClusterSetup]PrepareMSSQLSERVER" SourcePath = $Node.SourcePath InstanceName = "MSSQLSERVER" Features = "SQLENGINE,AS,IS" } if($Node.NodeName -eq "CLDBA.contoso.com") { WaitForAll "Cluster" { NodeName = @( "CLDBB.contoso.com", "CLDBC.contoso.com", "CLDBD.contoso.com" ) ResourceName = "[xSQLServerFailoverClusterSetup]PrepareMSSQLSERVER" Credential = $Node.InstallerServiceAccount RetryIntervalSec = 5 RetryCount = 720 } SqlServerDSCFailoverClusterSetup "CompleteMSSQLSERVER" { DependsOn = @( "[WaitForAll]Cluster", "[xClusterDisk]iSCSI" ) Action = "Complete" SourcePath = $Node.SourcePath SetupCredential = $Node.InstallerServiceAccount Features = "SQLENGINE,AS,IS" InstanceName = "MSSQLSERVER" FailoverClusterNetworkName = "CLSCDB" InstallSQLDataDir = "E:\" ASDataDir = "F:\OLAP\Data" ASLogDir = "F:\OLAP\Log" ASBackupDir = "F:\OLAP\Backup" ASTempDir = "F:\OLAP\Temp" ASConfigDir = "F:\OLAP\Config" ISFileSystemFolder = "E:\Pacakges" FailoverClusterIPAddress = "192.168.1.250" SQLSvcAccount = $Node.SQLServiceAccount SQLSysAdminAccounts = $Node.AdminAccount ASSysAdminAccounts = $Node.AdminAccount } } } } $DomainAdministratorCredential = Get-Credential "CONTOSO\Administrator" $InstallerServiceAccount = Get-Credential "CONTOSO\!Installer" $LocalSystemAccount = Get-Credential "SYSTEM" $SQLServiceAccount = Get-Credential "CONTOSO\!sql" $ConfigurationData = @{ AllNodes = @( @{ NodeName = "*" PSDscAllowPlainTextPassword = $true SourcePath = "\\RD01\Installer" DomainAdministratorCredential = $DomainAdministratorCredential InstallerServiceAccount = $InstallerServiceAccount LocalSystemAccount = $LocalSystemAccount SQLServiceAccount = $SQLServiceAccount AdminAccount = "CONTOSO\Administrator" } @{ NodeName = "CLDBA.contoso.com" } @{ NodeName = "CLDBB.contoso.com" } @{ NodeName = "CLDBC.contoso.com" } @{ NodeName = "CLDBD.contoso.com" } ) } foreach($Node in $ConfigurationData.AllNodes) { if($Node.NodeName -ne "*") { Start-Process -FilePath "robocopy.exe" -ArgumentList ("`"C:\Program Files\WindowsPowerShell\Modules`" `"\\" + $Node.NodeName + "\c$\Program Files\WindowsPowerShell\Modules`" /e /purge /xf") -NoNewWindow -Wait } } SQL -ConfigurationData $ConfigurationData Set-DscLocalConfigurationManager -Path .\SQL -Verbose Start-DscConfiguration -Path .\SQL -Verbose -Wait -Force |