Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions step-templates/iis-apppool-create.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"Id": "ActionTemplates-2",
"Id": "ActionTemplates-99",
"Name": "IIS AppPool - Create",
"Description": "Creates or Reconfigures an IIS Application Pool",
"ActionType": "Octopus.Script",
"Version": 9,
"Version": 4,
"Properties": {
"Octopus.Action.Script.ScriptBody": "## --------------------------------------------------------------------------------------\n## Input\n## --------------------------------------------------------------------------------------\n\n$appPoolName = $OctopusParameters['AppPoolName']\n\n$appPoolIdentityType = $OctopusParameters['AppPoolIdentityType']\nIF ($appPoolIdentityType -eq 3)\n{\n $appPoolIdentityUser = $OctopusParameters['AppPoolIdentityUser']\n $appPoolIdentityPassword = $OctopusParameters['AppPoolIdentityPassword']\n}\n\n$appPoolAutoStart = [boolean]::Parse($OctopusParameters['AppPoolAutoStart'])\n$appPoolEnable32BitAppOnWin64 = [boolean]::Parse($OctopusParameters['AppPoolEnable32BitAppOnWin64'])\n\n$appPoolManagedRuntimeVersion = $OctopusParameters['AppPoolManagedRuntimeVersion']\n$appPoolManagedPipelineMode = $OctopusParameters['AppPoolManagedPipelineMode']\n\n$appPoolIdleTimeout = [TimeSpan]::FromMinutes($OctopusParameters['AppPoolIdleTimeoutMinutes'])\n$appPoolMaxProcesses = [int]$OctopusParameters['AppPoolMaxProcesses']\n$appPoolRegularTimeInterval = [TimeSpan]::FromMinutes($OctopusParameters['AppPoolRegularTimeInterval'])\n$appPoolQueueLength = [int]$OctopusParameters['AppPoolQueueLength']\n\n\n## --------------------------------------------------------------------------------------\n## Helpers\n## --------------------------------------------------------------------------------------\n# Helper for validating input parameters\nfunction Validate-Parameter([string]$foo, [string[]]$validInput, $parameterName) {\n IF (! $parameterName -contains \"Password\") \n { \n Write-Host \"${parameterName}: $foo\" \n }\n if (! $foo) {\n Write-Host \"No value was set for $($parameterName), and it cannot be empty\"\n }\n}\n\n## --------------------------------------------------------------------------------------\n## Configuration\n## --------------------------------------------------------------------------------------\nValidate-Parameter $appPoolName -parameterName \"Application Pool Name\"\nValidate-Parameter $appPoolIdentityType -parameterName \"Identity Type\"\nIF ($appPoolIdentityType -eq 3)\n{\n Validate-Parameter $appPoolIdentityUser -parameterName \"Identity UserName\"\n Validate-Parameter $appPoolIdentityPassword -parameterName \"Identity Password\"\n}\nValidate-Parameter $appPoolAutoStart -parameterName \"AutoStart\"\nValidate-Parameter $appPoolEnable32BitAppOnWin64 -parameterName \"Enable 32-Bit Apps on 64-bit Windows\"\n\nValidate-Parameter $appPoolManagedRuntimeVersion -parameterName \"Managed Runtime Version\"\nValidate-Parameter $appPoolManagedPipelineMode -parameterName \"Managed Pipeline Mode\"\n\nValidate-Parameter $appPoolIdleTimeout -parameterName \"Process Idle Timeout\"\nValidate-Parameter $appPoolMaxProcesses -parameterName \"Maximum Worker Processes\"\n\n#Load Web Admin DLL\n[System.Reflection.Assembly]::LoadFrom( \"C:\\windows\\system32\\inetsrv\\Microsoft.Web.Administration.dll\" )\n\nAdd-PSSnapin WebAdministration -ErrorAction SilentlyContinue\nImport-Module WebAdministration -ErrorAction SilentlyContinue\n\n\n## --------------------------------------------------------------------------------------\n## Run\n## --------------------------------------------------------------------------------------\n\n$iis = (New-Object Microsoft.Web.Administration.ServerManager)\n\n$pool = $iis.ApplicationPools | Where {$_.Name -eq $appPoolName} | Select-Object -First 1\n\nIF ($pool -eq $null)\n{\n Write-Output \"Creating Application Pool '$appPoolName'\"\n $iis.ApplicationPools.Add($appPoolName)\n $iis.CommitChanges()\n}\nELSE\n{\n Write-Output \"Application Pool '$appPoolName' already exists, reconfiguring.\"\n}\n\n$pool = $iis.ApplicationPools | Where {$_.Name -eq $appPoolName} | Select-Object -First 1\n\nWrite-Output \"Setting: AutoStart = $appPoolAutoStart\"\n$pool.AutoStart = $appPoolAutoStart;\n\nWrite-Output \"Setting: Enable32BitAppOnWin64 = $appPoolEnable32BitAppOnWin64\"\n$pool.Enable32BitAppOnWin64 = $appPoolEnable32BitAppOnWin64;\n\nWrite-Output \"Setting: IdentityType = $appPoolIdentityType\"\n$pool.ProcessModel.IdentityType = $appPoolIdentityType\n\nIF ($appPoolIdentityType -eq 3)\n{\n Write-Output \"Setting: UserName = $appPoolIdentityUser\"\n $pool.ProcessModel.UserName = $appPoolIdentityUser\n \n Write-Output \"Setting: Password = [Omitted For Security]\"\n $pool.ProcessModel.Password = $appPoolIdentityPassword\n}\n\nWrite-Output \"Setting: ManagedRuntimeVersion = $appPoolManagedRuntimeVersion\"\n$pool.ManagedRuntimeVersion = $appPoolManagedRuntimeVersion\n\nWrite-Output \"Setting: ManagedPipelineMode = $appPoolManagedPipelineMode\"\n$pool.ManagedPipelineMode = $appPoolManagedPipelineMode\n\nWrite-Output \"Setting: IdleTimeout = $appPoolIdleTimeout\"\n$pool.ProcessModel.IdleTimeout = $appPoolIdleTimeout\n\nWrite-Output \"Setting: MaxProcesses = $appPoolMaxProcesses\"\n$pool.ProcessModel.MaxProcesses = $appPoolMaxProcesses\n\nWrite-Output \"Setting: RegularTimeInterval = $appPoolRegularTimeInterval\"\n$pool.Recycling.PeriodicRestart.Time = $appPoolRegularTimeInterval\n\nWrite-Output \"Setting: QueueLength = $appPoolQueueLength\"\n$pool.QueueLength = $appPoolQueueLength\n\n$iis.CommitChanges()\n"
"Octopus.Action.Script.ScriptBody": "## --------------------------------------------------------------------------------------\n## Input\n## --------------------------------------------------------------------------------------\n\n$appPoolName = $OctopusParameters['AppPoolName']\n\n$appPoolIdentityType = $OctopusParameters['AppPoolIdentityType']\nIF ($appPoolIdentityType -eq 3)\n{\n $appPoolIdentityUser = $OctopusParameters['AppPoolIdentityUser']\n $appPoolIdentityPassword = $OctopusParameters['AppPoolIdentityPassword']\n}\n\n$appPoolAutoStart = [boolean]::Parse($OctopusParameters['AppPoolAutoStart'])\n$appPoolEnable32BitAppOnWin64 = [boolean]::Parse($OctopusParameters['AppPoolEnable32BitAppOnWin64'])\n\n$appPoolManagedRuntimeVersion = $OctopusParameters['AppPoolManagedRuntimeVersion']\n$appPoolManagedPipelineMode = $OctopusParameters['AppPoolManagedPipelineMode']\n\n$appPoolIdleTimeout = [TimeSpan]::FromMinutes($OctopusParameters['AppPoolIdleTimeoutMinutes'])\n$appPoolMaxProcesses = [int]$OctopusParameters['AppPoolMaxProcesses']\n$appPoolRegularTimeInterval = [TimeSpan]::FromMinutes($OctopusParameters['AppPoolRegularTimeInterval'])\n$appPoolQueueLength = [int]$OctopusParameters['AppPoolQueueLength']\n\n\n## --------------------------------------------------------------------------------------\n## Helpers\n## --------------------------------------------------------------------------------------\n# Helper for validating input parameters\nfunction Validate-Parameter([string]$foo, [string[]]$validInput, $parameterName) {\n IF (! $parameterName -contains \"Password\") \n { \n Write-Host \"${parameterName}: $foo\" \n }\n if (! $foo) {\n Write-Host \"No value was set for $($parameterName), and it cannot be empty\"\n }\n}\n\n# Helper to run a block with a retry if things go wrong\n$maxFailures = 5\n$sleepBetweenFailures = Get-Random -minimum 1 -maximum 4\nfunction Execute-WithRetry([ScriptBlock] $command) {\n\t$attemptCount = 0\n\t$operationIncomplete = $true\n\n\twhile ($operationIncomplete -and $attemptCount -lt $maxFailures) {\n\t\t$attemptCount = ($attemptCount + 1)\n\n\t\tif ($attemptCount -ge 2) {\n\t\t\tWrite-Output \"Waiting for $sleepBetweenFailures seconds before retrying...\"\n\t\t\tStart-Sleep -s $sleepBetweenFailures\n\t\t\tWrite-Output \"Retrying...\"\n\t\t}\n\n\t\ttry {\n\t\t\t& $command\n\n\t\t\t$operationIncomplete = $false\n\t\t} catch [System.Exception] {\n\t\t\tif ($attemptCount -lt ($maxFailures)) {\n\t\t\t\tWrite-Output (\"Attempt $attemptCount of $maxFailures failed: \" + $_.Exception.Message)\n\t\t\t\n\t\t\t}\n\t\t\telse {\n\t\t\t throw \"Failed to execute command\"\n\t\t\t}\n\t\t}\n\t}\n}\n\n## --------------------------------------------------------------------------------------\n## Configuration\n## --------------------------------------------------------------------------------------\nValidate-Parameter $appPoolName -parameterName \"Application Pool Name\"\nValidate-Parameter $appPoolIdentityType -parameterName \"Identity Type\"\nIF ($appPoolIdentityType -eq 3)\n{\n Validate-Parameter $appPoolIdentityUser -parameterName \"Identity UserName\"\n Validate-Parameter $appPoolIdentityPassword -parameterName \"Identity Password\"\n}\nValidate-Parameter $appPoolAutoStart -parameterName \"AutoStart\"\nValidate-Parameter $appPoolEnable32BitAppOnWin64 -parameterName \"Enable 32-Bit Apps on 64-bit Windows\"\n\nValidate-Parameter $appPoolManagedRuntimeVersion -parameterName \"Managed Runtime Version\"\nValidate-Parameter $appPoolManagedPipelineMode -parameterName \"Managed Pipeline Mode\"\n\nValidate-Parameter $appPoolIdleTimeout -parameterName \"Process Idle Timeout\"\nValidate-Parameter $appPoolMaxProcesses -parameterName \"Maximum Worker Processes\"\n\n#Load Web Admin DLL\n[System.Reflection.Assembly]::LoadFrom( \"C:\\windows\\system32\\inetsrv\\Microsoft.Web.Administration.dll\" )\n\nAdd-PSSnapin WebAdministration -ErrorAction SilentlyContinue\nImport-Module WebAdministration -ErrorAction SilentlyContinue\n\n\n## --------------------------------------------------------------------------------------\n## Run\n## --------------------------------------------------------------------------------------\n\n$iis = (New-Object Microsoft.Web.Administration.ServerManager)\n\n$pool = $iis.ApplicationPools | Where {$_.Name -eq $appPoolName} | Select-Object -First 1\n\nIF ($pool -eq $null)\n{\n Write-Output \"Creating Application Pool '$appPoolName'\"\n Execute-WithRetry {\n $iis.ApplicationPools.Add($appPoolName)\n $iis.CommitChanges()\n }\n}\nELSE\n{\n Write-Output \"Application Pool '$appPoolName' already exists, reconfiguring.\"\n}\n\nExecute-WithRetry {\n $pool = $iis.ApplicationPools | Where {$_.Name -eq $appPoolName} | Select-Object -First 1\n\n Write-Output \"Setting: AutoStart = $appPoolAutoStart\"\n $pool.AutoStart = $appPoolAutoStart;\n \n Write-Output \"Setting: Enable32BitAppOnWin64 = $appPoolEnable32BitAppOnWin64\"\n $pool.Enable32BitAppOnWin64 = $appPoolEnable32BitAppOnWin64;\n \n Write-Output \"Setting: IdentityType = $appPoolIdentityType\"\n $pool.ProcessModel.IdentityType = $appPoolIdentityType\n \n IF ($appPoolIdentityType -eq 3)\n {\n Write-Output \"Setting: UserName = $appPoolIdentityUser\"\n $pool.ProcessModel.UserName = $appPoolIdentityUser\n \n Write-Output \"Setting: Password = [Omitted For Security]\"\n $pool.ProcessModel.Password = $appPoolIdentityPassword\n }\n \n Write-Output \"Setting: ManagedRuntimeVersion = $appPoolManagedRuntimeVersion\"\n $pool.ManagedRuntimeVersion = $appPoolManagedRuntimeVersion\n \n Write-Output \"Setting: ManagedPipelineMode = $appPoolManagedPipelineMode\"\n $pool.ManagedPipelineMode = $appPoolManagedPipelineMode\n \n Write-Output \"Setting: IdleTimeout = $appPoolIdleTimeout\"\n $pool.ProcessModel.IdleTimeout = $appPoolIdleTimeout\n \n Write-Output \"Setting: MaxProcesses = $appPoolMaxProcesses\"\n $pool.ProcessModel.MaxProcesses = $appPoolMaxProcesses\n \n Write-Output \"Setting: RegularTimeInterval = $appPoolRegularTimeInterval\"\n $pool.Recycling.PeriodicRestart.Time = $appPoolRegularTimeInterval\n \n Write-Output \"Setting: QueueLength = $appPoolQueueLength\"\n $pool.QueueLength = $appPoolQueueLength\n\n $iis.CommitChanges()\n}"
},
"SensitiveProperties": {},
"Parameters": [
Expand Down Expand Up @@ -104,28 +104,28 @@
},
{
"Name": "AppPoolRegularTimeInterval",
"Label": "Regular Time Interval (Minutes)",
"HelpText": "[time] Period of time (in minutes) after which an application pool will recycle. A value of 0 means the application pool does not recycle on a regular interval.",
"Label": "Regular Time Interval",
"HelpText": "Period of time (in minutes) after which an application pool will recycle. A value of 0 means the application pool does not recycle on a regular interval.",
"DefaultValue": "1740",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "AppPoolQueueLength",
"Label": "QueueLength",
"HelpText": "[queueLength] Maximum number of requests that HTTP.sys will queue for the application pool. When the queue is full, new requests receive a 504 \"Service Unavailable\" response.",
"Label": "Queue Length",
"HelpText": "Maximum number of requests that HTTP.sys will queue for the application pool. When the queue is full, new requests receive a 504 \"Service Unavailable\" response.",
"DefaultValue": "1000",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
}
],
"LastModifiedOn": "2015-08-05T19:24:27.131+00:00",
"LastModifiedBy": "josh3ennett",
"LastModifiedOn": "2015-09-03T23:11:10.375+00:00",
"LastModifiedBy": "active-low",
"$Meta": {
"ExportedAt": "2015-08-05T19:37:49.384Z",
"OctopusVersion": "2.6.4.951",
"ExportedAt": "2015-09-03T23:13:53.326Z",
"OctopusVersion": "2.6.5.1010",
"Type": "ActionTemplate"
}
}