Examples/Resources/SqlAG/1-CreateAvailabilityGroup.ps1
<#
.EXAMPLE This example shows how to ensure that the Availability Group 'TestAG' exists. #> $ConfigurationData = @{ AllNodes = @( @{ NodeName = '*' InstanceName = 'MSSQLSERVER' <# 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. #> PSDscAllowPlainTextPassword = $true }, @{ NodeName = 'SP23-VM-SQL1' Role = 'PrimaryReplica' } ) } Configuration Example { param( [Parameter(Mandatory = $true)] [System.Management.Automation.PSCredential] $SqlAdministratorCredential ) Import-DscResource -ModuleName SqlServerDsc Node $AllNodes.NodeName { # Adding the required service account to allow the cluster to log into SQL SqlServerLogin AddNTServiceClusSvc { Ensure = 'Present' Name = 'NT SERVICE\ClusSvc' LoginType = 'WindowsUser' ServerName = $Node.NodeName InstanceName = $Node.InstanceName PsDscRunAsCredential = $SqlAdministratorCredential } # Add the required permissions to the cluster service login SqlServerPermission AddNTServiceClusSvcPermissions { DependsOn = '[SqlServerLogin]AddNTServiceClusSvc' Ensure = 'Present' ServerName = $Node.NodeName InstanceName = $Node.InstanceName Principal = 'NT SERVICE\ClusSvc' Permission = 'AlterAnyAvailabilityGroup', 'ViewServerState' PsDscRunAsCredential = $SqlAdministratorCredential } # Create a DatabaseMirroring endpoint SqlServerEndpoint HADREndpoint { EndPointName = 'HADR' Ensure = 'Present' Port = 5022 ServerName = $Node.NodeName InstanceName = $Node.InstanceName PsDscRunAsCredential = $SqlAdministratorCredential } if ( $Node.Role -eq 'PrimaryReplica' ) { # Create the availability group on the instance tagged as the primary replica SqlAG AddTestAG { Ensure = 'Present' Name = 'TestAG' InstanceName = $Node.InstanceName ServerName = $Node.NodeName DependsOn = '[SqlServerEndpoint]HADREndpoint', '[SqlServerPermission]AddNTServiceClusSvcPermissions' PsDscRunAsCredential = $SqlAdministratorCredential } } } } |