Added ability to specify destination OU when joining a domain (#22393)
* Added ability to specify destination OU when joining a domain * Updated win_domain_membership documentation to include OU destination option. * Updated python to include version * Additional info in the docs
This commit is contained in:
parent
c9b474cb33
commit
0229476c44
2 changed files with 21 additions and 4 deletions
|
@ -99,12 +99,13 @@ Function Join-Domain {
|
||||||
[string] $dns_domain_name,
|
[string] $dns_domain_name,
|
||||||
[string] $new_hostname,
|
[string] $new_hostname,
|
||||||
[string] $domain_admin_user,
|
[string] $domain_admin_user,
|
||||||
[string] $domain_admin_password
|
[string] $domain_admin_password,
|
||||||
|
[string] $domain_ou_path
|
||||||
)
|
)
|
||||||
|
|
||||||
Write-DebugLog ("Creating credential for user {0}" -f $domain_admin_user)
|
Write-DebugLog ("Creating credential for user {0}" -f $domain_admin_user)
|
||||||
$domain_cred = Create-Credential $domain_admin_user $domain_admin_password
|
$domain_cred = Create-Credential $domain_admin_user $domain_admin_password
|
||||||
|
|
||||||
$add_args = @{
|
$add_args = @{
|
||||||
ComputerName="."
|
ComputerName="."
|
||||||
Credential=$domain_cred
|
Credential=$domain_cred
|
||||||
|
@ -117,7 +118,13 @@ Function Join-Domain {
|
||||||
$add_args["NewName"] = $new_hostname
|
$add_args["NewName"] = $new_hostname
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-DebugLog "calling Add-Computer"
|
|
||||||
|
if($domain_ou_path){
|
||||||
|
Write-DebugLog "adding OU destination arg to Add-Computer args"
|
||||||
|
$add_args["OUPath"] = $domain_ou_path
|
||||||
|
}
|
||||||
|
$argstr = $add_args | Out-String
|
||||||
|
Write-DebugLog "calling Add-Computer with args: $argstr"
|
||||||
$add_result = Add-Computer @add_args
|
$add_result = Add-Computer @add_args
|
||||||
|
|
||||||
Write-DebugLog ("Add-Computer result was \n{0}" -f $add_result | Out-String)
|
Write-DebugLog ("Add-Computer result was \n{0}" -f $add_result | Out-String)
|
||||||
|
@ -172,6 +179,7 @@ $hostname = Get-AnsibleParam $params "hostname"
|
||||||
$workgroup_name = Get-AnsibleParam $params "workgroup_name"
|
$workgroup_name = Get-AnsibleParam $params "workgroup_name"
|
||||||
$domain_admin_user = Get-AnsibleParam $params "domain_admin_user" -failifempty $result
|
$domain_admin_user = Get-AnsibleParam $params "domain_admin_user" -failifempty $result
|
||||||
$domain_admin_password = Get-AnsibleParam $params "domain_admin_password" -failifempty $result
|
$domain_admin_password = Get-AnsibleParam $params "domain_admin_password" -failifempty $result
|
||||||
|
$domain_ou_path = Get-AnsibleParam $params "domain_ou_path"
|
||||||
|
|
||||||
$log_path = Get-AnsibleParam $params "log_path"
|
$log_path = Get-AnsibleParam $params "log_path"
|
||||||
$_ansible_check_mode = Get-AnsibleParam $params "_ansible_check_mode" -default $false
|
$_ansible_check_mode = Get-AnsibleParam $params "_ansible_check_mode" -default $false
|
||||||
|
@ -221,6 +229,10 @@ Try {
|
||||||
Write-DebugLog "adding hostname change to domain-join args"
|
Write-DebugLog "adding hostname change to domain-join args"
|
||||||
$join_args.new_hostname = $hostname
|
$join_args.new_hostname = $hostname
|
||||||
}
|
}
|
||||||
|
If($domain_ou_path -ne $null){ # If OU Path is not empty
|
||||||
|
Write-DebugLog "adding domain_ou_path to domain-join args"
|
||||||
|
$join_args.domain_ou_path = $domain_ou_path
|
||||||
|
}
|
||||||
|
|
||||||
$join_result = Join-Domain @join_args
|
$join_result = Join-Domain @join_args
|
||||||
}
|
}
|
||||||
|
@ -276,4 +288,3 @@ Catch {
|
||||||
|
|
||||||
Throw
|
Throw
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,6 +45,11 @@ options:
|
||||||
hostname:
|
hostname:
|
||||||
description:
|
description:
|
||||||
- the desired hostname for the Windows host
|
- the desired hostname for the Windows host
|
||||||
|
domain_ou_path:
|
||||||
|
description:
|
||||||
|
- The desired OU path for adding the computer object.
|
||||||
|
- This is only used when adding the target host to a domain, if it is already a member then it is ignored.
|
||||||
|
version_added: "2.4"
|
||||||
state:
|
state:
|
||||||
description:
|
description:
|
||||||
- whether the target host should be a member of a domain or workgroup
|
- whether the target host should be a member of a domain or workgroup
|
||||||
|
@ -80,6 +85,7 @@ EXAMPLES = '''
|
||||||
hostname: mydomainclient
|
hostname: mydomainclient
|
||||||
domain_admin_user: testguy@ansible.vagrant
|
domain_admin_user: testguy@ansible.vagrant
|
||||||
domain_admin_password: password123!
|
domain_admin_password: password123!
|
||||||
|
domain_ou_path: "OU=Windows,OU=Servers,DC=ansible,DC=vagrant"
|
||||||
state: domain
|
state: domain
|
||||||
register: domain_state
|
register: domain_state
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue