microsoft.ad.group 模块 – 管理 Active Directory 组对象

注意

此模块是 microsoft.ad 集合 (版本 1.7.1) 的一部分。

如果您正在使用 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install microsoft.ad。您需要其他要求才能使用此模块,请参阅 要求 以了解详情。

要在 playbook 中使用它,请指定:microsoft.ad.group

概要

  • 管理 Active Directory 组对象及其属性。

要求

执行此模块的主机需要以下要求。

  • ActiveDirectory PowerShell 模块

参数

参数

注释

attributes

字典

要在 AD 对象上添加、删除或设置的属性。

每个属性选项的值应为一个字典,其中键是 LDAP 属性,例如 firstNamecomment,而值是要为该属性设置的值或值列表。

属性值可以是原始字符串、整数或布尔值,用于在相关属性上添加、删除或设置。

该值也可以是一个字典,其中 type 键设置为 bytesdate_timesecurity_descriptorraw,而此条目的值在 value 键下。

bytes 类型的值是原始字节的 base64 编码字符串。

date_time 类型的值是设置为 DateTime 的 ISO 8601 DateTime 字符串。DateTime 将设置为 Microsoft FILETIME 整数值,它是自 1601-01-01 以来的 100 纳秒数(UTC)。

security_descriptor 类型的值是用于 nTSecurityDescriptor 属性的安全描述符 SDDL 字符串。

raw 类型是要设置的 int、字符串或布尔值。

字符串属性值使用区分大小写的匹配来比较正在管理的 AD 对象。

有关更多信息,请参阅 LDAP 属性帮助

默认值: {}

add

字典

所有属性及其值的字典,如果它们不存在,则添加到正在管理的 AD 对象中。

这用于可以包含多个值的属性,如果属性只允许单个值,则使用 set 代替。

默认值: {}

remove

字典

所有属性及其值的字典,如果它们存在,则从正在管理的 AD 对象中删除。

这用于可以包含多个值的属性,如果属性只允许单个值,则使用 set 代替。

默认值: {}

set

字典

所有属性及其值的字典,要在正在管理的 AD 对象上设置。

如果它们与请求的不匹配,这将替换任何现有值。

不会检查属性值的顺序,只检查请求的值是否是对象属性上的唯一值。

将其设置为 null 或空列表以清除属性的任何值。

默认值: {}

category

字符串

组的类别。

如果创建新的组,则默认情况下将使用 security

security 组可以与访问控制列表关联,而 distribution 组通常与邮件分发列表关联。

这是在 groupType LDAP 属性上设置的值。

选项

  • "distribution"

  • "security"

description

字符串

要设置的 AD 对象的描述。

这是在 description LDAP 属性上设置的值。

display_name

字符串

要设置的 AD 对象的显示名称。

这是displayName LDAP属性的值。

domain_credentials

列表 / 元素=字典

指定使用由name指定的服务器时应使用的凭据。

要为默认域服务器指定凭据,请使用没有name键的条目,或使用domain_usernamedomain_password选项。

这可以在剧本的模块默认值下的group/microsoft.ad.domain组中设置。

有关更多信息,请参见模块中的AD身份验证

默认值: []

name

字符串

这些凭据所属的服务器名称。

此值应与在指定要使用的自定义服务器的其他选项中使用的值相对应,例如引用位于不同AD服务器上的AD标识的选项。

此键可以在一个条目中省略,以指定在未指定服务器时要使用的默认凭据,而不是使用domain_usernamedomain_password

password

字符串 / 必填

连接到由name指定的服务器时使用的密码。

username

字符串 / 必填

连接到由name指定的服务器时使用的用户名。

domain_password

字符串

domain_username的密码。

没有name键的domain_credentials子条目也可以用来指定默认域身份验证的凭据。

这可以在剧本的模块默认值下的group/microsoft.ad.domain组中设置。

domain_server

字符串

指定要连接到的Active Directory域服务实例。

可以是完全限定域名 (FQDN) 或 NetBIOS 名称。

如果未指定,则该值基于运行PowerShell的计算机的默认域。

可以在没有name键的domain_credentials条目下或通过domain_usernamedomain_password指定自定义凭据。

这可以在剧本的模块默认值下的group/microsoft.ad.domain组中设置。

domain_username

字符串

与AD交互时使用的用户名。

如果未设置此项,则用于身份验证的用户将是连接用户。

除非身份验证是带有凭据委派或CredSSP的Kerberos,或者在任务上使用了become,否则Ansible将无法使用连接用户。

