Octopus.Script exported 2024-10-15 by twerthi belongs to ‘Oracle’ category.
Creates a new user account on a Oracle database server
Parameters
When steps based on the template are included in a project’s deployment process, the parameters below can be set.
Oracle Server
oracleDBServerName =
Host name of the Oracle server
Port
oracleDBServerPort = 1521
Port number the Oracle server listens on.
Service Name
oracleServiceName =
Service name for Oracle database.
Admin Login name
oracleLoginWithAddUserRights =
Login name of a user with rights to create user accounts.
Login Password
oracleLoginPasswordWithAddUserRights =
Password Login name.
New user name
oracleNewUsername =
Name of the new user account to create.
New user password
oracleNewUserPassword =
Password for the new user account.
Script body
Steps based on this template will execute the following PowerShell script.
# Define variables
$connectionName = "OctopusDeploy"
# Define functions
function Get-ModuleInstalled
{
# Define parameters
param(
$PowerShellModuleName
)
# Check to see if the module is installed
if ($null -ne (Get-Module -ListAvailable -Name $PowerShellModuleName))
{
# It is installed
return $true
}
else
{
# Module not installed
return $false
}
}
function Install-PowerShellModule
{
# Define parameters
param(
$PowerShellModuleName,
$LocalModulesPath
)
# Check to see if the package provider has been installed
if ((Get-NugetPackageProviderNotInstalled) -ne $false)
{
# Display that we need the nuget package provider
Write-Host "Nuget package provider not found, installing ..."
# Install Nuget package provider
Install-PackageProvider -Name Nuget -Force
}
# Save the module in the temporary location
Save-Module -Name $PowerShellModuleName -Path $LocalModulesPath -Force
}
function Get-NugetPackageProviderNotInstalled
{
# See if the nuget package provider has been installed
return ($null -eq (Get-PackageProvider -ListAvailable -Name Nuget -ErrorAction SilentlyContinue))
}
function Get-UserExists
{
# Define parameters
param ($Hostname,
$Username)
# Execute query
return Invoke-SqlQuery "SELECT * FROM ALL_USERS WHERE USERNAME = '$UserName'" -ConnectionName $connectionName
}
# Define PowerShell Modules path
$LocalModules = (New-Item "$PSScriptRoot\Modules" -ItemType Directory -Force).FullName
$env:PSModulePath = "$LocalModules$([System.IO.Path]::PathSeparator)$env:PSModulePath"
$PowerShellModuleName = "SimplySql"
# Set secure protocols
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls11 -bor [System.Net.SecurityProtocolType]::Tls12
# Check to see if SimplySql module is installed
if ((Get-ModuleInstalled -PowerShellModuleName $PowerShellModuleName) -ne $true)
{
# Tell user what we're doing
Write-Output "PowerShell module $PowerShellModuleName is not installed, downloading temporary copy ..."
# Install temporary copy
Install-PowerShellModule -PowerShellModuleName $PowerShellModuleName -LocalModulesPath $LocalModules
}
# Display
Write-Output "Importing module $PowerShellModuleName ..."
# Check to see if it was downloaded
if ((Test-Path -Path "$LocalModules\$PowerShellModuleName") -eq $true)
{
# Use specific location
$PowerShellModuleName = "$LocalModules\$PowerShellModuleName"
}
# Import the module
Import-Module -Name $PowerShellModuleName
# Create credential object for the connection
$SecurePassword = ConvertTo-SecureString $oracleLoginPasswordWithAddUserRights -AsPlainText -Force
$ServerCredential = New-Object System.Management.Automation.PSCredential ($oracleLoginWithAddUserRights, $SecurePassword)
try
{
# Connect to MySQL
Open-OracleConnection -Datasource $oracleDBServerName -Credential $ServerCredential -Port $oracleDBServerPort -ServiceName $oracleServiceName -ConnectionName $connectionName
# See if database exists
$userExists = Get-UserExists -Username $oracleNewUsername
if ($userExists -eq $null)
{
# Create database
Write-Output "Creating user $oracleNewUsername ..."
$executionResults = Invoke-SqlUpdate "CREATE USER `"$oracleNewUsername`" IDENTIFIED BY `"$oracleNewUserPassword`"" -ConnectionName $connectionName
# See if it was created
$userExists = Get-UserExists -Username $oracleNewUsername
# Check array
if ($userExists -ne $null)
{
# Success
Write-Output "$oracleNewUsername created successfully!"
}
else
{
# Failed
Write-Error "$oracleNewUsername was not created!"
}
}
else
{
# Display message
Write-Output "User $oracleNewUsername already exists."
}
}
finally
{
# Close connection if open
if ((Test-SqlConnection -ConnectionName $connectionName) -eq $true)
{
Close-SqlConnection -ConnectionName $connectionName
}
}
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": "d8b21b0b-1a07-4d47-9c72-4260e83a807c",
"Name": "Oracle - Create User If Not Exists",
"Description": "Creates a new user account on a Oracle database server",
"Version": 3,
"ExportedAt": "2024-10-15T20:26:00.556Z",
"ActionType": "Octopus.Script",
"Author": "twerthi",
"Packages": [],
"Parameters": [
{
"Id": "8123da26-a8ed-4b4e-bc04-b5c90546785a",
"Name": "oracleDBServerName",
"Label": "Oracle Server",
"HelpText": "Host name of the Oracle server",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "a4a4ee03-b166-4324-9bdf-4011c1f4f707",
"Name": "oracleDBServerPort",
"Label": "Port",
"HelpText": "Port number the Oracle server listens on.",
"DefaultValue": "1521",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "63cd98dc-359c-4c25-8b84-56ab33d9d05f",
"Name": "oracleServiceName",
"Label": "Service Name",
"HelpText": "Service name for Oracle database.",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "307a4f0e-92b7-4b2f-8cac-b12771d2cb23",
"Name": "oracleLoginWithAddUserRights",
"Label": "Admin Login name",
"HelpText": "Login name of a user with rights to create user accounts.",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "78ccf489-2c68-419e-9b53-bdf96ff9ae8c",
"Name": "oracleLoginPasswordWithAddUserRights",
"Label": "Login Password",
"HelpText": "Password Login name.",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "Sensitive"
}
},
{
"Id": "8bf12f2a-7d7b-4b8c-bced-2b438fbb21e4",
"Name": "oracleNewUsername",
"Label": "New user name",
"HelpText": "Name of the new user account to create.",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "45b96db6-4523-4b07-b8e7-848dc2b63053",
"Name": "oracleNewUserPassword",
"Label": "New user password",
"HelpText": "Password for the new user account.",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "Sensitive"
}
}
],
"Properties": {
"Octopus.Action.Script.ScriptSource": "Inline",
"Octopus.Action.Script.Syntax": "PowerShell",
"Octopus.Action.Script.ScriptBody": "# Define variables\n$connectionName = \"OctopusDeploy\"\n\n# Define functions\nfunction Get-ModuleInstalled\n{\n # Define parameters\n param(\n $PowerShellModuleName\n )\n\n # Check to see if the module is installed\n if ($null -ne (Get-Module -ListAvailable -Name $PowerShellModuleName))\n {\n # It is installed\n return $true\n }\n else\n {\n # Module not installed\n return $false\n }\n}\n\nfunction Install-PowerShellModule\n{\n # Define parameters\n param(\n $PowerShellModuleName,\n $LocalModulesPath\n )\n\n\t# Check to see if the package provider has been installed\n if ((Get-NugetPackageProviderNotInstalled) -ne $false)\n {\n \t# Display that we need the nuget package provider\n Write-Host \"Nuget package provider not found, installing ...\"\n \n # Install Nuget package provider\n Install-PackageProvider -Name Nuget -Force\n }\n\n\t# Save the module in the temporary location\n Save-Module -Name $PowerShellModuleName -Path $LocalModulesPath -Force\n}\n\nfunction Get-NugetPackageProviderNotInstalled\n{\n\t# See if the nuget package provider has been installed\n return ($null -eq (Get-PackageProvider -ListAvailable -Name Nuget -ErrorAction SilentlyContinue))\n}\n\nfunction Get-UserExists\n{\n\t# Define parameters\n param ($Hostname,\n $Username)\n \n\t# Execute query\n return Invoke-SqlQuery \"SELECT * FROM ALL_USERS WHERE USERNAME = '$UserName'\" -ConnectionName $connectionName\n}\n\n# Define PowerShell Modules path\n$LocalModules = (New-Item \"$PSScriptRoot\\Modules\" -ItemType Directory -Force).FullName\n$env:PSModulePath = \"$LocalModules$([System.IO.Path]::PathSeparator)$env:PSModulePath\"\n$PowerShellModuleName = \"SimplySql\"\n\n# Set secure protocols\n[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls11 -bor [System.Net.SecurityProtocolType]::Tls12\n\n# Check to see if SimplySql module is installed\nif ((Get-ModuleInstalled -PowerShellModuleName $PowerShellModuleName) -ne $true)\n{\n # Tell user what we're doing\n Write-Output \"PowerShell module $PowerShellModuleName is not installed, downloading temporary copy ...\"\n\n # Install temporary copy\n Install-PowerShellModule -PowerShellModuleName $PowerShellModuleName -LocalModulesPath $LocalModules\n}\n\n# Display\nWrite-Output \"Importing module $PowerShellModuleName ...\"\n\n# Check to see if it was downloaded\nif ((Test-Path -Path \"$LocalModules\\$PowerShellModuleName\") -eq $true)\n{\n\t# Use specific location\n $PowerShellModuleName = \"$LocalModules\\$PowerShellModuleName\"\n}\n\n# Import the module\nImport-Module -Name $PowerShellModuleName\n\n# Create credential object for the connection\n$SecurePassword = ConvertTo-SecureString $oracleLoginPasswordWithAddUserRights -AsPlainText -Force\n$ServerCredential = New-Object System.Management.Automation.PSCredential ($oracleLoginWithAddUserRights, $SecurePassword)\n\ntry\n{\n\t# Connect to MySQL\n Open-OracleConnection -Datasource $oracleDBServerName -Credential $ServerCredential -Port $oracleDBServerPort -ServiceName $oracleServiceName -ConnectionName $connectionName\n\n # See if database exists\n $userExists = Get-UserExists -Username $oracleNewUsername\n\n if ($userExists -eq $null)\n {\n # Create database\n Write-Output \"Creating user $oracleNewUsername ...\"\n $executionResults = Invoke-SqlUpdate \"CREATE USER `\"$oracleNewUsername`\" IDENTIFIED BY `\"$oracleNewUserPassword`\"\" -ConnectionName $connectionName\n\n # See if it was created\n $userExists = Get-UserExists -Username $oracleNewUsername\n \n # Check array\n if ($userExists -ne $null)\n {\n # Success\n Write-Output \"$oracleNewUsername created successfully!\"\n }\n else\n {\n # Failed\n Write-Error \"$oracleNewUsername was not created!\"\n }\n }\n else\n {\n \t# Display message\n Write-Output \"User $oracleNewUsername already exists.\"\n }\n}\nfinally \n{\n\t# Close connection if open\n if ((Test-SqlConnection -ConnectionName $connectionName) -eq $true)\n {\n \tClose-SqlConnection -ConnectionName $connectionName\n }\n}\n\n",
"Octopus.Action.EnabledFeatures": ""
},
"Category": "Oracle",
"HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/oracle-create-user-if-not-exists.json",
"Website": "/step-templates/d8b21b0b-1a07-4d47-9c72-4260e83a807c",
"Logo": "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",
"$Meta": {
"Type": "ActionTemplate"
}
}
Page updated on Tuesday, October 15, 2024