summaryrefslogtreecommitdiffstats
path: root/ansible_collections/microsoft/ad/plugins/modules/domain_child.yml
blob: 0f3308098ee11900b59bcdbac8c3a214d6a384a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
# Copyright (c) 2024 Ansible Project
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)

DOCUMENTATION:
  module: domain_child
  short_description: Manage domain children in an existing Active Directory forest.
  description:
    - Ensure that a Windows Server host is configured as a domain controller as
      a new domain in an existing forest.
    - This module may require subsequent use of the
      M(ansible.windows.win_reboot) action if changes are made.
    - This module will only check if the domain specified by I(dns_domain_name)
      exists or not. If the domain already exists under the same name, no other
      options, other than the domain name will be checked during the run.
  options:
    create_dns_delegation:
      description:
        - Whether to create a DNS delegation that references the new DNS
          server that was installed.
        - Valid for Active Directory-integrated DNS only.
        - The default is computed automatically based on the environment.
      type: bool
    database_path:
      description:
        - The path to a directory on a fixed disk of the Windows host where the
          domain database will be created..
        - If not set then the default path is C(%SYSTEMROOT%\NTDS).
      type: path
    dns_domain_name:
      description:
        - The full DNS name of the domain to create.
        - When I(domain_type=child), the parent DNS domain name is derived
          from this value.
      type: str
    domain_admin_password:
      description:
        - Password for the specified I(domain_admin_user).
      type: str
      required: true
    domain_admin_user:
      description:
        - Username of a domain admin for the parent domain.
      type: str
      required: true
    domain_mode:
      description:
        - Specifies the domain functional level of child/tree.
        - The domain functional level cannot be lower than the forest
          functional level, but it can be higher.
        - The default is automatically computed and set.
        - Current known modes are C(Win2003), C(Win2008), C(Win2008R2),
          C(Win2012), C(Win2012R2), or C(WinThreshold).
      type: str
    domain_type:
      description:
        - Specifies the type of domain to create.
        - Set to C(child) to create a child of an existing domain as specified
          by I(dns_domain_name).
        - Set to C(tree) to create a new domain tree in an existing forest as
          specified by I(parent_domain_name). The I(dns_domain_name) must be
          the full domain name of the new domain tree to create.
      choices:
        - child
        - tree
      default: child
      type: str
    install_dns:
      description:
        - Whether to install the DNS service when creating the domain
          controller.
        - If not specified then the C(-InstallDns) option is not supplied to
          the C(Install-ADDSDomain) command, see
          L(Install-ADDSDomain,https://learn.microsoft.com/en-us/powershell/module/addsdeployment/install-addsdomain#-installdns)
          for more information.
      type: bool
    log_path:
      description:
        - Specified the fully qualified, non-UNC path to a directory on a fixed
          disk of the local computer that will contain the domain log files.
      type: path
    parent_domain_name:
      description:
        - The fully qualified domain name of an existing parent domain to
          create a new domain tree in.
        - This can only be set when I(domain_type=tree).
      type: str
    reboot:
      description:
        - If C(true), this will reboot the host if a reboot was create 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).
        - Multiple reboots may occur if the host required a reboot before the
          domain promotion.
        - This cannot be used with async mode.
      type: bool
      default: false
    safe_mode_password:
      description:
        - Safe mode password for the domain controller.
      required: true
      type: str
    site_name:
      description:
        - Specifies the name of an existing site where you can place the new
          domain controller.
      type: str
    sysvol_path:
      description:
        - The path to a directory on a fixed disk of the Windows host where the
          Sysvol folder will be created.
        - If not set then the default path is C(%SYSTEMROOT%\SYSVOL).
      type: path
  notes:
    - It is highly recommended to set I(reboot=true) to have Ansible manage the
      host reboot phase as the actions done by this module puts the host in a
      state where it may not be possible for Ansible to reconnect in a
      subsequent task without a reboot.
    - This module must be run on a Windows target host.
  extends_documentation_fragment:
    - ansible.builtin.action_common_attributes
    - ansible.builtin.action_common_attributes.flow
  attributes:
    check_mode:
      support: full
    diff_mode:
      support: none
    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
  author:
    - Jordan Borean (@jborean93)

EXAMPLES: |
  - name: Create a child domain foo.example.com with parent example.com
    microsoft.ad.domain_child:
      dns_domain_name: foo.example.com
      domain_admin_user: testguy@example.com
      domain_admin_password: password123!
      safe_mode_password: password123!
      reboot: true

  - name: Create a domain tree foo.example.com with parent bar.example.com
    microsoft.ad.domain_child:
      dns_domain_name: foo.example.com
      parent_domain_name: bar.example.com
      domain_type: tree
      domain_admin_user: testguy@bar.example.com
      domain_admin_password: password123!
      local_admin_password: password123!
      reboot: true

  # This scenario is not recommended, use reboot: true when possible
  - name: Promote server with custom paths with manual reboot task
    microsoft.ad.domain_child:
      dns_domain_name: foo.ansible.vagrant
      domain_admin_user: testguy@ansible.vagrant
      domain_admin_password: password123!
      safe_mode_password: password123!
      sysvol_path: D:\SYSVOL
      database_path: D:\NTDS
      log_path: D:\NTDS
    register: dc_promotion

  - name: Reboot after promotion
    microsoft.ad.win_reboot:
    when: dc_promotion.reboot_required

RETURNS:
  reboot_required:
    description: True if changes were made that require a reboot.
    returned: always
    type: bool
    sample: true