没有name键的domain_credentials子条目也可以用来指定默认域身份验证的凭据。

这可以在剧本的模块默认值下的group/microsoft.ad.domain组中设置。

homepage

字符串

组的主页。

这是wWWHomePage LDAP属性中设置的值。

identity

字符串

用于查找要管理的AD对象的AD对象的标识。

如果未设置name,尝试使用新的name重命名对象,或尝试将对象移动到不同的path中,则必须指定此项。

标识可以是表示objectGUID值、userPrincipalNamesAMAccountNameobjectSiddistinguishedName的GUID。

如果省略,则要管理的AD对象将通过使用格式CN={{ name }},{{ path }}distinguishedName进行选择。如果未定义path,则使用defaultNamingContext

使用microsoft.ad.computer模块时,如果提供的值未产生匹配且末尾没有$,则标识将自动在sAMAccountName的末尾附加$

managed_by

任意

管理组的用户或组。

该值可以是distinguishedNameobjectGUIDobjectSidsAMAccountNameuserPrincipalName字符串,或者是一个包含name和可选server键的字典。

这是managedBy LDAP属性中设置的值。

有关DN查找的工作方式的更多信息,请参见DN查找属性

members

字典

要设置的组成员。

该值是一个包含3个键的字典:addremoveset

每个子键值都是一个列表,其值采用distinguishedNameobjectGUIDobjectSidsAMAccountNameuserPrincipalName字符串的形式,或者是一个包含name和可选server键的字典。

每个子键的值可以指定为字符串,也可以指定为包含name和可选server键的字典。name是要查找的标识,server是可选键,用于覆盖在哪个AD服务器上查找标识。

有关更多信息,请参见DN查找属性

add

列表 / 元素=任意

将指定的成员添加到组中,如果未指定,则保留现有成员。

lookup_failure_action

字符串

控制查找失败时要采取的操作。

fail将导致任务失败。

ignore将忽略该值并继续。

warn将忽略该值并显示警告。

选项

  • "fail" ← (默认)

  • "ignore"

  • "warn"

remove

列表 / 元素=任意

将指定的成员从组中移除,如果未指定,则保留现有成员。

set

列表 / 元素=任意

仅将指定的成员设置为组成员。

如果在此列表中未指定,则任何其他现有成员都将从组成员中移除。

将其设置为空列表可从组中移除所有成员。

name

字符串

要管理的AD对象的name,这不是对象的sAMAccountName,而是指定路径中对象的LDAP cnname条目。使用identity通过其sAMAccountName选择要管理的对象。

如果指定了identity,并且通过该标识找到的对象的名称与该值不匹配,则将重命名该对象。

如果未设置identity,则必须指定此项。

path

字符串

新对象应存在于其中的OU或容器的路径。

如果创建新对象,则将在指定的路径中创建新对象。如果没有指定路径,则对于大多数对象类型,将使用域的defaultNamingContext作为路径。

如果通过identity管理现有对象,则找到对象的路径将移动到此选项指定的路径。如果未指定路径,则不会移动对象。

microsoft.ad.computermicrosoft.ad.usermicrosoft.ad.group模块在Active Directory域控制器上配置了自己的默认路径。

这可以设置为字面值microsoft.ad.default_path,它将等于创建新对象时使用的默认值。

protect_from_deletion

布尔值

将对象标记为受保护,防止意外删除。

这将应用禁止从正常删除对象的访问权限,并且需要删除保护才能通过GUI或Ansible之外的任何其他工具删除该对象。

使用state=absent仍然会删除AD对象,即使它被标记为受保护,防止意外删除。

选项

  • false

  • true

sam_account_name

字符串

要为组设置的sAMAccountName值。

如果省略,则在创建新组时使用name值。

scope

字符串

组的范围。

state=present且组尚不存在时,这是必需的。

有关各种域组范围的更多信息,请参见组范围

这是在 groupType LDAP 属性上设置的值。

选项

  • "domainlocal"

  • "global"

  • "universal"

state

字符串

设置为present以确保AD对象存在。

设置为absent以删除AD对象(如果存在)。

state=present时,必须设置选项name

使用absent将递归删除AD对象和任何子对象(如果它是容器)。即使对象被标记为受保护,防止意外删除,它也会删除AD对象。

选项

  • "absent"

  • "present" ← (默认)

属性

属性

支持

描述

check_mode

支持:完全支持

