设置列表选项值指南
一些 AD 选项接受多个值,这在 Ansible 中检查幂等性时需要特殊的规则。此集合的设计使得管理 AD 对象的每个模块在选项方面都遵循相同的样式。特别是,当涉及到包含多个值(如 spn、delegates 等)的选项时,它们都应遵循本指南中记录的样式。
添加、删除和设置
对于每个管理多值 LDAP 属性的模块选项,存在三个操作
添加删除设置
add 和 remove 选项将从现有值中添加或删除指定的值。 set 选项将使用任务中指定的值替换现有值。使用以下 servicePrincipalNames 值的 AD 对象示例
HTTP/host1HTTP/host1.domain.comHTTP/host1.domain.com:443
执行 add: ['HTTP/host1','HTTP/host2'] 将 HTTP/host2 添加到现有值中,使其变为
HTTP/host1HTTP/host1.domain.comHTTP/host1.domain.com:443HTTP/host2
执行 remove: ['HTTP/host1','HTTP/host3'] 将从现有值中删除 HTTP/host1,使其变为
HTTP/host1.domain.comHTTP/host1.domain.com:443
执行 set: ['HTTP/host1', 'HTTP/host2'] 将删除列表中不存在的所有值,并添加列表中存在但未设置的值,使其变为
HTTP/host1HTTP/host2
可以一起使用 add 和 remove,但设置 set 将始终优先于其他选项。也可以通过将 set 值设置为空列表来清除所有现有值,例如 set: []。
示例
add、remove 和 set 选项是它控制的模块选项的子键。例如,microsoft.ad.user 有一个名为 groups 的选项,该选项控制用户所属的组列表。要向用户添加一个组,只需使用 add 键,如下所示
- name: add a user to a group
microsoft.ad.user:
name: MyUser
groups:
add:
- Group 1
- Group 2
这将确保用户添加到组 Group 1 和 Group 2,同时保留现有成员资格。要从用户中删除用户,只需使用 remove 键,如下所示
- name: remove a user from a group
microsoft.ad.user:
name: MyUser
groups:
remove:
- Group 1
- Group 2
这与添加相反,将从 Group 1 和 Group 2 中删除用户,但仍将保留该用户的任何现有组成员资格。也可以组合使用 add 和 remove
- name: add and remove user groups
microsoft.ad.user:
name: MyUser
groups:
add:
- Group 1
remove:
- Group 2
这将确保用户是 Group 1 的成员,而不是 Group 2 的成员。与之前一样,如果未指定现有组成员资格,则不会触及。
set 选项遵循相同的格式,如下所示
- name: set user groups
microsoft.ad.user:
name: MyUser
groups:
set:
- Group 1
- Group 2
这将确保用户仅是 Group 1 和 Group 2 的成员,删除列表中不存在的任何其他组。虽然可以将 set 与 add 或 remove 组合使用,但模块将完全忽略 add 或 remove 中的值。
最后,要从所有组中删除用户,请对 set 选项使用空列表,如下所示
- name: remove user groups
microsoft.ad.user:
name: MyUser
groups:
set: []
注意
这对于用户组实际上是不可能的,因为它始终是其主要组的成员,这里仅用于演示目的。