Tests/Integration/MSFT_SqlRS.config.ps1
#region HEADER # Integration Test Config Template Version: 1.2.0 #endregion $configFile = [System.IO.Path]::ChangeExtension($MyInvocation.MyCommand.Path, 'json') if (Test-Path -Path $configFile) { <# Allows reading the configuration data from a JSON file, for real testing scenarios outside of the CI. #> $ConfigurationData = Get-Content -Path $configFile | ConvertFrom-Json } else { # Get a spare drive letter $mockLastDrive = ((Get-Volume).DriveLetter | Sort-Object | Select-Object -Last 1) $mockIsoMediaDriveLetter = [char](([int][char]$mockLastDrive) + 1) if($script:sqlVersion -eq '140') { # SQL2017 $instanceName = 'SSRS' $isoImageName = 'SQL2017.iso' } else { # SQL2016 $instanceName = 'DSCRS2016' $isoImageName = 'SQL2016.iso' } $ConfigurationData = @{ AllNodes = @( @{ NodeName = 'localhost' RunAs_UserName = "$env:COMPUTERNAME\SqlInstall" RunAs_Password = 'P@ssw0rd1' Service_UserName = "$env:COMPUTERNAME\svc-Reporting" Service_Password = 'yig-C^Equ3' InstanceName = $instanceName Features = 'RS' InstallSharedDir = 'C:\Program Files\Microsoft SQL Server' InstallSharedWOWDir = 'C:\Program Files (x86)\Microsoft SQL Server' UpdateEnabled = 'False' SuppressReboot = $true # Make sure we don't reboot during testing. ForceReboot = $false ImagePath = "$env:TEMP\$isoImageName" DriveLetter = $mockIsoMediaDriveLetter DatabaseServerName = $env:COMPUTERNAME DatabaseInstanceName = 'DSCSQLTEST' CertificateFile = $env:DscPublicCertificatePath } ) } } <# .SYNOPSIS Add dependencies for configuring Reporting Services. Mounts the ISO, create the service account, make sure .NET Framework 4.5 is installed, and installs the Reporting Services, #> Configuration MSFT_SqlRS_CreateDependencies_Config { Import-DscResource -ModuleName 'PSDscResources' Import-DscResource -ModuleName 'StorageDsc' Import-DscResource -ModuleName 'SqlServerDsc' node $AllNodes.NodeName { MountImage 'MountIsoMedia' { ImagePath = $Node.ImagePath DriveLetter = $Node.DriveLetter Ensure = 'Present' } WaitForVolume 'WaitForMountOfIsoMedia' { DriveLetter = $Node.DriveLetter RetryIntervalSec = 5 RetryCount = 10 } User 'CreateReportingServicesServiceAccount' { Ensure = 'Present' UserName = Split-Path -Path $Node.Service_UserName -Leaf Password = New-Object ` -TypeName System.Management.Automation.PSCredential ` -ArgumentList @($Node.Service_UserName, (ConvertTo-SecureString -String $Node.Service_Password -AsPlainText -Force)) } WindowsFeature 'NetFramework45' { Name = 'NET-Framework-45-Core' Ensure = 'Present' } if($script:sqlVersion -eq '130') { SqlSetup 'InstallReportingServicesInstance' { InstanceName = $Node.InstanceName Features = $Node.Features SourcePath = "$($Node.DriveLetter):\" BrowserSvcStartupType = 'Automatic' InstallSharedDir = $Node.InstallSharedDir InstallSharedWOWDir = $Node.InstallSharedWOWDir UpdateEnabled = $Node.UpdateEnabled SuppressReboot = $Node.SuppressReboot ForceReboot = $Node.ForceReboot RSSvcAccount = New-Object ` -TypeName System.Management.Automation.PSCredential ` -ArgumentList @($Node.Service_UserName, (ConvertTo-SecureString -String $Node.Service_Password -AsPlainText -Force)) DependsOn = @( '[WaitForVolume]WaitForMountOfIsoMedia' '[User]CreateReportingServicesServiceAccount' '[WindowsFeature]NetFramework45' ) PsDscRunAsCredential = New-Object ` -TypeName System.Management.Automation.PSCredential ` -ArgumentList @( $Node.RunAs_UserName, (ConvertTo-SecureString -String $Node.RunAs_Password -AsPlainText -Force)) } } <# MSFT_SqlRSSetup.Integration.Tests.ps1 will have installed SSRS 2017. We just need to start SSRS. #> elseif($script:sqlVersion -eq '140') { Service 'StartReportingServicesInstance' { Name = 'SQLServerReportingServices' State = 'Running' } } } } <# .SYNOPSIS Configures the Reporting Services. #> Configuration MSFT_SqlRS_InstallReportingServices_Config { Import-DscResource -ModuleName 'SqlServerDsc' node $AllNodes.NodeName { SqlRS 'Integration_Test' { # Instance name for the Reporting Services. InstanceName = $Node.InstanceName <# Instance for Reporting Services databases. Note: This instance is created in a prior integration test. #> DatabaseServerName = $Node.DatabaseServerName DatabaseInstanceName = $Node.DatabaseInstanceName PsDscRunAsCredential = New-Object ` -TypeName System.Management.Automation.PSCredential ` -ArgumentList @( $Node.RunAs_UserName, (ConvertTo-SecureString -String $Node.RunAs_Password -AsPlainText -Force)) } } } <# .SYNOPSIS Enables SSL on the Reporting Services. #> Configuration MSFT_SqlRS_InstallReportingServices_ConfigureSsl_Config { Import-DscResource -ModuleName 'SqlServerDsc' node $AllNodes.NodeName { SqlRS 'Integration_Test' { # Instance name for the Reporting Services. InstanceName = $Node.InstanceName UseSsl = $true <# Instance for Reporting Services databases. Note: This instance is created in a prior integration test. #> DatabaseServerName = $Node.DatabaseServerName DatabaseInstanceName = $Node.DatabaseInstanceName PsDscRunAsCredential = New-Object ` -TypeName System.Management.Automation.PSCredential ` -ArgumentList @( $Node.RunAs_UserName, (ConvertTo-SecureString -String $Node.RunAs_Password -AsPlainText -Force)) } } } <# .SYNOPSIS Disables SSL on the Reporting Services. #> Configuration MSFT_SqlRS_InstallReportingServices_RestoreToNoSsl_Config { Import-DscResource -ModuleName 'SqlServerDsc' node $AllNodes.NodeName { SqlRS 'Integration_Test' { # Instance name for the Reporting Services. InstanceName = $Node.InstanceName UseSsl = $false <# Instance for Reporting Services databases. Note: This instance is created in a prior integration test. #> DatabaseServerName = $Node.DatabaseServerName DatabaseInstanceName = $Node.DatabaseInstanceName PsDscRunAsCredential = New-Object ` -TypeName System.Management.Automation.PSCredential ` -ArgumentList @( $Node.RunAs_UserName, (ConvertTo-SecureString -String $Node.RunAs_Password -AsPlainText -Force)) } } } <# .SYNOPSIS Stops the Reporting Services instance to save resource on the build worker. #> Configuration MSFT_SqlRS_StopReportingServicesInstance_Config { Import-DscResource -ModuleName 'PSDscResources' node $AllNodes.NodeName { if($script:sqlVersion -eq '130') { Service ('StopReportingServicesInstance{0}' -f $Node.InstanceName) { Name = ('ReportServer${0}' -f $Node.InstanceName) State = 'Stopped' } } elseif($script:sqlVersion -eq '140') { Service 'StopReportingServicesInstance' { Name = 'SQLServerReportingServices' State = 'Stopped' } } } } |