diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 12:04:41 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 12:04:41 +0000 |
commit | 975f66f2eebe9dadba04f275774d4ab83f74cf25 (patch) | |
tree | 89bd26a93aaae6a25749145b7e4bca4a1e75b2be /ansible_collections/lowlydba/sqlserver/plugins/modules/credential.ps1 | |
parent | Initial commit. (diff) | |
download | ansible-975f66f2eebe9dadba04f275774d4ab83f74cf25.tar.xz ansible-975f66f2eebe9dadba04f275774d4ab83f74cf25.zip |
Adding upstream version 7.7.0+dfsg.upstream/7.7.0+dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ansible_collections/lowlydba/sqlserver/plugins/modules/credential.ps1')
-rw-r--r-- | ansible_collections/lowlydba/sqlserver/plugins/modules/credential.ps1 | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/ansible_collections/lowlydba/sqlserver/plugins/modules/credential.ps1 b/ansible_collections/lowlydba/sqlserver/plugins/modules/credential.ps1 new file mode 100644 index 000000000..29631b11a --- /dev/null +++ b/ansible_collections/lowlydba/sqlserver/plugins/modules/credential.ps1 @@ -0,0 +1,117 @@ +#!powershell +# -*- coding: utf-8 -*- + +# (c) 2022, John McCall (@lowlydba) +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +#AnsibleRequires -CSharpUtil Ansible.Basic +#AnsibleRequires -PowerShell ansible_collections.lowlydba.sqlserver.plugins.module_utils._SqlServerUtils +#Requires -Modules @{ ModuleName="dbatools"; ModuleVersion="1.1.112" } + +$ErrorActionPreference = "Stop" + +$spec = @{ + supports_check_mode = $true + options = @{ + identity = @{type = 'str'; required = $true } + name = @{type = 'str'; required = $false } + password = @{type = 'str'; required = $false; no_log = $true } + mapped_class_type = @{type = 'str'; required = $false; choices = @('CryptographicProvider', 'None') } + provider_name = @{type = 'str'; required = $false } + force = @{type = 'bool'; required = $false; default = $false } + state = @{type = 'str'; required = $false; default = 'present'; choices = @('present', 'absent') } + } +} + +$module = [Ansible.Basic.AnsibleModule]::Create($args, $spec, @(Get-LowlyDbaSqlServerAuthSpec)) +$sqlInstance, $sqlCredential = Get-SqlCredential -Module $module +$identity = $module.Params.identity +$name = $module.Params.name +if ($null -ne $module.Params.password) { + $secure_password = ConvertTo-SecureString -String $module.Params.password -AsPlainText -Force +} +$mapped_class_type = $module.Params.mapped_class_type +$provider_name = $module.Params.provider_name +$state = $module.Params.state +$force = $module.Params.force +$checkMode = $module.CheckMode + +$module.Result.changed = $false + +try { + $getCredendtialSplat = @{ + SqlInstance = $sqlInstance + SqlCredential = $sqlCredential + Identity = $identity + EnableException = $true + } + $existingCredential = Get-DbaCredential @getCredendtialSplat + + if ($state -eq "absent") { + # Remove credential if it exists + if ($null -ne $existingCredential) { + try { + $removeCredentialSplat = @{ + EnableException = $true + WhatIf = $checkMode + Confirm = $false + } + $output = $existingCredential | Remove-DbaCredential @removeCredentialSplat + $module.Result.changed = $true + } + catch { + $module.FailJson("Removing credential failed: $($_.Exception.Message)", $_) + } + } + } + elseif ($state -eq "present") { + # Create credential + if (($null -ne $existingCredential -and $force -eq $true) -or $null -eq $existingCredential) { + try { + $newCredentialSplat = @{ + SqlInstance = $sqlInstance + SqlCredential = $sqlCredential + Identity = $identity + EnableException = $true + WhatIf = $checkMode + Force = $force + Confirm = $false + } + if ($null -ne $name) { + $newCredentialSplat.Add("Name", $name) + } + if ($null -ne $secure_password) { + $newCredentialSplat.Add("SecurePassword", $secure_password) + } + if ($null -ne $mapped_class_type) { + $newCredentialSplat.Add("MappedClassType", $mapped_class_type) + } + if ($null -ne $provider_name) { + $newCredentialSplat.Add("ProviderName", $provider_name) + } + $output = New-DbaCredential @newCredentialSplat + $module.result.changed = $true + } + catch { + $module.FailJson("Creating credential failed: $($_.Exception.Message)", $_) + } + } + # Return existing credential if nothing is changed + elseif ($null -ne $existingCredential) { + $output = $existingCredential + } + } + try { + if ($null -ne $output) { + $resultData = ConvertTo-SerializableObject -InputObject $output + $module.Result.data = $resultData + } + $module.ExitJson() + } + catch { + $module.FailJson("Failure: $($_.Exception.Message)", $_) + } +} +catch { + $module.FailJson("Configuring credential failed: $($_.Exception.Message) ; $getCredendtialSplat", $_) +} |