设置列表选项值指南
一些 AD 选项接受多个值,这在 Ansible 中检查幂等性时需要特殊的规则。此集合的设计使得管理 AD 对象的每个模块在选项方面都遵循相同的样式。特别是,当涉及到包含多个值(如 spn
、delegates
等)的选项时,它们都应遵循本指南中记录的样式。
添加、删除和设置
对于每个管理多值 LDAP 属性的模块选项,存在三个操作
添加
删除
设置
add
和 remove
选项将从现有值中添加或删除指定的值。 set
选项将使用任务中指定的值替换现有值。使用以下 servicePrincipalNames
值的 AD 对象示例
HTTP/host1
HTTP/host1.domain.com
HTTP/host1.domain.com:443
执行 add: ['HTTP/host1','HTTP/host2']
将 HTTP/host2
添加到现有值中,使其变为
HTTP/host1
HTTP/host1.domain.com
HTTP/host1.domain.com:443
HTTP/host2
执行 remove: ['HTTP/host1','HTTP/host3']
将从现有值中删除 HTTP/host1
,使其变为
HTTP/host1.domain.com
HTTP/host1.domain.com:443
执行 set: ['HTTP/host1', 'HTTP/host2']
将删除列表中不存在的所有值,并添加列表中存在但未设置的值,使其变为
HTTP/host1
HTTP/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: []
注意
这对于用户组实际上是不可能的,因为它始终是其主要组的成员,这里仅用于演示目的。