Examples/Single Server/ServiceBusForWindowsServer.ps1
$ConfigurationData = @{ AllNodes = @( @{ NodeName = '*' PSDscAllowPlainTextPassword = $true #NOTE: Encrypt with certs when you do this for real!!! PSDscAllowDomainUser = $true } @{ NodeName = 'localhost' } ) NonNodeData = @{ LocalInstallAccount = @{ UserName = 'ServiceBusInstall' Description = 'Local user account used to install Service Bus bits from Web Platform Installer' FullName = 'Service Bus Local Install Account' } DomainInstallAccount = @{ UserName = 'CORP\SBInstall' Description = 'Domain Install Credential for Service Bus For Windows Server' FullName = 'Domain Install Credential' } RunAsAccount = @{ UserName = "CORP\SBService" Description = "Service account for Service Bus for Windows Server" FullName = "Service Bus Service Account" } AdminApiAccount = @{ UserName = "adminUser" } TenantApiAccount = @{ UserName = "tenantUser" } SQLServer = @{ DataSource = 'SQL1' } ServiceBus = @{ SBFarm = @{ FarmDNS = 'servicebus.contoso.com' } SBRuntimeSetting = @{ DefaultMaximumQueueSizeInMegabytes = @{ Name = 'DefaultMaximumQueueSizeInMegabytes' Value = '10240' } } SBNamespaces = @{ ContosoNamespace = 'ContosoNamespace' } SBMessageContainers = @{ '01' = 'SBMessageContainer01' '02' = 'SBMessageContainer02' '03' = 'SBMessageContainer03' } SBAuthorizationRules = @{ ContosoNamespaceRule = @{ Name = 'ContosoNamespaceRule' NamespaceName = 'ContosoNamespace' Rights = 'Send','Listen' } } } Certificates = @{ Root = @{ Path = 'C:\Program Files\WindowsPowerShell\Modules\ServiceBusForWindowsServerDsc\Examples\Certs\root.cer' Thumbprint = '2E5D900A6080DBA3127ABD125BC1D03E27FA9906' } <# Intermediate = @{ Path = '<InsertPathToYourIntermediatePathHereIfNecessary>' Thumbprint = '<InsertPathToYourIntermediateThumbprintHereIfNecessary>' } #> Pfx = @{ Path = 'C:\Program Files\WindowsPowerShell\Modules\ServiceBusForWindowsServerDsc\Examples\Certs\servicebus.contoso.com.pfx' Thumbprint = '62C99D4B5711E2482A5A1AECE6F8D05231D5678D' } } WebpiServiceBusInstallBits = @{ Path = '\\resourceserver.contoso.com\ServiceBus_1_1_CU1' DestinationPath = 'C:\ServiceBus_1_1_CU1' } } } Configuration Example { param ( [Parameter()] [ValidateNotNull()] [pscredential] $LocalInstallAccount = (Get-Credential -UserName $ConfigurationData.NonNodeData.LocalInstallAccount.UserName -Message "Credentials for Local Install Account"), [Parameter()] [ValidateNotNull()] [pscredential] $DomainInstallAccount = (Get-Credential -UserName $ConfigurationData.NonNodeData.DomainInstallAccount.UserName -Message "Credentials for Domain Install Account"), [Parameter()] [ValidateNotNull()] [pscredential] $RunAsAccount = (Get-Credential -UserName $ConfigurationData.NonNodeData.RunAsAccount.UserName -Message "Credentials for Service Bus Service Account"), [Parameter()] [ValidateNotNull()] [pscredential] $AdminApiAccount = (Get-Credential -UserName $ConfigurationData.NonNodeData.AdminApiAccount.UserName -Message "Credentials for Admin Api Account"), [Parameter()] [ValidateNotNull()] [pscredential] $TenantApiAccount = (Get-Credential -UserName $ConfigurationData.NonNodeData.TenantApiAccount.UserName -Message "Credentials for Tenant Api Account"), [Parameter()] [ValidateNotNull()] [pscredential] $Passphrase = (Get-Credential -UserName "PfxImportPasshrase" -Message "Pfx Certificate Import Passphrase") ) Import-DscResource -Module PSDesiredStateConfiguration Import-DscResource -Module xCertificate Import-DscResource -Module ServiceBusForWindowsServerDsc Node 'localhost' { # Utilize xCertificate module to install example's sample certs, or certs of your own. xCertificateImport RootCertificateImport { Thumbprint = $ConfigurationData.NonNodeData.Certificates.Root.Thumbprint Path = $ConfigurationData.NonNodeData.Certificates.Root.Path Location = 'LocalMachine' Store = 'Root' Ensure = 'Present' } # Only necessary if you need to import an intermediate because of lack of OCSP. <# xCertificateImport IntermediateCertificateImport { Thumbprint = $ConfigurationData.NonNodeData.Certificates.Intermediate.Thumbprint Path = $ConfigurationData.NonNodeData.Certificates.Intermediate.Path Location = 'LocalMachine' Store = 'Root' Ensure = 'Present' } #> xPfxImport PfxImport { Thumbprint = $ConfigurationData.NonNodeData.Certificates.Pfx.Thumbprint Path = $ConfigurationData.NonNodeData.Certificates.Pfx.Path Location = 'LocalMachine' Store = 'My' Exportable = $false Credential = $Passphrase Ensure = 'Present' } User LocalSBInstallUser { UserName = $LocalInstallAccount.UserName Description = $ConfigurationData.NonNodeData.LocalInstallAccount.Description Ensure = 'Present' FullName = $ConfigurationData.NonNodeData.LocalInstallAccount.FullName Password = $LocalInstallAccount PasswordChangeNotAllowed = $true PasswordNeverExpires = $true } Group AddDomainCredToAdministrators { DependsOn = '[User]LocalSBInstallUser' Credential = $DomainInstallAccount GroupName = 'Administrators' Ensure = 'Present' MembersToInclude = $LocalInstallAccount.UserName,$DomainInstallAccount.UserName } File LocalWebpiServiceBusInstallBits { PsDscRunAsCredential = $DomainInstallAccount CheckSum = 'ModifiedDate' DestinationPath = $ConfigurationData.NonNodeData.WebpiServiceBusInstallBits.DestinationPath Ensure = 'Present' Force = $true SourcePath = $ConfigurationData.NonNodeData.WebpiServiceBusInstallBits.Path Recurse = $true Type = 'Directory' } Package ServiceBus1_1_CU1Installation { PsDscRunAsCredential = $LocalInstallAccount DependsOn = '[User]LocalSBInstallUser' Ensure = 'Present' Arguments = "/Install /Products:ServiceBus_1_1_CU1 /AcceptEULA /xml:$($ConfigurationData.NonNodeData.WebpiServiceBusInstallBits.DestinationPath)\feeds\latest\webproductlist.xml" Name = "Service Bus 1.1" Path = "$($ConfigurationData.NonNodeData.WebpiServiceBusInstallBits.DestinationPath)\bin\WebpiCmd-x64.exe" ProductId = "F438C511-5A64-433E-97EC-5E5343DA670A" ReturnCode = 0 } SBFarm ContosoSBFarm { DependsOn = '[xPfxImport]PfxImport' PsDscRunAsCredential = $DomainInstallAccount AdminApiCredentials = $AdminApiAccount EncryptionCertificateThumbprint = $ConfigurationData.NonNodeData.Certificates.Pfx.Thumbprint FarmCertificateThumbprint = $ConfigurationData.NonNodeData.Certificates.Pfx.Thumbprint FarmDNS = $ConfigurationData.NonNodeData.ServiceBus.SBFarm.FarmDNS RunAsAccount = $RunAsAccount.UserName SBFarmDBConnectionStringDataSource = $ConfigurationData.NonNodeData.SQLServer.DataSource TenantApiCredentials = $TenantApiAccount } SBHost ContosoSBHost { DependsOn = '[SBFarm]ContosoSBFarm' PsDscRunAsCredential = $DomainInstallAccount EnableFirewallRules = $true Ensure = 'Present' RunAsPassword = $RunAsAccount SBFarmDBConnectionStringDataSource = $ConfigurationData.NonNodeData.SQLServer.DataSource } SBNamespace ContosoNamespace { DependsOn = '[SBFarm]ContosoSBFarm' PsDscRunAsCredential = $DomainInstallAccount Ensure = 'Present' Name = $ConfigurationData.NonNodeData.ServiceBus.SBNameSpaces.ContosoNamespace ManageUsers = $DomainInstallAccount.UserName } SBMessageContainer SBMessageContainer01 { DependsOn = '[SBHost]ContosoSBHost' PsDscRunAsCredential = $DomainInstallAccount ContainerDBConnectionStringDataSource = $ConfigurationData.NonNodeData.SQLServer.DataSource ContainerDBConnectionStringInitialCatalog = $ConfigurationData.NonNodeData.ServiceBus.SBMessageContainers.'01' Ensure = 'Present' } SBMessageContainer SBMessageContainer02 { DependsOn = '[SBHost]ContosoSBHost' PsDscRunAsCredential = $DomainInstallAccount ContainerDBConnectionStringDataSource = $ConfigurationData.NonNodeData.SQLServer.DataSource ContainerDBConnectionStringInitialCatalog = $ConfigurationData.NonNodeData.ServiceBus.SBMessageContainers.'02' Ensure = 'Present' } SBMessageContainer SBMessageContainer03 { DependsOn = '[SBHost]ContosoSBHost' PsDscRunAsCredential = $DomainInstallAccount ContainerDBConnectionStringDataSource = $ConfigurationData.NonNodeData.SQLServer.DataSource ContainerDBConnectionStringInitialCatalog = $ConfigurationData.NonNodeData.ServiceBus.SBMessageContainers.'03' Ensure = 'Present' } SBAuthorizationRule ContosoNamespaceRule { DependsOn = '[SBNamespace]ContosoNamespace' PsDscRunAsCredential = $DomainInstallAccount Name = $ConfigurationData.NonNodeData.ServiceBus.SBAuthorizationRules.ContosoNamespaceRule.Name NamespaceName = $ConfigurationData.NonNodeData.ServiceBus.SBAuthorizationRules.ContosoNamespaceRule.NamespaceName Rights = $ConfigurationData.NonNodeData.ServiceBus.SBAuthorizationRules.ContosoNamespaceRule.Rights Ensure = 'Present' } SBHostCEIP CEIP { DependsOn = '[SBHost]ContosoSBHost' PsDscRunAsCredential = $DomainInstallAccount Ensure = 'Present' } SBRuntimeSetting DefaultMaximumQueueSizeInMegabytes { DependsOn = '[SBHost]ContosoSBHost' PsDscRunAsCredential = $DomainInstallAccount Name = $ConfigurationData.NonNodeData.ServiceBus.SBRuntimeSetting.DefaultMaximumQueueSizeInMegabytes.Name Value = $ConfigurationData.NonNodeData.ServiceBus.SBRuntimeSetting.DefaultMaximumQueueSizeInMegabytes.Value } } } |