Spec-Zone.ru › Ansible

Руководство по заданию значений параметров-списков

Некоторые параметры AD принимают несколько значений, для проверки идемпотентности которых в Ansible требуются специальные правила. Эта коллекция разработана таким образом, чтобы все модули, управляющие объектами AD, использовали единый стиль параметров. В частности, для параметров, содержащих несколько значений, например spn, delegates и т. д., следует придерживаться стиля, описанного в этом руководстве.

  • Добавление, удаление и установка
  • Примеры

Добавление, удаление и установка

Для каждого параметра модуля, управляющего многозначным атрибутом LDAP, доступны три действия:

  • add
  • remove
  • set

Параметры add и remove добавляют или удаляют указанные значения из существующего набора. Параметр set заменяет существующие значения на указанные в задаче. Рассмотрим объект AD со следующими значениями servicePrincipalNames:

  • 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: []

Примечание

На самом деле это невозможно для групп пользователя, поскольку он всегда состоит в своей основной группе. Этот пример приведён только для демонстрации.

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API