2.Image.Builder/Windows/customize.job.scheduler.ps1 (74 lines of code) (raw):
param (
[string] $buildConfigEncoded
)
. C:\AzureData\functions.ps1
Write-Host "Customize (Start): Job Scheduler"
if ($jobSchedulers -contains "Deadline") {
$appVersion = $buildConfig.appVersion.jobSchedulerDeadline
$databaseHost = $(hostname)
$databasePath = "C:\DeadlineData"
$deadlinePath = "C:\DeadlineServer"
$deadlineCertificate = "Deadline10Client.pfx"
$binPathJobScheduler = "$deadlinePath\bin"
Write-Host "Customize (Start): Deadline Download"
$fileName = "Deadline-$appVersion-windows-installers.zip"
$fileLink = "$($blobStorage.endpointUrl)/Deadline/$appVersion/$fileName"
DownloadFile $fileName $fileLink $true
Expand-Archive -Path $fileName
Write-Host "Customize (End): Deadline Download"
Set-Location -Path Deadline*
if ($machineType -eq "Scheduler") {
Write-Host "Customize (Start): Deadline Server"
$fileType = "deadline-repository"
$fileName = "DeadlineRepository-$appVersion-windows-installer.exe"
RunProcess .\$fileName "--mode unattended --dbLicenseAcceptance accept --prefix $deadlinePath --dbhost $databaseHost --mongodir $databasePath --installmongodb true" "$binDirectory\$fileType"
Move-Item -Path $Env:TMP\installbuilder_installer.log -Destination $binDirectory\$fileType.log
Copy-Item -Path $databasePath\certs\$deadlineCertificate -Destination $deadlinePath\$deadlineCertificate
New-NfsShare -Name "Deadline" -Path $deadlinePath -Permission ReadWrite
Write-Host "Customize (End): Deadline Server"
}
Write-Host "Customize (Start): Deadline Client"
$fileType = "deadline-client"
$fileName = "DeadlineClient-$appVersion-windows-installer.exe"
$fileArgs = "--mode unattended --prefix $deadlinePath"
$workerService = "false"
$workerStartup = "false"
if ($machineType -eq "Cluster") {
$workerService = "true"
$workerStartup = "true"
$securePassword = ConvertTo-SecureString $servicePassword -AsPlainText -Force
New-LocalUser -Name $serviceUsername -Password $securePassword -PasswordNeverExpires
$fileArgs = "$fileArgs --serviceuser $serviceUsername --servicepassword $servicePassword"
}
$fileArgs = "$fileArgs --launcherservice $workerService --slavestartup $workerStartup"
RunProcess .\$fileName $fileArgs "$binDirectory\$fileType"
Move-Item -Path $Env:TMP\installbuilder_installer.log -Destination $binDirectory\$fileType.log
Set-Location -Path $binDirectory
Write-Host "Customize (End): Deadline Client"
Write-Host "Customize (Start): Deadline Repository"
$taskName = "AAA Deadline Repository"
if ($machineType -eq "Scheduler") {
$taskAction = New-ScheduledTaskAction -Execute "$binPathJobScheduler\deadlinecommand.exe" -Argument "-ChangeRepository Direct $deadlinePath $deadlinePath\$deadlineCertificate"
} else {
$taskAction = New-ScheduledTaskAction -Execute "$binPathJobScheduler\deadlinecommand.exe" -Argument "-ChangeRepository Direct S:\ S:\$deadlineCertificate"
}
$taskTrigger = New-ScheduledTaskTrigger -AtLogOn
$taskPrincipal = New-ScheduledTaskPrincipal -GroupId "Users"
$task = New-ScheduledTask -Action $taskAction -Trigger $taskTrigger -Principal $taskPrincipal
Register-ScheduledTask -TaskName $taskName -InputObject $task
Write-Host "Customize (End): Deadline Repository"
Write-Host "Customize (Start): Deadline Monitor"
$shortcutPath = "$Env:AllUsersProfile\Desktop\Deadline Monitor.lnk"
$scriptShell = New-Object -ComObject WScript.Shell
$shortcut = $scriptShell.CreateShortcut($shortcutPath)
$shortcut.WorkingDirectory = $binPathJobScheduler
$shortcut.TargetPath = "$binPathJobScheduler\deadlinemonitor.exe"
$shortcut.Save()
Write-Host "Customize (End): Deadline Monitor"
$binPaths += ";$binPathJobScheduler"
}
if ($binPaths -ne "") {
Write-Host "Customize (PATH): $($binPaths.substring(1))"
[Environment]::SetEnvironmentVariable("PATH", "$Env:PATH$binPaths", "Machine")
}
Write-Host "Customize (End): Job Scheduler"