ps/Modules/Alkami.DevOps.Installation/Public/Install-ORBWebServer.ps1
2023-05-30 22:51:22 -07:00

121 lines
4.4 KiB
PowerShell

function Install-ORBWebServer {
<#
.SYNOPSIS
Installs an ORB Web Server.
#>
# Todo: Set parameter groups and verification
[CmdletBinding()]
Param(
[Parameter(Mandatory = $false)]
[Alias("ClientSiteUrl")]
[string]$clientUrl,
[Parameter(Mandatory = $false)]
[Alias("AdminSiteUrl")]
[string]$adminUrl,
[Parameter(Mandatory = $false)]
[Alias("IpstsSiteUrl")]
[string]$ipstsUrl,
[Parameter(Mandatory = $false)]
[Alias("SecretServerUserName")]
[string]$secretUserName,
[Parameter(Mandatory = $false)]
[Alias("SecretServerPassword")]
[string]$secretPassword,
[Parameter(Mandatory = $false)]
[Alias("SecretServerFolders")]
[string]$secretFolderNames,
[Parameter(Mandatory = $false)]
[Alias("SecretServerDomain")]
[string]$secretDomain = "corp.alkamitech.com",
[Parameter(Mandatory = $false)]
[Alias("AppTierVIP")]
[string]$appTierVipPrefix,
[Parameter(ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, Mandatory = $false)]
[Alias("SkipWarmup")]
[switch]$skipSiteWarmup,
[Parameter(ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, Mandatory = $false)]
[Alias("CombineAdminAppPools")]
[switch]$doCombineAdminAppPools,
[Parameter(ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, Mandatory = $false)]
[Alias("CombineClientAppPools")]
[switch]$doCombineClientAppPools,
[Parameter(ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, Mandatory = $false)]
[Alias("CombineIPSTSAppPools")]
[switch]$doCombineIPSTSAppPools,
[Parameter(ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, Mandatory = $false)]
[Alias("CombineAdminWebSites")]
[switch]$doCombineAdminWebSites,
[Parameter(ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, Mandatory = $false)]
[Alias("CombineClientWebSites")]
[switch]$doCombineClientWebSites,
[Parameter(ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, Mandatory = $false)]
[Alias("CombineIPSTSWebSites")]
[switch]$doCombineIPSTSWebSites
)
if (Test-IsAppServer) {
$title = "You Are Attempting to Install the ORB Web Tier on a Machine Identified as an App Tier Server"
$message = "Do you want to quit?"
$yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes", "Breaks execution."
$no = New-Object System.Management.Automation.Host.ChoiceDescription "&No", "Continues execution."
$options = [System.Management.Automation.Host.ChoiceDescription[]]($yes, $no)
$result = $host.ui.PromptForChoice($title, $message, $options, 0)
switch ($result) {
0 { return }
}
}
$logLead = (Get-LogLeadName);
Write-Output ("$logLead : Configuring Machine as Web Tier Server for POD {0}" -f [Environment]::GetEnvironmentVariable("POD", "Machine"));
if (![String]::IsNullOrEmpty($secretUserName) -and ![String]::IsNullOrEmpty($secretPassword) -and ![String]::IsNullOrEmpty($secretFolderNames) -and ![String]::IsNullOrEmpty($secretDomain)) {
Read-WebTierSecrets $secretUserName $secretPassword $secretFolderNames $secretDomain;
}
Set-WebTierDefaultWebSite;
Set-WebTierFolderAndFilePermissions;
Set-ServerResponseHeaders;
Set-ServerMIMETypes;
New-WebTierMachineConfigAppSettings;
New-MachineConfigMachineKeys;
Write-Output "$logLead : Running New-OrbSymLinks"
New-OrbSymLinks
New-WebTierWebSites $clientUrl $adminUrl $ipstsUrl -CombineAdminAppPools:$doCombineAdminAppPools.IsPresent -CombineClientAppPools:$doCombineClientAppPools.IsPresent -CombineIPSTSAppPools:$doCombineIPSTSAppPools.IsPresent -CombineAdminWebSites:$doCombineAdminWebSites.IsPresent -CombineClientWebSites:$doCombineClientWebSites.IsPresent -CombineIPSTSWebSites:$doCombineIPSTSWebSites.IsPresent;
if (!([String]::IsNullOrEmpty($appTierVipPrefix))) {
New-VIPsHostFileEntries $appTierVipPrefix;
}
Rename-NewLogConfig;
Set-RapidFailSettings;
if ($skipSiteWarmup) {
return
}
Start-IISAndServices;
Write-Output "$logLead : Warming up sites...";
Ping-AlkamiWebSites;
}