microsoft.ad.computer 模块 – 管理 Active Directory 计算机对象

注意

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

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

要安装它,请使用:ansible-galaxy collection install microsoft.ad。您需要其他需求才能使用此模块,有关详细信息,请参阅 需求

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

概要

  • 管理 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 UTC 以来的 100 纳秒数。

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

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

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

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

默认值: {}

add

字典

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

这用于可以包含多个值的属性,如果属性仅允许单个值,则改用 *set*。

默认值: {}

remove

字典

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

这用于可以包含多个值的属性,如果属性仅允许单个值,则改用 *set*。

默认值: {}

set

字典

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

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

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

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

默认值: {}

delegates

别名:principals_allowed_to_delegate

字典

当前 AD 对象可以信任的委托主体对象,用于添加、删除或设置。

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

这是在 msDS-AllowedToActOnBehalfOfOtherIdentity LDAP 属性上设置的值。

这是一个高度敏感的属性,因为它允许指定的委托主体在使用正在管理的 AD 计算机对象进行身份验证时模拟任何帐户。

要清除所有委托主体,请使用带空列表的 *set*。

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

有关如何添加/删除/设置列表选项的更多信息,请参阅 设置列表选项值

add

列表 / 元素=任意

添加指定为允许委托的主体。

除非由 *remove* 指定或不在 *set* 中,否则 *add* 未指定的任何现有主体将保持不变。

lookup_failure_action

字符串

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

fail 将导致任务失败。

ignore 将忽略该值并继续。

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

选项

  • "fail" ← (默认)

  • "ignore"

  • "warn"

remove

列表 / 元素=任意

删除指定为允许委托的主体。

除非定义了 *set*,否则 *remove* 未指定的任何现有主体将保持不变。

set

列表 / 元素=任意

将指定的主体设置为允许委托的主体。

如果此列表中未指定,这将删除任何现有主体。

指定空列表以删除所有允许委托的主体。

description

字符串

要设置的 AD 对象的描述。

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

display_name

字符串

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

这是displayName LDAP属性的值。

dns_hostname

字符串

指定计算机的完全限定域名 (FQDN)。

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

do_not_append_dollar_to_sam

布尔值

在microsoft.ad 1.7.0中添加

不要自动将$追加到sam_account_name值。

这只适用于显式设置sam_account_name的情况,可用于创建没有$后缀的计算机帐户。

选项

  • false ← (默认)

  • true

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组中设置。

enabled

布尔值

yes 将启用计算机。

no 将禁用计算机。

选项

  • false

  • true

identity

字符串

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

如果满足以下条件,则必须指定此项:未设置name,尝试使用新的name重命名对象,或尝试将对象移动到不同的path

标识可以是代表objectGUID值、userPrincipalNamesAMAccountNameobjectSiddistinguishedName的GUID的形式。

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

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

kerberos_encryption_types

字典

指定AD计算机帐户支持的Kerberos加密类型。

这是在msDS-SupportedEncryptionTypes LDAP属性上设置的值。

避免使用rc4des,因为它们是较旧且不安全的加密协议。

要清除所有加密类型,请使用带有空列表的set

有关如何添加/删除/设置列表选项的更多信息,请参阅 设置列表选项值

add

列表 / 元素=字符串

要添加到现有集合的加密类型。

add未指定的任何现有加密类型将保持不变,除非由remove指定或不在set中。

选项

  • "aes128"

  • "aes256"

  • "des"

  • "rc4"

remove

列表 / 元素=字符串

要从现有集合中删除的加密类型。

remove未指定的任何现有加密类型将保持不变,除非定义了set

选项

  • "aes128"

  • "aes256"

  • "des"

  • "rc4"

set

列表 / 元素=字符串

要设置为AD计算机允许的唯一加密类型的加密类型。

如果此列表中未指定,这将删除所有现有加密类型。

指定空列表以删除所有加密类型。

选项

  • "aes128"

  • "aes256"

  • "des"

  • "rc4"

