Automating on SDL Tridion Docs (TDS2019) - Reducing deployment effort

We recently had two Tridion Developer Summits - one on SDL Connect 2019 and one in Amsterdam this week. On both occasions I more or less used the same two demo scenarios. The slides of SDL Connect 2019 Developer Day can be retrieved over https://www.sdl.com/event/sdl-connect/san-francisco/sessions.html, then select Developer Day at the top and at the bottom you'll find Reducing Deployment Effort and Automating Business Processes with SDL Tridion Docs. (I think you'll have to pass you email, but if you were on the conference we already have that anyway Innocent)

Quick edit, the video recordings are now available, the sessions are nearly identical

  1. https://community.sdl.com/product-groups/sdl-tridion-dx/tridion-docs/m/videos/4024 is the recording at SDL Connect 2019
  2. https://vimeo.com/378093731 is the recording at Developer Day in Amsterdam 2019 ... perhaps this recording has the better shared screen quality

This post will hold the source code of the ISDeploy Recipe script sample I demonstrated.

Good news is that soon we will release ISHDeploy 2.0 that will also hold

  • [PSCredential] overload, so no separate Get-Credential -Credential "InfoShare2" required
  • COM+ Application changes/restart recovery
  • Copy-ISHFile improvements, FreePort check if you want to relocate the listening port of back end services
  • and more

Note that ISDeploy documentation is on https://sdl.github.io/ISHDeploy/ where typical scenarios are explained and it also holds the cmdlet documentation (exactly the same as Get-Help though).

# This should be a script that needs to be run on every CMS WebApp server after vanilla InstallTool (IT). Scope is one server.
# When upgrading or scaling out, the database schema upgrade (DBUT) and Administrator Settings (ISHRemote) is a separate step.
#
# 20190920/ddemeyer
# . Created on 13/13.0.2
# . Updated for 14/14.0.0
#



# DEMO
#
# Having a vanilla IShCD InstallTool installation
#
Get-ISHDeploymentParameters # holds the current 'inputparameter' values, which you can use in your script
Get-ISHDeploymentParameters -Name apppath




#
# BEGIN OF RECIPE
#
#
# PRE-PHASE: STOP DEPLOYMENT
#
Stop-ISHDeployment # ISHDeploy knows how to start this CMS version




#
# BODY-PHASE: YOUR INITIAL RECIPE
#
# . Copying project specific files in place like DITA-OT or MetadataConfig.xml, etc
# . Enabling all roles, potentially markers could indicate BackEnd or FrontEnd box allowing conditional enablement
#
Copy-ISHFile -Force -ishCD C:\IShCD\20190924.CD.InfoShare.14.0.3105.0.SDLDOC\CustomerSpecificFiles\FilesToCopy\
Enable-ISHServiceBackgroundTask
Enable-ISHServiceFullTextIndex
Enable-ISHServiceTranslationBuilder
Enable-ISHServiceTranslationOrganizer
Enable-ISHUITranslationJob
#Enable-ISHUIContentEditor # Works on 13.0.x, but no longer supported on 14.0.0
Enable-ISHUICollectiveSpaces -DraftSpace




#
# BODY-PHASE: YOUR INITIAL RECIPE OVER TIME... A LIVING SYSTEM
#
# . Setting up initial integrations like Translation Organizer (FileSystem, TMS, WS)
Remove-ISHTranslationFileSystemExport
Set-ISHTranslationFileSystemExport -Name "$env:COMPUTERNAME-FileSystem" -ExportFolderPath "C:\TEMP" -MaximumJobSize 5242880



<#
$mappings=@(
New-ISHIntegrationWorldServerMapping -ISHLanguage en -WSLocaleID 1145
New-ISHIntegrationWorldServerMapping -ISHLanguage zh -WSLocaleID 1166
New-ISHIntegrationWorldServerMapping -ISHLanguage ja -WSLocaleID 1167
)
$credential = Get-Credential -Credential "testUserName"
Set-ISHIntegrationWorldServer -Name WorldServer -Uri http://worldserver.example.com:8080/ws/services -Credential $credential -Mappings $mappings
#>




#
# BODY-PHASE: YOUR INITIAL RECIPE OVER TIME... A LIVING SYSTEM
#
# . Database Connectionstring, like relocation, tell all components on this WebApp server to redirect
# . OSUser, like password expiration, tell all components to roll over username and/or password
# . Certificate, again expiration, tell all components to roll over
# . Secure Token Service, like relocation
#
Set-ISHIntegrationDB -ConnectionString "Provider=MSOLEDBSQL.1;Password=isource;Persist Security Info=True;User ID=isourceSDLDOC;Initial Catalog=InfoShareSDLDOC;Data Source=MEDEVDDEMEYER10;Initial File Name=''" -Engine sqlserver2017
Test-ISHIntegrationDB



$credential = Get-Credential -Credential "InfoShare2"
Set-ISHOSUser -Credential $credential



<#
# Certificate, typically certificate rollover because of experiation. Often we reuse the certificate, but technically they are separated.
$certificateName="ISHSTS (20161201)"
$certificateThumbprint="20161201.Thumbprint"
# STS Token Signing Certificate
Set-ISHSTSConfiguration -TokenSigningCertificateThumbprint $certificateThumbprint
# Relying Party Token Signing Certificate
Set-ISHIntegrationSTSCertificate -Issuer $certificateName -Thumbprint $certificateThumbprint
Set-ISHAPIWCFServiceCertificate -Thumbprint $certificateThumbprint
# Don't forget the Microsoft IIS TLS that offers HTTPS
#>




#
# POST-PHASE: START DEPLOYMENT
#
Start-ISHDeployment # ISHDeploy knows how to start this CMS version
#
# END OF RECIPE
#




# DEMO
#
# Just checking, read operations on what has changed
#
Get-ISHDeploymentParameters -Changed


#
# DONE
#

Have fun,
Dave