community.windows.win_domain_computer 模块 – 管理 Active Directory 中的计算机

注意

此模块是 community.windows 集合(版本 2.3.0)的一部分。

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

要安装它,请使用:ansible-galaxy collection install community.windows

要在 playbook 中使用它,请指定:community.windows.win_domain_computer

已弃用

已在以下版本中删除:

3.0.0 版本

原因:

此模块已移至 microsoft.ad 集合。

替代方案:

请改用 microsoft.ad.computer 模块。

概要

  • 使用 Windows 桥接计算机启动 New-ADComputer、Get-ADComputer、Set-ADComputer、Remove-ADComputer 和 Move-ADObject powershell 命令,在 Active Directory 中创建、读取、更新和删除计算机。

参数

参数

注释

description

字符串

指定对象的描述。

此参数设置对象的 Description 属性的值。

此属性的 LDAP 显示名称 (ldapDisplayName) 为 description。

默认值: ""

dns_hostname

字符串

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

此参数设置计算机对象的 DNSHostName 属性。

此属性的 LDAP 显示名称为 dNSHostName。

state=present 时为必填项。

domain_password

字符串

username 的密码。

domain_server

字符串

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

可以是 FQDN 或 NetBIOS 名称的形式。

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

domain_username

字符串

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

如果未设置,则在使用 CredSSP 或 Kerberos 与凭据委派时,将改用 Ansible 用于登录的用户。

enabled

布尔值

指定是否启用帐户。

启用的帐户需要密码。

此参数设置帐户对象的 Enabled 属性。

此参数还设置 Active Directory 用户帐户控制 (UAC) 属性的 ADS_UF_ACCOUNTDISABLE 标志。

选择

  • false

  • true ←(默认)

managed_by

字符串

在 community.windows 1.3.0 中添加

要分配给 LDAP managedBy 属性的值。

此值可以是 Distinguished NameobjectGUIDobjectSidsAMAccountName 的形式,有关更多详细信息,请参阅示例。

name

字符串 / 必填

指定对象的名称。

此参数设置 Active Directory 对象的 Name 属性。

此属性的 LDAP 显示名称 (ldapDisplayName) 为 name。

odj_blob_path

字符串

将保存 BLOB 的文件的路径。如果省略,将使用临时文件。

如果 offline_domain_join=output,则在返回其内容后将删除该文件。

BLOB 文件的父目录必须存在;不会创建中间目录。

offline_domain_join

字符串

在目录中预配计算机并提供一个 BLOB 文件,该文件可用于目标计算机/映像以在脱机时将其加入域。

none 值不执行任何脱机加入操作。

output 在输出中返回 BLOB。BLOB 应被视为机密(它包含机器密码),因此在使用此选项时请使用 no_log

path 将脱机加入域的 BLOB 文件保留在目标计算机上以供以后使用。将返回该路径。

如果计算机已存在,则不会创建/返回 BLOB,并且模块将像没有脱机加入域一样运行。

选择

  • "none" ←(默认)

  • "output"

  • "path"

ou

字符串

指定创建新对象的组织单位 (OU) 或容器的 X.500 路径。当 state=present 时为必填项。

必须转义特殊字符,有关详细信息,请参阅 专有名称

sam_account_name

字符串

指定计算机的安全帐户管理器 (SAM) 帐户名称。

最大长度为 256 个字符,建议为 15 个字符以与较旧的操作系统兼容。

此属性的 LDAP 显示名称 (ldapDisplayName) 为 sAMAccountName。

如果省略,则该值与 name 相同。

请注意,所有计算机 SAMAccountName 都需要以 $ 结尾。

如果省略 $,它将被添加到末尾。

状态

字符串

指定计算机在 Active Directory 中应该是 present(存在)还是 absent(不存在)。

选择

  • "absent"(不存在)

  • "present" ← (默认)

注释

