Skip to content

Commit 4588c08

Browse files
committed
```
fix: correct trust relationship creation by passing explicit local admin credentials **Changed:** - Updated the trust creation PowerShell script to accept explicit local forest, admin, and password parameters, ensuring correct context is used for trust operations and preventing failures due to implicit credential usage - Modified parameter passing in the trust creation task to supply local admin credentials and domain explicitly, improving reliability of trust setup - Removed unused variable `domain_username` from playbook to avoid confusion - Cleaned up unnecessary become variables in trust role task, as credentials are now passed directly to the script ```
1 parent 826a9ca commit 4588c08

2 files changed

Lines changed: 17 additions & 12 deletions

File tree

‎ansible/playbooks/ad-trusts.yml‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
- { role: 'dreadnode.goad.trusts', tags: 'trust' }
2424
vars:
2525
domain: "{{ lab.hosts[dict_key].domain }}"
26-
domain_username: "{{ domain }}\\{{ admin_user }}"
2726
domain_password: "{{ lab.domains[domain].domain_password }}"
2827
remote_forest: "{{ lab.domains[domain].trust }}"
2928
remote_admin: "{{ admin_user }}@{{ remote_forest }}"

‎ansible/roles/trusts/tasks/main.yml‎

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@
1010
script: |
1111
[CmdletBinding()]
1212
param (
13+
[String]
14+
$LocalForest,
15+
16+
[String]
17+
$LocalAdmin,
18+
19+
[String]
20+
$LocalAdminPassword,
21+
1322
[String]
1423
$RemoteForest,
1524
@@ -19,30 +28,27 @@
1928
[String]
2029
$RemoteAdminPassword
2130
)
22-
$localforest=[System.DirectoryServices.ActiveDirectory.Forest]::getCurrentForest()
31+
$localContext = New-Object -TypeName "System.DirectoryServices.ActiveDirectory.DirectoryContext" -ArgumentList @("Forest", $LocalForest, $LocalAdmin, $LocalAdminPassword)
32+
$localForestObj = [System.DirectoryServices.ActiveDirectory.Forest]::getForest($localContext)
2333
try {
24-
$localForest.GetTrustRelationship($RemoteForest)
34+
$localForestObj.GetTrustRelationship($RemoteForest)
2535
$Ansible.Changed = $false
26-
# Add proper output formatting
2736
Write-Output '{"status": "exists", "message": "Trust relationship already exists"}'
2837
} catch [System.DirectoryServices.ActiveDirectory.ActiveDirectoryObjectNotFoundException] {
2938
$Ansible.Changed = $true
30-
$remoteContext = New-Object -TypeName "System.DirectoryServices.ActiveDirectory.DirectoryContext" -ArgumentList @( "Forest", $RemoteForest, $RemoteAdmin, $RemoteAdminPassword)
39+
$remoteContext = New-Object -TypeName "System.DirectoryServices.ActiveDirectory.DirectoryContext" -ArgumentList @("Forest", $RemoteForest, $RemoteAdmin, $RemoteAdminPassword)
3140
$distantForest = [System.DirectoryServices.ActiveDirectory.Forest]::getForest($remoteContext)
32-
$localForest.CreateTrustRelationship($distantForest,"Bidirectional")
33-
# Add proper output formatting
41+
$localForestObj.CreateTrustRelationship($distantForest,"Bidirectional")
3442
Write-Output '{"status": "created", "message": "Trust relationship created successfully"}'
3543
}
3644
error_action: stop
3745
parameters:
46+
LocalForest: "{{ domain }}"
47+
LocalAdmin: "{{ admin_user }}@{{ domain }}"
48+
LocalAdminPassword: "{{ domain_password }}"
3849
RemoteForest: "{{ remote_forest }}"
3950
RemoteAdmin: "{{ remote_admin }}"
4051
RemoteAdminPassword: "{{ remote_admin_password }}"
41-
vars:
42-
ansible_become: true
43-
ansible_become_method: ansible.builtin.runas
44-
ansible_become_user: "{{ domain_username }}"
45-
ansible_become_password: "{{ domain_password }}"
4652
register:
4753
trust_result
4854

0 commit comments

Comments
 (0)