location

字符串

设置计算机帐户的位置。

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

managed_by

任何

管理对象的用户或组。

该值可以是distinguishedNameobjectGUIDobjectSidsAMAccountNameuserPrincipalName字符串的形式,也可以是包含name和可选server键的字典。

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

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

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值。

它最多有256个字符,建议对于旧的操作系统兼容性使用15个字符。

如果省略,则在创建计算机时,该值与name$相同。

请注意,所有计算机sAMAccountName值通常以$结尾。

默认情况下,如果省略了$,它将添加到末尾。如果do_not_append_dollar_to_sam=True,则将按原样使用提供的值,而不会在末尾添加$

spn

别名:spns

字典

指定要添加、删除或设置的帐户的服务主体名称 (SPN)。

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

要清除所有服务主体名称,请使用带有空列表的set

有关如何添加/删除/设置列表选项的更多信息,请参阅 设置列表选项值

add

列表 / 元素=字符串

要添加到servicePrincipalName的SPN。

remove

列表 / 元素=字符串

要从servicePrincipalName中删除的SPN。

set

列表 / 元素=字符串

要设置为servicePrincipalName中唯一值的SPN。

如果不在指定的列表中,这将清除所有现有的SPN。

设置为空列表可清除AD对象上的所有SPN。

state

字符串

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

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

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

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

选项

  • "absent"

  • "present" ← (默认)

trusted_for_delegation

布尔值

指定帐户是否受信任用于Kerberos委派。

这也被称为无约束Kerberos委派。

这会在userAccountControl LDAP属性中设置ADS_UF_TRUSTED_FOR_DELEGATION标志。

选项

  • false

  • true

upn

字符串

配置帐户的用户主体名称 (UPN)。

格式为<username>@<domain>

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

属性

属性

支持

描述

check_mode

支持: 完全支持

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

diff_mode

支持: 完全支持

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

platform

平台: windows

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

备注

注意

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

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

  • 当使用sAMAccountName值按identity匹配时,该值应以$结尾。如果提供的值不以$结尾,则模块仍将尝试查找具有提供值(在末尾附加$之前)的计算机帐户。此回退行为是在此集合的1.7.0版本中添加的。

  • 某些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.offline_join

获取脱机域加入BLOB。

microsoft.ad.group

管理Active Directory组对象。

迁移指南

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

community.windows.win_domain_computer

管理Active Directory中的计算机。

示例

- name: Add linux computer to Active Directory OU using a windows machine
  microsoft.ad.computer:
    name: one_linux_server
    sam_account_name: linux_server$
    dns_hostname: one_linux_server.my_org.local
    path: OU=servers,DC=my_org,DC=local
    description: Example of linux server
    enabled: true
    state: present

- name: Remove linux computer from Active Directory using a windows machine
  microsoft.ad.computer:
    identity: one_linux_server$
    state: absent

- name: Add SPNs to computer
  microsoft.ad.computer:
    identity: TheComputer$
    spn:
      add:
        - HOST/TheComputer
        - HOST/TheComputer.domain.test
        - HOST/TheComputer.domain.test:1234

- name: Remove SPNs on the computer
  microsoft.ad.computer:
    identity: TheComputer$
    spn:
      remove:
        - HOST/TheComputer
        - HOST/TheComputer.domain.test
        - HOST/TheComputer.domain.test:1234

- name: Set the principals the computer trusts for delegation from
  microsoft.ad.computer:
    identity: TheComputer$
    delegates:
      set:
        - CN=FileShare,OU=Computers,DC=domain,DC=test
        - OtherServer$  # Lookup by sAMAaccountName

- name: Add computer with sAMAccountName without $ suffix
  microsoft.ad.computer:
    identity: TheComputer
    sam_account_name: TheComputer
    do_not_append_dollar_to_sam: true

返回值

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

描述

distinguished_name

字符串

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

返回:始终

示例:"CN=MyComputer,CN=Computers,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)