summaryrefslogtreecommitdiffstats
path: root/ansible_collections/microsoft/ad/plugins/modules/membership.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 12:04:41 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 12:04:41 +0000
commit975f66f2eebe9dadba04f275774d4ab83f74cf25 (patch)
tree89bd26a93aaae6a25749145b7e4bca4a1e75b2be /ansible_collections/microsoft/ad/plugins/modules/membership.py
parentInitial commit. (diff)
downloadansible-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/microsoft/ad/plugins/modules/membership.py')
-rw-r--r--ansible_collections/microsoft/ad/plugins/modules/membership.py141
1 files changed, 141 insertions, 0 deletions
diff --git a/ansible_collections/microsoft/ad/plugins/modules/membership.py b/ansible_collections/microsoft/ad/plugins/modules/membership.py
new file mode 100644
index 000000000..f4d8521cf
--- /dev/null
+++ b/ansible_collections/microsoft/ad/plugins/modules/membership.py
@@ -0,0 +1,141 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2022 Ansible Project
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+DOCUMENTATION = r"""
+module: membership
+short_description: Manage domain/workgroup membership for a Windows host
+description:
+- Manages domain membership or workgroup membership for a Windows host. Also supports hostname changes.
+- This module may require subsequent use of the M(ansible.windows.win_reboot) action if changes are made.
+options:
+ dns_domain_name:
+ description:
+ - When I(state=domain), this is the DNS name of the domain to which the targeted Windows host should be joined.
+ - This cannot be set when I(offline_join_blob) is specified.
+ type: str
+ domain_admin_user:
+ description:
+ - Username of a domain admin for the target domain (required to join or leave the domain).
+ - This must be set unless I(offline_join_blob) is specified.
+ type: str
+ domain_admin_password:
+ description:
+ - Password for the specified C(domain_admin_user).
+ - This must be set unless I(offline_join_blob) is specified.
+ type: str
+ 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.
+ - This cannot be set when I(offline_join_blob) is specified.
+ type: str
+ hostname:
+ description:
+ - The desired hostname for the Windows host.
+ - This cannot be set when I(offline_join_blob) is specified.
+ type: str
+ offline_join_blob:
+ description:
+ - The base64 string of the domain offline join blob to use when joining
+ the host to a domain.
+ - This blob can been generated by the
+ M(microsoft.ad.offline_join) module.
+ - This is mutually exclusive with I(domain_admin_user), I(dns_domain_name),
+ and I(domain_ou_path).
+ - It also cannot be used with I(hostname).
+ type: str
+ reboot:
+ description:
+ - If C(true), this will reboot the host if a reboot was required to configure the domain.
+ - If C(false), this will not reboot the host if a reboot was required and instead sets the I(reboot_required) return value to C(true).
+ - If changing from a domain to workgroup, the connection account must be a local user that can connect to the host
+ after it has unjoined the domain.
+ - This cannot be used with async mode.
+ - To use this parameter, ensure the fully qualified module name is used in the task or the I(collections) keyword includes this collection.
+ type: bool
+ default: false
+ state:
+ description:
+ - Whether the target host should be a member of a domain or workgroup.
+ - When I(state=domain), I(dns_domain_name), I(domain_admin_user), and I(domain_admin_password) or
+ I(offline_join_blob) must be set.
+ - When I(state=workgroup), I(workgroup_name) must be set.
+ choices:
+ - domain
+ - workgroup
+ required: true
+ type: str
+ workgroup_name:
+ description:
+ - When I(state=workgroup), this is the name of the workgroup that the Windows host should be in.
+ type: str
+extends_documentation_fragment:
+- ansible.builtin.action_common_attributes
+- ansible.builtin.action_common_attributes.flow
+attributes:
+ check_mode:
+ support: full
+ diff_mode:
+ support: full
+ platform:
+ platforms:
+ - windows
+ action:
+ support: full
+ async:
+ support: partial
+ details: Supported for all scenarios except with I(reboot=True).
+ bypass_host_loop:
+ support: none
+seealso:
+- module: microsoft.ad.domain
+- module: microsoft.ad.domain_controller
+- module: microsoft.ad.group
+- module: microsoft.ad.offline_join
+- module: microsoft.ad.user
+- module: microsoft.ad.computer
+- module: ansible.windows.win_group
+- module: ansible.windows.win_group_membership
+- module: ansible.windows.win_user
+- ref: Migration guide <ansible_collections.microsoft.ad.docsite.guide_migration.migrated_modules.win_domain_membership>
+ description: This module replaces C(ansible.windows.win_domain_membership). See the migration guide for details.
+- module: ansible.windows.win_domain_membership
+author:
+- Matt Davis (@nitzmahone)
+- Jordan Borean (@jborean93)
+"""
+
+EXAMPLES = r"""
+- name: join host to ansible.vagrant with automatic reboot
+ microsoft.ad.membership:
+ dns_domain_name: ansible.vagrant
+ hostname: mydomainclient
+ domain_admin_user: testguy@ansible.vagrant
+ domain_admin_password: password123!
+ domain_ou_path: "OU=Windows,OU=Servers,DC=ansible,DC=vagrant"
+ state: domain
+ reboot: true
+
+- name: join host to workgroup with manual reboot in later task
+ microsoft.ad.membership:
+ workgroup_name: mywg
+ domain_admin_user: '{{ win_domain_admin_user }}'
+ domain_admin_password: '{{ win_domain_admin_password }}'
+ state: workgroup
+ register: workgroup_res
+
+- name: reboot host after joining workgroup
+ ansible.windows.win_reboot:
+ when: workgroup_res.reboot_required
+"""
+
+RETURN = r"""
+reboot_required:
+ description: True if changes were made that require a reboot.
+ returned: always
+ type: bool
+ sample: true
+"""