dsccommunity / dsccommunity/SqlServerDsc

Class-based DSC resources for SQL Server Reporting Services and Power BI Report Server

Open
#2,415 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement help wanted resource proposal
Dominant language
PowerShell
Stars
385
Forks
224
PR merge metrics
No merged PRs in 30d

Description

Overview

This is the tracking issue for creating new DSC class-based resources to replace the existing MOF-based SqlRS resource. The new resources will use the existing public commands (*-SqlDscRS*) that are already integration tested in our CI/CD pipeline.

Background

The existing MOF-based SqlRS resource (source/DSCResources/DSC_SqlRS) has become a monolithic resource that is hard to maintain. It handles database initialization, virtual directories, URL reservations, SSL configuration, and service restarts all in one resource.

We have created 45+ new public commands that can manage both SQL Server Reporting Services (SSRS) and Power BI Report Server (PBIRS). These commands are integration tested in the following CI/CD stages:

Testing Stage Names
Power BI Report Server Integration_Test_Commands_BIReportServer_Secure, Integration_Test_Commands_BIReportServer
SQL Server Reporting Services Integration_Test_Commands_ReportingServices

Design Principles

  1. Single Responsibility - Each resource manages one aspect of configuration
  2. Composability - Resources can be used independently or together
  3. Idempotency - Resources correctly detect current state and only make necessary changes
  4. Support for SSRS and PBIRS - All resources work with both products
  5. SQL Server 2019+ - No support needed for SQL Server versions older than 2019

Proposed Resources

Resource Description Sub-Issue
SqlRSDatabase Configures the Reporting Services database connection, including creating the database and initializing the report server. #2416
SqlRSVirtualDirectory Manages virtual directories for ReportServer web service and Reports web portal applications. #2417
SqlRSUrlReservation Manages URL reservations for ReportServer web service and Reports web portal. #2418
SqlRSSslCertificateBinding Manages SSL/TLS certificate bindings for Reporting Services applications. #2419
SqlRSServiceAccount Manages the Windows service account with complete change workflow. #2420
SqlRSConfiguration Manages optional configuration settings (SMTP, unattended execution account). #2421

Resource Dependencies / Recommended Usage Order

1. SqlRSSetup              - Install SSRS or PBIRS (already exists)
2. SqlRSVirtualDirectory   - Configure virtual directories (before URL reservations)
3. SqlRSUrlReservation     - Configure URL reservations
4. SqlRSDatabase           - Create database and initialize
5. SqlRSSslCertificateBinding - Configure SSL/TLS (optional)
6. SqlRSServiceAccount     - Change service account if needed (optional)
7. SqlRSConfiguration      - Configure SMTP and unattended execution (optional)

Implementation Notes

  • All resources inherit from ResourceBase (from DscResource.Base module), not SqlResourceBase since they don't interact with the SQL Server Database Engine via SMO.
  • Each resource needs a localization file at source/en-US/{ResourceName}.strings.psd1
  • Resources should follow the integration test patterns in Integration_Test_Commands_ReportingServices and Integration_Test_Commands_BIReportServer

Migration Path

Users of the old SqlRS resource will need to:

  1. Replace SqlRS with a combination of the new resources
  2. Map properties to the appropriate new resources:
    • DatabaseServerName, DatabaseInstanceNameSqlRSDatabase
    • ReportServerVirtualDirectory, ReportsVirtualDirectorySqlRSVirtualDirectory
    • ReportServerReservedUrl, ReportsReservedUrlSqlRSUrlReservation
    • UseSslSqlRSSslCertificateBinding

Open Questions

  1. Should SqlRSConfiguration be split into separate SqlRSSmtp and SqlRSUnattendedExecutionAccount resources?
  2. Should we create a SqlRSEncryptionKey resource for standalone encryption key management?
  3. Should SqlRSVirtualDirectory and SqlRSUrlReservation be combined into a single SqlRSUrl resource?
  4. Should we add a SqlRSScaleOut resource for managing scale-out deployments?

Sub-Issues

  • #2416 - SqlRSDatabase
  • #2417 - SqlRSVirtualDirectory
  • #2418 - SqlRSUrlReservation
  • #2419 - SqlRSSslCertificateBinding
  • #2420 - SqlRSServiceAccount
  • #2421 - SqlRSConfiguration

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the existing MOF-based resource in source/DSCResources/DSC_SqlRS and the public -SqlDscRS commands used by Integration_Test_Commands_ReportingServices and Integration_Test_Commands_BIReportServer. Review the six linked sub-issues, ResourceBase guidance, and the required source/en-US/{ResourceName}.strings.psd1 files; done means the planned class-based resources cover their stated responsibilities and follow the integration-test patterns.

Written by the indexing model from the issue text.

Assessment

Tech stack
powershell
Domain
devops, infrastructure
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.