Руководство по заданию значений параметров-списков
Некоторые параметры AD принимают несколько значений, для проверки идемпотентности которых в Ansible требуются специальные правила. Эта коллекция разработана таким образом, чтобы все модули, управляющие объектами AD, использовали единый стиль параметров. В частности, для параметров, содержащих несколько значений, например spn, delegates и т. д., следует придерживаться стиля, описанного в этом руководстве.
Добавление, удаление и установка
Для каждого параметра модуля, управляющего многозначным атрибутом LDAP, доступны три действия:
addremoveset
Параметры add и remove добавляют или удаляют указанные значения из существующего набора. Параметр set заменяет существующие значения на указанные в задаче. Рассмотрим объект AD со следующими значениями servicePrincipalNames:
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: []
Примечание
На самом деле это невозможно для групп пользователя, поскольку он всегда состоит в своей основной группе. Этот пример приведён только для демонстрации.
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/microsoft/ad/docsite/guide_list_values.html