Octopus.Script exported 2024-11-06 by edlyn.liew@octopus.com belongs to ‘1Password Connect’ category.
This step retrieves one or more secrets from 1Password Connect Server and creates sensitive output variables for each value retrieved.
The step supports creating a variable for each key-value in a secret that’s retrieved, or you can specify individual keys. These values can be used in other steps in your deployment or runbook process.
We highly recommend creating a custom docker image based off the base image octopuslabs/workertools:latest
. As running this step template will require the following additional packages installed:
- 1Password CLI (op)
- DNS Utilities (nslookup)
Parameters
When steps based on the template are included in a project’s deployment process, the parameters below can be set.
One Password Connect Host
OnePass.CONNECT_HOST =
`https://developer.1password.com/docs/connect/manage-connect/#create-a-token
In` the format https://your-1password-connect-server-url
One Password Connect Token
OnePass.CONNECT_TOKEN =
`https://developer.1password.com/docs/connect/manage-connect/#create-a-token
`
OnePass.SecretsManager.RetrieveSecrets.SecretNames =
Specify the names of the secrets to be returned from OnePassword Connect Vault, in the format:
op://vault-name/item-name/section-name/field-name | OctopusVariableName
.
Where OctopusVariableName is the name of the Variable you would like for the retrieved password to be stored in
Note: Multiple fields can be retrieved by entering each one on a new line.
Print output variable names
OnePass.SecretsManager.RetrieveSecrets.PrintVariableNames = False
Write out the Octopus output variable names to the task log. Default: False
.
Script body
Steps based on this template will execute the following PowerShell script.
# Check if the 1Password CLI is installed
if (-not (Get-Command op -ErrorAction SilentlyContinue)) {
Write-Output "Error: 1Password CLI (op) is not installed."
exit 1
}
# Retrieve environment variables from Octopus
$env:OP_CONNECT_HOST =$OctopusParameters["OnePass.CONNECT_HOST"]
$env:OP_CONNECT_TOKEN = $OctopusParameters["OnePass.CONNECT_TOKEN"]
# Perform nslookup after removing "http://" or "https://"
$hostLookup = $env:OP_CONNECT_HOST -replace 'https?://', ''
nslookup $hostLookup
$STEP_NAME = $OctopusParameters["Octopus.Step.Name"]
# Retrieve the list of secrets to process from Octopus variable
$SECRETS = $OctopusParameters["OnePass.SecretsManager.RetrieveSecrets.SecretNames"]
Write-Output $SECRETS
# Validation
if ([string]::IsNullOrEmpty($SECRETS)) {
Write-Output "Required parameter 'OnePass.SecretsManager.RetrieveSecrets.SecretNames' not specified. Exiting..."
exit 1
}
# Helper function to save Octopus variable
function Save-OctopusVariable {
param (
[string]$name,
[string]$value
)
Set-OctopusVariable -name $name -value $value --sensitive
Write-Output "Created output variable: ##{Octopus.Action[$STEP_NAME].Output.$name}"
}
# Process each secret entry
$SECRETS -split "`n" | ForEach-Object {
$secret_entry = $_.Trim()
if ([string]::IsNullOrEmpty($secret_entry)) { return }
# Check if the secret entry contains the '|' character
if ($secret_entry -notmatch '\|') {
Write-Output "Warning: The entry '$secret_entry' is not formatted correctly and will be skipped."
return
}
# Parse the secret entry
$split_entry = $secret_entry -split '\|'
$secret_path = $split_entry[0].Trim() # 1Password path
$octopus_variable_name = $split_entry[1].Trim() # Octopus variable name
Write-Output "Fetching secret for path: $secret_path"
# Retrieve the secret field using 1Password CLI
$field_value = (& op read $secret_path 2>$null)
# Validate retrieval
if ($LASTEXITCODE -ne 0 -or [string]::IsNullOrEmpty($field_value)) {
Write-Output "Error: Failed to retrieve secret for path '$secret_path'."
exit 1
}
# Save the retrieved value in the specified Octopus variable
Save-OctopusVariable -name $octopus_variable_name -value $field_value
Write-Output "Secret retrieval and variable setting complete."
}
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": "ac8e0d06-e7f8-4840-86bb-862341ebeb9d",
"Name": "1Password Connect - Retrieve Secrets",
"Description": "This step retrieves one or more secrets from 1Password Connect Server and creates [sensitive output variables](https://octopus.com/docs/projects/variables/output-variables#sensitive-output-variables) for each value retrieved. \n\nThe step supports creating a variable for each key-value in a secret that's retrieved, or you can specify individual keys. These values can be used in other steps in your deployment or runbook process.\n\n\nWe highly recommend creating a custom docker image based off the base image `octopuslabs/workertools:latest`. As running this step template will require the following additional packages installed:\n- 1Password CLI (op) \n- DNS Utilities (nslookup)",
"Version": 1,
"ExportedAt": "2024-11-06T05:48:36.574Z",
"ActionType": "Octopus.Script",
"Author": "edlyn.liew@octopus.com",
"Packages": [],
"Parameters": [
{
"Id": "c5bdd946-b8dd-48b4-97ad-83ee3194ac6e",
"Name": "OnePass.CONNECT_HOST",
"Label": "One Password Connect Host",
"HelpText": "https://developer.1password.com/docs/connect/manage-connect/#create-a-token\n\nIn the format `https://your-1password-connect-server-url` \n\n",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "1b38e91f-4432-4c3e-aaf2-8085875675c8",
"Name": "OnePass.CONNECT_TOKEN",
"Label": "One Password Connect Token",
"HelpText": "https://developer.1password.com/docs/connect/manage-connect/#create-a-token\n\n\n",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "Sensitive"
}
},
{
"Id": "69f9e17b-522e-4e32-9c3d-71adbe42326c",
"Name": "OnePass.SecretsManager.RetrieveSecrets.SecretNames",
"Label": "",
"HelpText": "Specify the names of the secrets to be returned from OnePassword Connect Vault, in the format:\n\n `op://vault-name/item-name/section-name/field-name | OctopusVariableName`.\n\nWhere OctopusVariableName is the name of the Variable you would like for the retrieved password to be stored in \n\n**Note:** Multiple fields can be retrieved by entering each one on a new line.",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "MultiLineText"
}
},
{
"Id": "9ed20f04-53c6-442f-ba11-45581b9a0281",
"Name": "OnePass.SecretsManager.RetrieveSecrets.PrintVariableNames",
"Label": "Print output variable names",
"HelpText": "Write out the Octopus [output variable](https://octopus.com/docs/projects/variables/output-variables) names to the task log. Default: `False`.",
"DefaultValue": "False",
"DisplaySettings": {
"Octopus.ControlType": "Checkbox"
}
}
],
"Properties": {
"Octopus.Action.Script.ScriptSource": "Inline",
"Octopus.Action.Script.Syntax": "PowerShell",
"Octopus.Action.Script.ScriptBody": "# Check if the 1Password CLI is installed\nif (-not (Get-Command op -ErrorAction SilentlyContinue)) {\n Write-Output \"Error: 1Password CLI (op) is not installed.\"\n exit 1\n}\n\n# Retrieve environment variables from Octopus\n$env:OP_CONNECT_HOST =$OctopusParameters[\"OnePass.CONNECT_HOST\"]\n$env:OP_CONNECT_TOKEN = $OctopusParameters[\"OnePass.CONNECT_TOKEN\"]\n\n# Perform nslookup after removing \"http://\" or \"https://\"\n$hostLookup = $env:OP_CONNECT_HOST -replace 'https?://', ''\nnslookup $hostLookup\n\n$STEP_NAME = $OctopusParameters[\"Octopus.Step.Name\"]\n\n# Retrieve the list of secrets to process from Octopus variable\n$SECRETS = $OctopusParameters[\"OnePass.SecretsManager.RetrieveSecrets.SecretNames\"]\nWrite-Output $SECRETS\n\n# Validation\nif ([string]::IsNullOrEmpty($SECRETS)) {\n Write-Output \"Required parameter 'OnePass.SecretsManager.RetrieveSecrets.SecretNames' not specified. Exiting...\"\n exit 1\n}\n\n# Helper function to save Octopus variable\nfunction Save-OctopusVariable {\n param (\n [string]$name,\n [string]$value\n )\n\n Set-OctopusVariable -name $name -value $value --sensitive\n Write-Output \"Created output variable: ##{Octopus.Action[$STEP_NAME].Output.$name}\"\n}\n\n# Process each secret entry\n$SECRETS -split \"`n\" | ForEach-Object {\n $secret_entry = $_.Trim()\n if ([string]::IsNullOrEmpty($secret_entry)) { return }\n\n # Check if the secret entry contains the '|' character\n if ($secret_entry -notmatch '\\|') {\n Write-Output \"Warning: The entry '$secret_entry' is not formatted correctly and will be skipped.\"\n return\n }\n\n # Parse the secret entry\n $split_entry = $secret_entry -split '\\|'\n $secret_path = $split_entry[0].Trim() # 1Password path\n $octopus_variable_name = $split_entry[1].Trim() # Octopus variable name\n\n Write-Output \"Fetching secret for path: $secret_path\"\n\n # Retrieve the secret field using 1Password CLI\n $field_value = (& op read $secret_path 2>$null)\n\n # Validate retrieval\n if ($LASTEXITCODE -ne 0 -or [string]::IsNullOrEmpty($field_value)) {\n Write-Output \"Error: Failed to retrieve secret for path '$secret_path'.\"\n exit 1\n }\n\n # Save the retrieved value in the specified Octopus variable\n Save-OctopusVariable -name $octopus_variable_name -value $field_value\n Write-Output \"Secret retrieval and variable setting complete.\"\n}"
},
"Category": "1Password Connect",
"HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/onepassword-retrieve-secrets.json",
"Website": "/step-templates/ac8e0d06-e7f8-4840-86bb-862341ebeb9d",
"Logo": "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",
"$Meta": {
"Type": "ActionTemplate"
}
}
Page updated on Wednesday, November 6, 2024