SharePointDsc icon indicating copy to clipboard operation
SharePointDsc copied to clipboard

SPSideBySideSettings: New resource for enabling ZDP with DSC in SP 2016 and 2019

Open andikrueger opened this issue 6 years ago • 5 comments

Following up on #1096 about ZDP there would be the need to create a new resource to handle Side-by-Side in this scenario. The new resource could look like this:

Enabling SideBySide could look like this and would set the SideBySide token to the current patch level.

SPZeroDownTimePatching EnableSideBySide {
    SideBySide = “Enable”
}

After the patching is done... Setting SideBySideToken to the new Farm Version could look like this:

SPZeroDownTimePatching EnableSideBySide {
    SideBySide = “Upgrade”
}

All information needed to set the web application property WebSerivce.SideBySideToken can be obtained within this resource, by querying the farm or using a part of the new methods introduced with the refactoring of SPProductUpdate

Maybe there should be an option available to disable SideBySide - but this is not necessarily a key feature we should implement.

Edit: The resource needs to have a key that can be only two values. This would make it possible to use this resource in a given configuration twice.

andikrueger avatar Jul 18 '19 18:07 andikrueger

See my comment in the other issue. I don't think this resource is needed, since the two examples will be in constant conflict and the server will never be in a compliant state.

ykuijs avatar Jul 18 '19 21:07 ykuijs

I think, there is a chance to resolve this potential conflict.

Both examples need to return true (test-method) for the following case:

Local Version obtained from the SPProductUpdate Method equals the Farm Version and SideBySide is enabled and the SideBySideToken equals the Farm Version

False for

  • first example: — SideBySide is not enabled — Version mismatch

  • second example: — SideBySide is not enabled — Version mismatch

Basically both would return the same status - the set method would differ though. I’m “Enable” the set method would pass the current Version to SharePoint. In “Upgrade” it would set the installed Version.

andikrueger avatar Jul 18 '19 21:07 andikrueger

wouldn't this work?

SPZeroDownTimePatching EnableSideBySideCurrentVersion {
    MinimumVersion = "16.0.4888.1000" 
    Enabled = "Present"
}

... handle cross node dependencies / order
SPProductUpdate LatestPatch {}
... wait for all product updates to complete / cross node dependencies / ordering.
SPConfigWizard ConfigWizard {}
... handle any reboot requirements / ensure another WFE is available to serve requests.

SPZeroDownTimePatching EnableSideBySideLatestVersion {
    MinimumVersion = "16.0.4900.1000" 
    Enabled = "Present"
}
  1. Enabled would control your sideBySide being enabled or disabled.
  2. MinimumVersion would handle version matching by the following rule

The idea would be if the Test-Resource would return true if local version on a specific node was equal to or greater than the version specified. Could also just include a "Version" tag to force set to a specific version (perhaps as part of an install scriptj).

mrpullen avatar Sep 16 '19 18:09 mrpullen

The suggestion for the SPZeroDownTimePatching resource would work indeed. The MinimumVersion needs to be Key parameter in this case. And out of interest, what would the Enabled parameter do in this case?

ykuijs avatar Sep 19 '19 10:09 ykuijs

Using the parameter MinimumVersion to handle the potential conflict of my suggestions is a very good idea.

@ykuijs For my understanding the parameter Enabled will control the SideBySide Setting of the web application: https://docs.microsoft.com/en-us/previous-versions/office/sharepoint-server/dn778174(v=office.15)?redirectedfrom=MSDN

andikrueger avatar Sep 19 '19 11:09 andikrueger