community.general.ldap_attrs 模块 – 添加或移除多个 LDAP 属性值

注意

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

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

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

要在 playbook 中使用它,请指定: community.general.ldap_attrs

community.general 0.2.0 中的新增功能

概要

  • 添加或移除多个 LDAP 属性值。

要求

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

  • python-ldap

参数

参数

注释

attributes

字典 / 必需

要添加或移除的属性和值。

每个属性值可以是单值属性的字符串或多值属性的字符串列表。

如果您在 YAML 中指定此选项的值,请注意,您可以使用此模块示例中所示的 YAML 块修饰符来提高长字符串值的易读性。

请注意,当使用 YAML/ansible-core 解释为其他类型的值时,例如 yesno(布尔值)或 2.10(浮点数),如果这些值旨在作为字符串,请确保将它们用引号括起来。否则,可能会向 LDAP 发送错误的值。

bind_dn

字符串

要绑定到的 DN。如果省略此项,我们将尝试使用 EXTERNAL 机制进行 SASL 绑定作为默认值。

如果为空,我们将使用匿名绑定。

bind_pw

字符串

bind_dn 一起使用的密码。

默认值: ""

ca_path

路径

community.general 6.5.0 中新增

设置包含 CA 证书的 PEM 文件的路径。

client_cert

路径

community.general 7.1.0 中新增

要用于 SSL 客户端身份验证的 PEM 格式证书链文件。

如果定义了 client_key,则需要此参数。

client_key

路径

community.general 7.1.0 中新增

包含要用于 SSL 客户端身份验证的私钥的 PEM 格式文件。

如果定义了 client_cert,则需要此参数。

dn

字符串 / 必需

要添加或移除的条目的 DN。

ordered

布尔值

如果为 true,则在当前任务中指定的全部属性中,使用 X-ORDERED 索引号作为列表值的开头。这主要对 olcAccess 属性有用,可以轻松管理 LDAP 访问控制列表。

选项

  • false ← (默认)

  • true

referrals_chasing

字符串

community.general 2.0.0 中新增

设置转发追踪行为。

anonymous 匿名跟踪转发。这是默认行为。

disabled 禁用转发追踪。这会将 OPT_REFERRALS 设置为关闭。

选项

  • "disabled"

  • "anonymous" ← (默认)

sasl_class

字符串

community.general 2.0.0 中新增

用于 SASL 身份验证的类。

选项

  • "external" ← (默认)

  • "gssapi"

server_uri

字符串

server_uri 参数可以是包含仅模式、主机和端口字段的 URI 的逗号或空格分隔列表。

默认值允许底层 LDAP 客户端库在其默认位置查找 UNIX 域套接字。

请注意,当使用多个 URI 时,您无法确定客户端连接到哪个 URI。

对于包含其他字段的 URI,尤其是在使用逗号时,行为未定义。

默认值: "ldapi:///"

start_tls

布尔值

如果为 true,我们将使用 START_TLS LDAP 扩展。

选项

  • false ← (默认)

  • true

state

字符串

属性值的状态。如果为 present,则如果缺少所有给定的属性值,则将添加它们。如果为 absent,则如果存在所有给定的属性值,则将移除它们。如果为 exact,则属性值集将强制设置为提供的那些值,而不是其他值。如果 state=exact 且属性值为空,则将移除此属性的所有值。

选项

  • "present" ← (默认)

  • "absent"

  • “精确”

validate_certs

布尔值

如果设置为false,则不会验证SSL证书。

这仅应用于使用自签名证书的站点。

选项

  • false

  • true ← (默认)

xorder_discovery

字符串

在community.general 6.4.0中添加

设置处理Xordered DN的行为。

enable 将在父RDN下方执行ONELEVEL搜索以查找匹配的DN。

disable 将始终使用未修改的DN(由dn 参数传递)。

auto 仅当第一个RDN不包含索引号({x})时才执行搜索。

