Octopus.Script exported 2016-12-13 by kp-tseng belongs to ‘Encrypt’ category.
Encrypts configuration sections for the specified executable.
Parameters
When steps based on the template are included in a project’s deployment process, the parameters below can be set.
Executable path
ExecutablePath
The path to the executable that has a corresponding [Executable].exe.config
file.
You can get the InstallationDirectoryPath like so #{Octopus.Action[StepName].Output.Package.InstallationDirectoryPath}
Sections to encrypt
SectionsToEncrypt
The name of the section in the App config to encrypt e.g. appSettings
, connectionStrings
etc. For multiple sections, separate with a comma (,)
Provider Name
Provider
The provider to use for encryption
Script body
Steps based on this template will execute the following PowerShell script.
$ErrorActionPreference = "Stop"
function Get-Parameter($Name, $Default, [switch]$Required) {
$result = $null
if ($OctopusParameters -ne $null) {
$result = $OctopusParameters[$Name]
}
if ($result -eq $null) {
if ($Required) {
throw "Missing parameter value $Name"
} else {
$result = $Default
}
}
return $result
}
function HandleError($message) {
if (!$whatIf) {
throw $message
} else {
Write-Host $message -Foreground Yellow
}
}
$appPath = Get-Parameter "ExecutablePath" -Required
$sectionsToEncrypt = (Get-Parameter "SectionsToEncrypt" -Required) -split ',' | where {$_} | %{$_.Trim()}
$provider = Get-Parameter "Provider" "DataProtectionConfigurationProvider"
Write-Host "Configuration - Encrypt .config"
Write-Host "ExecutablePath: $appPath"
Write-Host "SectionToEncrypt: $sectionName"
Write-Host "Provider: $provider"
if (!(Test-Path $appPath)) {
HandleError "The directory $appPath must exist"
}
$configurationAssembly = "System.Configuration, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=b03f5f7f11d50a3a"
[void] [Reflection.Assembly]::Load($configurationAssembly)
$configuration = [System.Configuration.ConfigurationManager]::OpenExeConfiguration($appPath)
foreach ($sectionToEncrypt in $sectionsToEncrypt){
$section = $configuration.GetSection($sectionToEncrypt)
if (-not $section.SectionInformation.IsProtected)
{
$section.SectionInformation.ProtectSection($provider);
$section.SectionInformation.ForceSave = [System.Boolean]::True;
}
}
$configuration.Save([System.Configuration.ConfigurationSaveMode]::Modified);
Provided under the Apache License version 2.0.
To use this template in Octopus Deploy, copy the JSON below and paste it into the Library → Step templates → Import dialog.
{
"Id": "d80a7d9a-8c7b-4aa6-934e-0929bce606fe",
"Name": "Configuration - Encrypt App.config Section",
"Description": "Encrypts configuration sections for the specified executable.",
"Version": 2,
"ExportedAt": "2016-12-13T07:19:21.741Z",
"ActionType": "Octopus.Script",
"Author": "kp-tseng",
"Parameters": [
{
"Name": "ExecutablePath",
"Label": "Executable path",
"HelpText": "The path to the executable that has a corresponding `[Executable].exe.config` file. \n\nYou can get the InstallationDirectoryPath like so `#{Octopus.Action[StepName].Output.Package.InstallationDirectoryPath}`",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "SectionsToEncrypt",
"Label": "Sections to encrypt",
"HelpText": "The name of the section in the App config to encrypt e.g. `appSettings`, `connectionStrings` etc. For multiple sections, separate with a comma (,)",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Name": "Provider",
"Label": "Provider Name",
"HelpText": "The provider to use for encryption",
"DefaultValue": null,
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
}
],
"Properties": {
"Octopus.Action.Script.ScriptBody": "$ErrorActionPreference = \"Stop\" \nfunction Get-Parameter($Name, $Default, [switch]$Required) {\n $result = $null\n\n if ($OctopusParameters -ne $null) {\n $result = $OctopusParameters[$Name]\n }\n\n if ($result -eq $null) {\n if ($Required) {\n throw \"Missing parameter value $Name\"\n } else {\n $result = $Default\n }\n }\n\n return $result\n}\n\nfunction HandleError($message) {\n\tif (!$whatIf) {\n\t\tthrow $message\n\t} else {\n\t\tWrite-Host $message -Foreground Yellow\n\t}\n}\n\n$appPath = Get-Parameter \"ExecutablePath\" -Required\n$sectionsToEncrypt = (Get-Parameter \"SectionsToEncrypt\" -Required) -split ',' | where {$_} | %{$_.Trim()}\n$provider = Get-Parameter \"Provider\" \"DataProtectionConfigurationProvider\"\n\nWrite-Host \"Configuration - Encrypt .config\"\nWrite-Host \"ExecutablePath: $appPath\"\nWrite-Host \"SectionToEncrypt: $sectionName\"\nWrite-Host \"Provider: $provider\"\n\nif (!(Test-Path $appPath)) {\n HandleError \"The directory $appPath must exist\"\n}\n\n$configurationAssembly = \"System.Configuration, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=b03f5f7f11d50a3a\"\n[void] [Reflection.Assembly]::Load($configurationAssembly)\n \n$configuration = [System.Configuration.ConfigurationManager]::OpenExeConfiguration($appPath)\n\nforeach ($sectionToEncrypt in $sectionsToEncrypt){\n\t$section = $configuration.GetSection($sectionToEncrypt)\n \n if (-not $section.SectionInformation.IsProtected)\n {\n $section.SectionInformation.ProtectSection($provider);\n $section.SectionInformation.ForceSave = [System.Boolean]::True;\n }\n}\n\n$configuration.Save([System.Configuration.ConfigurationSaveMode]::Modified);",
"Octopus.Action.Script.Syntax": "PowerShell"
},
"Category": "Encrypt",
"HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/configuration-encrypt-app-config-section.json",
"Website": "/step-templates/d80a7d9a-8c7b-4aa6-934e-0929bce606fe",
"Logo": "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",
"$Meta": {
"Type": "ActionTemplate"
}
}
Page updated on Tuesday, December 13, 2016