可以在check_mode下运行并返回更改状态预测,而无需修改目标;如果不支持,则操作将被跳过。

diff_mode

支持:完全支持

在diff模式下,将返回有关已更改内容(或可能需要在check_mode下更改的内容)的详细信息。

平台

平台: Windows

可以对其进行操作的目标操作系统/系列。

备注

注意

  • 有关从win_group迁移到此模块的帮助,请参见community.windows.win_domain_group

  • 此模块必须在安装了ActiveDirectory模块的Windows目标主机上运行。

  • 某些LDAP属性只能设置单个值,而其他属性可以设置多个值。某些属性也是只读的,无法更改。建议查看属性的模式元数据,其中System-Only是只读值,Is-Single-Value是只有一个值的属性。

  • 尝试将多个值设置为Is-Single-Value属性会导致未定义的行为。

  • 如果在不是域控制器的服务器上运行,则必须使用通过CredSSP或Kerberos进行的凭据委派,或者必须设置domain_usernamedomain_password

另请参阅

另请参阅

microsoft.ad.domain

确保Windows域的存在。

microsoft.ad.domain_controller

管理Windows主机的域控制器/成员服务器状态。

microsoft.ad.membership

管理Windows主机的域/工作组成员身份。

microsoft.ad.object_info

收集Active Directory对象的详细信息。

microsoft.ad.object

管理Active Directory对象。

microsoft.ad.user

管理Active Directory用户。

迁移指南

此模块替换community.windows.win_domain_group。有关详细信息,请参见迁移指南。

community.windows.win_domain_group

创建、修改或删除域组。

示例

- name: Ensure a group exists
  microsoft.ad.group:
    identity: Cow
    scope: global

- name: Remove a group
  microsoft.ad.group:
    identity: Cow
    state: absent

- name: Create a group in a custom path
  microsoft.ad.group:
    name: Cow
    scope: global
    path: OU=groups,DC=ansible,DC=local
    state: present

- name: Remove a group in a custom path
  microsoft.ad.group:
    name: Cow
    path: OU=groups,DC=ansible,DC=local
    state: absent

- name: Create group with delete protection enabled and custom attributes
  microsoft.ad.group:
    name: Ansible Users
    scope: domainlocal
    category: security
    homepage: www.ansible.com
    attributes:
      set:
        mail: [email protected]
    protect_from_deletion: true

- name: Change the path of a group
  microsoft.ad.group:
    name: MyGroup
    scope: global
    identity: S-1-5-21-2171456218-3732823212-122182344-1189
    path: OU=groups,DC=ansible,DC=local

- name: Add managed_by user
  microsoft.ad.group:
    name: Group Name Here
    scope: global
    managed_by: Domain Admins

- name: Add group and specify the AD domain services to use for the create
  microsoft.ad.group:
    name: Test Group
    domain_username: [email protected]
    domain_password: Password01!
    domain_server: corp-DC12.corp.ansible.com
    scope: domainlocal

- name: Add members to the group, preserving existing membership
  microsoft.ad.group:
    name: Test Group
    scope: domainlocal
    members:
      add:
        - Domain Admins
        - Domain Users

- name: Remove members from the group, preserving existing membership
  microsoft.ad.group:
    name: Test Group
    scope: domainlocal
    members:
      remove:
        - Domain Admins
        - Domain Users

- name: Replace entire membership of group
  microsoft.ad.group:
    name: Test Group
    scope: domainlocal
    members:
      set:
        - Domain Admins
        - Domain Users
        - name: UserInOtherDomain
          server: OtherDomain
    domain_credentials:
      - name: OtherDomain
        username: OtherDomainUser
        password: '{{ other_domain_password }}'

返回值

常见的返回值已在此处记录,以下是此模块特有的字段。

描述

distinguished_name

字符串

已创建、删除或编辑的AD对象的distinguishedName

返回值:始终返回

示例:"CN=MyGroup,CN=Users,,DC=domain,DC=test"

object_guid

字符串

已创建、删除或编辑的AD对象的objectGUID

如果在check模式下创建了新对象,则将返回一个全为0的GUID。

返回值:始终返回

示例:"d84a141f-2b99-4f08-9da0-ed2d26864ba1"

sid

字符串

被管理的组的安全标识符 (SID)。

如果在check模式下创建了新组,则SID将为S-1-5-0000

返回值:始终返回

示例:"S-1-5-21-4151808797-3430561092-2843464588-1104"

作者

  • Jordan Borean (@jborean93)