注意

  • 有关脱机加入域的更多信息,请参阅分步指南

  • 当使用 ODJ BLOB 将计算机加入域时,必须将其写入文件。

  • 该文件必须使用 UTF-16 编码(在 PowerShell 中,这种编码称为 Unicode),并且必须以空字符结尾。请参阅示例。

  • 脱机加入域过程的 djoin.exe 部分不会使用 *domain_server*,*domain_username* 或 *domain_password*。

  • 这必须在安装了 ActiveDirectory PowerShell 模块的主机上运行。

另请参阅

另请参阅

ansible.windows.win_domain

确保 Windows 域的存在。

ansible.windows.win_domain_controller

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

community.windows.win_domain_group

创建、修改或删除域组。

ansible.windows.win_domain_membership

管理 Windows 主机的域/工作组隶属关系。

community.windows.win_domain_user

管理 Windows Active Directory 用户帐户。

示例

- name: Add linux computer to Active Directory OU using a windows machine
  community.windows.win_domain_computer:
    name: one_linux_server
    sam_account_name: linux_server$
    dns_hostname: one_linux_server.my_org.local
    ou: "OU=servers,DC=my_org,DC=local"
    description: Example of linux server
    enabled: true
    state: present
  delegate_to: my_windows_bridge.my_org.local

- name: Remove linux computer from Active Directory using a windows machine
  community.windows.win_domain_computer:
    name: one_linux_server
    state: absent
  delegate_to: my_windows_bridge.my_org.local

- name: Provision a computer for offline domain join
  community.windows.win_domain_computer:
    name: newhost
    dns_hostname: newhost.ansible.local
    ou: 'OU=A great\, big organizational unit name,DC=ansible,DC=local'
    state: present
    offline_domain_join: true
    odj_return_blob: true
  register: computer_status
  delegate_to: windc.ansible.local

- name: Join a workgroup computer to the domain
  vars:
    target_blob_file: 'C:\ODJ\blob.txt'
  ansible.windows.win_shell: |
    $blob = [Convert]::FromBase64String('{{ computer_status.odj_blob }}')
    [IO.File]::WriteAllBytes('{{ target_blob_file }}', $blob)
    & djoin.exe --% /RequestODJ /LoadFile '{{ target_blob_file }}' /LocalOS /WindowsPath "%SystemRoot%"

- name: Restart to complete domain join
  ansible.windows.win_restart:

返回值

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

描述

djoin

字典

有关调用 djoin.exe 的信息。

返回: 当 offline_domain_join 为 True 并且计算机不存在时

invocation

字符串

用于调用 djoin.exe 的完整命令行

返回: 总是

示例: "djoin.exe /PROVISION /MACHINE compname /MACHINEOU OU=Hosts,DC=ansible,DC=local /DOMAIN ansible.local /SAVEFILE blobfile.txt"

rc

整数

djoin.exe 的返回代码

返回: 当非检查模式时

示例: 87

stderr

字符串

来自 djoin.exe 的 stderr

返回: 当非检查模式时

示例: "无效的 输入 参数 组合。"

stdout

字符串

来自 djoin.exe 的 stdout

返回: 当非检查模式时

示例: "计算机 配置 成功完成。"

odj_blob

字符串

脱机加入域的 BLOB。 当处于检查模式或 offline_domain_join 为 “path” 时,这是一个空字符串。

此字段包含脱机加入域 BLOB 文件的 base64 编码的原始字节。

返回: 当 offline_domain_join 不是 “none” 并且计算机不存在时

示例: "<一个 长的 base64 字符串>"

odj_blob_file

字符串

目标主机上脱机加入域 BLOB 文件的路径。如果指定了 odj_blob_path,则此路径将与之匹配。

返回: 当 offline_domain_join 为 “path” 并且计算机不存在时

示例: "C:\\Users\\admin\\AppData\\Local\\Temp\\e4vxonty.rkb"

状态

  • 此模块将在 3.0.0 版本中删除。 *[已弃用]*

  • 有关更多信息,请参阅 已弃用

作者

  • Daniel Sánchez Fábregas (@Daniel-Sanchez-Fabregas)

  • Brian Scholer (@briantist)