选项

  • “enable”

  • "auto" ← (默认)

  • “disable”

属性

属性

支持

描述

check_mode

支持:完全支持

可以在check_mode下运行,并在不修改目标的情况下返回更改状态预测。

diff_mode

支持:完全支持

在community.general 8.5.0中添加

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

备注

注意

  • 这仅处理现有条目上的属性。要添加或删除整个条目,请参见community.general.ldap_entry

  • 默认身份验证设置将尝试通过UNIX域套接字使用SASL EXTERNAL绑定。例如,这在默认的Ubuntu安装中运行良好,其中包括一个cn=peercred,cn=external,cn=auth ACL规则,允许root修改服务器配置。如果您需要使用简单的绑定来访问您的服务器,请在bind_dnbind_pw中传递凭据。

  • 对于state=presentstate=absent,所有值比较都在服务器上执行,以确保最大准确性。对于state=exact,必须在Python中比较值,这显然会忽略LDAP匹配规则。这在大多数情况下都能正常工作,但在理论上,当目标值和实际值在语义上相同但在词法上不同时,可能会出现虚假更改。

示例

- name: Configure directory number 1 for example.com
  community.general.ldap_attrs:
    dn: olcDatabase={1}hdb,cn=config
    attributes:
        olcSuffix: dc=example,dc=com
    state: exact

# The complex argument format is required here to pass a list of ACL strings.
- name: Set up the ACL
  community.general.ldap_attrs:
    dn: olcDatabase={1}hdb,cn=config
    attributes:
        olcAccess:
          - >-
            {0}to attrs=userPassword,shadowLastChange
            by self write
            by anonymous auth
            by dn="cn=admin,dc=example,dc=com" write
            by * none'
          - >-
            {1}to dn.base="dc=example,dc=com"
            by dn="cn=admin,dc=example,dc=com" write
            by * read
    state: exact

# An alternative approach with automatic X-ORDERED numbering
- name: Set up the ACL
  community.general.ldap_attrs:
    dn: olcDatabase={1}hdb,cn=config
    attributes:
        olcAccess:
          - >-
            to attrs=userPassword,shadowLastChange
            by self write
            by anonymous auth
            by dn="cn=admin,dc=example,dc=com" write
            by * none'
          - >-
            to dn.base="dc=example,dc=com"
            by dn="cn=admin,dc=example,dc=com" write
            by * read
    ordered: true
    state: exact

- name: Declare some indexes
  community.general.ldap_attrs:
    dn: olcDatabase={1}hdb,cn=config
    attributes:
        olcDbIndex:
            - objectClass eq
            - uid eq

- name: Set up a root user, which we can use later to bootstrap the directory
  community.general.ldap_attrs:
    dn: olcDatabase={1}hdb,cn=config
    attributes:
        olcRootDN: cn=root,dc=example,dc=com
        olcRootPW: "{SSHA}tabyipcHzhwESzRaGA7oQ/SDoBZQOGND"
    state: exact

- name: Remove an attribute with a specific value
  community.general.ldap_attrs:
    dn: uid=jdoe,ou=people,dc=example,dc=com
    attributes:
        description: "An example user account"
    state: absent
    server_uri: ldap://127.0.0.1/
    bind_dn: cn=admin,dc=example,dc=com
    bind_pw: password

- name: Remove specified attribute(s) from an entry
  community.general.ldap_attrs:
    dn: uid=jdoe,ou=people,dc=example,dc=com
    attributes:
        description: []
    state: exact
    server_uri: ldap://127.0.0.1/
    bind_dn: cn=admin,dc=example,dc=com
    bind_pw: password

返回值

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

描述

modlist

列表 / 元素=字符串

已修改参数的列表

返回:成功

示例:[[2, "olcRootDN", ["cn=root,dc=example,dc=com"]]]

作者

  • Jiri Tyr (@jtyr)

  • Alexander Korinek (@noles)

  • Maciej Delmanowski (@drybjed)