Spec-Zone.ru › Ansible

microsoft.ad.ldap inventory – Плагин инвентаризации для Active Directory

Примечание

Этот плагин инвентаризации входит в коллекцию microsoft.ad (версия 1.7.1).

Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить установку, выполните ansible-galaxy collection list.

Для установки используйте: ansible-galaxy collection install microsoft.ad. Для использования этого плагина инвентаризации необходимы дополнительные требования, см. Требования для подробностей.

Чтобы использовать его в плейбуке, укажите: microsoft.ad.ldap.

Добавлена в microsoft.ad 1.1.0

  • Описание
  • Требования
  • Параметры
  • Примечания
  • Примеры

Описание

  • Плагин инвентаризации для Active Directory или других источников LDAP.
  • Использует конфигурационный файл YAML, который заканчивается microsoft.ad.ldap.{yml|yaml}.
  • Каждый добавляемый хост установит inventory_hostname в name объекта компьютера LDAP и ansible_host в значение атрибута LDAP dNSHostName , если он задан. Если атрибут dNSHostName не задан в объекте компьютера, то ansible_host не устанавливается. Подробнее о том, как устанавливаются эти значения и как их настроить, см. Имя хоста инвентаризации LDAP.
  • Факт хоста microsoft_ad_distinguished_name также будет установлен в имя объекта хоста, использованного для получения записи хоста.
  • Любой другой необходимый факт должен быть определён в опции attributes.

Требования

Ниже перечислены требования к локальному контроллеру, выполняющему этот инвентаризационный плагин.

  • dnspython - Для поддержки поиска сервера по опции
  • pyspnego >= 0.8.0
  • pyspnego[kerberos] - Для поддержки Kerberos и поиска сервера
  • sansldap
  • dpapi-ng - Для поддержки дешифрования LAPS

Параметры

Параметр

Комментарии

attributes

dictionary

Атрибуты LDAP для получения.

Указанные ключи представляют собой запрашиваемые атрибуты LDAP, а значения для каждого атрибута — это словарь, отражающий, в какую переменную узла его следует установить и как.

Каждый ключ внутреннего значения словаря — это имя переменной узла, которую нужно установить, а значение — это шаблон, используемый для получения значения. Если значение не установлено явно, оно будет использовать принудительно преобразованное значение, возвращаемое из атрибута LDAP.

Атрибуты, обозначенные как однозначные в схеме LDAP, возвращаются как одно значение, многозначные атрибуты возвращаются как список значений.

См. LDAP inventory attributes для получения дополнительной информации.

Default: {}

auth_protocol

string

Протокол аутентификации, используемый при подключении к хосту LDAP.

По умолчанию используется certificate если используется LDAPS/StartTLS и указан certificate. В противном случае по умолчанию используется negotiate.

simple — это простая аутентификация, при которой имя пользователя и пароль отправляются в виде открытого текста. Он не поддерживает шифрование, поэтому его необходимо использовать с LDAPS или StartTLS. При использовании через соединение LDAP с открытым текстом без TLS необходимо указать encrypt=False, чтобы явно отказаться от шифрования.

certificate — это аутентификация с использованием клиентского сертификата TLS. Его можно использовать только с LDAPS или StartTLS. См. certificate для получения дополнительной информации о том, как указать клиентский сертификат, используемый для аутентификации.

negotiate попытается установить аутентификацию Kerberos с резервным переходом к NTLM. Если Kerberos доступен, кэш учетных данных Kerberos может использоваться, если имя пользователя или пароль не указаны.

kerberos будет использовать аутентификацию Kerberos без резервного перехода к NTLM.

ntlm будет использовать аутентификацию NTLM без попытки Kerberos.

negotiate, kerberos и ntlm поддерживают шифрование через LDAP.

Поддержка Kerberos требует установки дополнительных компонентов pyspnego[kerberos].

См. LDAP authentication для получения дополнительной информации.

Этот параметр можно установить с помощью значения шаблона Jinja2.

Варианты:

  • "simple"
  • "certificate"
  • "negotiate"
  • "kerberos"
  • "ntlm"

Конфигурация:

  • Переменная среды: MICROSOFT_AD_LDAP_AUTH_PROTOCOL

ca_cert

string

Может быть путем к файлу сертификата CA PEM или DER, каталогом сертификатов PEM или строкой сертификата CA PEM, используемой для проверки сертификата.

Если пропущено, хранилище CA по умолчанию, используемое для проверки, зависит от текущих параметров Python.

Этот параметр можно установить с помощью значения шаблона Jinja2.

Конфигурация:

  • Переменная среды: MICROSOFT_AD_LDAP_CA_CERT

cert_validation

string

Поведение проверки сертификата при использовании соединения TLS.

Это может быть установлено на always, ignore, ignore_hostname.

always выполнит проверку имени узла сертификата и CA.

ignore проигнорирует все ошибки сертификата.

ignore_hostname проверит цепочку доверия CA, но проигнорирует любые проверки имени узла, выполняемые TLS.

См. Certificate validation для получения дополнительной информации.

Этот параметр можно установить с помощью значения шаблона Jinja2.

Варианты:

  • "always" ← (default)
  • "ignore"
  • "ignore_hostname"

Конфигурация:

  • Переменная среды: MICROSOFT_AD_LDAP_CERT_VALIDATION

certificate

string

Сертификат или пакет сертификата с ключом, используемый для аутентификации сертификата.

Значение может быть либо путем к файлу, содержащему сертификат, либо строкой сертификата с кодировкой PEM.

При использовании пути к файлу сертификата файл может быть сертификатом с кодировкой PEM, пакетом сертификата и ключа с кодировкой PEM, сертификатом с кодировкой DER или пакетом сертификата и ключа с кодировкой PFX/PKCS12.

Используйте certificate_key, если указанный сертификат не содержит ключ.

Используйте certificate_password, если ключ зашифрован паролем.

Этот параметр можно установить с помощью значения шаблона Jinja2.

Конфигурация:

  • Переменная среды: MICROSOFT_AD_LDAP_CERTIFICATE

certificate_key

string

Ключ сертификата, используемый для аутентификации сертификата.

Значение может быть либо путем к файлу, содержащему ключ в кодировке PEM или DER, либо строкой ключа с кодировкой PEM.

Используйте certificate_password, если ключ зашифрован паролем.

Этот параметр можно установить с помощью значения шаблона Jinja2.

Конфигурация:

  • Переменная среды: MICROSOFT_AD_LDAP_CERTIFICATE_KEY

certificate_password

string

Пароль, используемый для расшифровки ключа сертификата, указанного в certificate или certificate_key.

Этот параметр можно установить с помощью значения шаблона Jinja2.

Конфигурация:

  • Переменная среды: MICROSOFT_AD_LDAP_CERTIFICATE_PASSWORD

compose

dictionary

Создать переменные из выражений jinja2.

Default: {}

connection_timeout

integer

Тайм-аут в секундах ожидания установления соединения перед сбоем.

Этот параметр можно установить с помощью значения шаблона Jinja2.

Default: 5

Конфигурация:

  • Переменная среды: MICROSOFT_AD_LDAP_CONNECTION_TIMEOUT

encrypt

boolean

Требуется ли шифрование для подключения.

Шифрование может выполняться с использованием протокола аутентификации или через TLS.

auth_protocol negotiate, kerberos, и ntlm все поддерживают шифрование по LDAP, в то время как simple этого не делает.

Если используется auth_protocol=simple по LDAP без TLS, то это должно быть установлено в значение False. Поскольку шифрование не используется, весь трафик будет в открытом виде и следует избегать этого.

Этот параметр можно задать с помощью значения шаблона Jinja2.

Варианты:

  • false
  • true ← (по умолчанию)

Настройка:

  • Переменная окружения: MICROSOFT_AD_LDAP_ENCRYPT

filter

string

Строка фильтра LDAP, используемая для запроса объектов компьютеров.

По умолчанию она будет объединена с фильтром “(objectCategory=computer)”. Используйте filter_without_computer для переопределения этого поведения и использования только filter в качестве фильтра.

filter_without_computer

boolean

добавлен в microsoft.ad 1.3.0

Не будет объединять значение filter с фильтром по умолчанию “(objectCategory=computer)”.

В большинстве случаев это должно быть false, но может быть установлено в true, чтобы значение filter использовалось как единственный фильтр.

Варианты:

  • false ← (по умолчанию)
  • true

groups

dictionary

Добавляет хосты в группу на основе условных выражений Jinja2.

По умолчанию: {}

keyed_groups

list / elements=dictionary

Добавляет хосты в группу на основе значений переменной.

По умолчанию: []

default_value

string

добавлен в ansible-core 2.12

Значение по умолчанию, когда значение переменной хоста — пустая строка.

Этот параметр взаимоисключает keyed_groups[].trailing_separator.

key

string

Ключ из входного словаря, используемый для создания групп.

parent_group

string

Родительская группа для группы с ключом.

prefix

string

Имя группы с ключом будет начинаться с этого префикса.

По умолчанию: ""

separator

string

Разделитель, используемый для построения имени группы с ключом.

По умолчанию: "_"

trailing_separator

boolean

добавлен в ansible-core 2.12

Установите этот параметр в False, чтобы опустить keyed_groups[].separator после переменной хоста, когда значение пустая строка.

Этот параметр взаимоисключает keyed_groups[].default_value.

Варианты:

  • false
  • true ← (по умолчанию)

leading_separator

boolean

добавлен в ansible-core 2.11

Используется совместно с keyed_groups.

По умолчанию имя группы с ключом, у которой нет указанного префикса или разделителя, будет начинаться с нижнего подчеркивания.

Это связано с тем, что префикс по умолчанию — “” и разделитель по умолчанию — “_”.

Установите этот параметр в False, чтобы опустить ведущий символ нижнего подчеркивания (или другой разделитель), если префикс не указан.

Если имя группы получено из отображения, разделитель все равно используется для конкатенации элементов.

Чтобы вообще не использовать разделитель в имени группы, установите разделитель для группы с ключом в пустую строку.

Варианты:

  • false
  • true ← (по умолчанию)

password

string

Пароль для аутентификации.

Если auth_protocol — simple и пароль не указан, выполняется привязка без аутентификации.

Если auth_protocol — negotiate, kerberos, или ntlm и пароль не указан, будет предпринята попытка использовать локальные сохраненные учетные данные, указанные параметром username, если они доступны.

Этот параметр можно задать с помощью значения шаблона Jinja2.

Настройка:

  • Переменная окружения: MICROSOFT_AD_LDAP_PASSWORD

port

integer

Порт LDAP для подключения.

Порт 389 используется для LDAP, а порт 686 — для LDAPS.

По умолчанию используется порт 636 если tls_mode=ldaps в противном случае 389.

Этот параметр можно задать с помощью значения шаблона Jinja2.

Настройка:

  • Переменная окружения: MICROSOFT_AD_LDAP_PORT

search_base

string

База поиска LDAP для поиска объектов компьютеров.

По умолчанию используется defaultNamingContext сервера Active Directory, если не указано иное.

При поиске в более крупной базе данных Active Directory рекомендуется сузить базу поиска для ускорения запросов.

search_scope

string

Область поиска LDAP.

base выполнит поиск только в текущем пути или объекте, указанном в search_base. Это обычно не используется для плагинов инвентаризации.

one_level выполнит поиск только в непосредственных дочерних объектах в search_base.

subtree выполнит поиск в непосредственных дочерних объектах и любых вложенных объектах в search_base.

Варианты:

  • "base"
  • "one_level"
  • "subtree" ← (по умолчанию)

server

string

Контроллер домена/сервер для подключения.

Если не указано, сервер будет определен из текущего файла krb5.conf default_realm и с помощью DNS-поиска SRV.

См. Поиск сервера для получения дополнительной информации.

Этот параметр можно задать с помощью значения шаблона Jinja2.

Настройка:

  • Переменная среды: MICROSOFT_AD_LDAP_SERVER

strict

boolean

Если yes сделать неверные записи ошибкой, иначе пропустить и продолжить.

Поскольку в выражениях можно использовать факты, они могут не всегда быть доступны, и по умолчанию мы игнорируем такие ошибки.

Варианты:

  • false ← (по умолчанию)
  • true

tls_mode

string

Используемый метод TLS.

Если явным образом задан параметр port со значением 636, то он по умолчанию устанавливается в значение ldaps.

ldaps подключается через LDAPS (порт 636).

start_tls подключается через LDAP (порт 389) и выполняет операцию StartTLS перед проверкой подлинности.

Рекомендуется использовать ldaps вместо start_tls при использовании TLS.

Этот параметр можно задать с помощью значения шаблона Jinja2.

Варианты:

  • "ldaps"
  • "start_tls"

Настройка:

  • Переменная среды: MICROSOFT_AD_LDAP_TLS_MODE

use_extra_vars

boolean

добавлен в ansible-core 2.11

Объединить дополнительные переменные в доступные переменные для композиции (высший приоритет).

Варианты:

  • false ← (по умолчанию)
  • true

Настройка:

  • Запись в INI:

    [inventory_plugins]
    use_extra_vars = false
    
  • Переменная среды: ANSIBLE_INVENTORY_USE_EXTRA_VARS

username

string

Имя пользователя для аутентификации.

Если auth_protocol равен simple и имя пользователя не указано, используется анонимная аутентификация.

Если auth_protocol равен negotiate, kerberos, или ntlm и имя пользователя не указано, будет попытка использовать кэшированные учетные данные, например, полученные с помощью kinit.

Этот параметр можно задать с помощью значения шаблона Jinja2.

Настройка:

  • Переменная среды: MICROSOFT_AD_LDAP_USERNAME

Примечания

Примечание

  • См. Инвентаризация LDAP для получения более подробной информации о том, как использовать этот плагин инвентаризации.
  • См. LAPS для получения дополнительной информации о том, как этот плагин может извлечь информацию о пароле LAPS.
  • Этот плагин находится в стадии технического предварительного просмотра, и параметры модуля могут быть изменены на основе полученной обратной связи.
  • Если в описании параметра не указано иное, значение, указанное в файле конфигурации, используется как есть. Только параметры подключения к LDAP позволяют использовать шаблон Jinja2.
  • См. Справочная информация по подключениям LDAP для получения дополнительной информации о подключениях LDAP.

Примеры

# Set in the file ending with microsoft.ad.ldap.yml or microsoft.ad.ldap.yaml
plugin: microsoft.ad.ldap


####################################################################
#                        Connection Options                        #
#                                                                  #
# These options control how the plugin connects to the LDAP server #
####################################################################

# Connects to ldap://dc01.domain.com:389
server: dc01.domain.com
port: 389

# Connects to ldaps://dc01.domain.com:636
server: dc01.domain.com
tls_mode: ldaps

# Connects to the global catalog
# ldap://dc01.domain.com:3268
server: dc01.domain.com
port: 3268

# Provides explicit user, will use the current Kerberos ticket if no credential
# is provided.
username: domain-user@DOMAIN.COM
password: Password123!

# Only allow Kerberos authentication.
auth_protocol: kerberos

# Verify LDAPS CA chain with custom CA chain.
tls_mode: ldaps
ca_cert: /home/user/certs/ldap.pem

# The username and password can be retrieved using a template with a lookup.
# Other connection options can also be set this way, the option description
# tells you whether it can be set to a template.
username: '{{ lookup("ansible.builtin.env", "LDAP_USERNAME") }}'
password: '{{ lookup("ansible.builtin.env", "LDAP_PASSWORD") }}'


##############################################
#               Search Options               #
#                                            #
# These options control the searching rules  #
##############################################

# Search for computer accounts in the Workshop OU.
search_base: OU=Workshop A,DC=domain,DC=com

# Filter the computer accounts returned for only ones with the dNSDomainName
# attribute set.
filter: (dNSDomainName=*)

# Filter computer accounts returned for ones starting with PROD and with the
# LAPS password set.
filter: (&(sAMAccountName=PROD*)(ms-Mcs-AdmPwd=*))

# See documentation for more details
attributes:
  sAMAccountName:
    sam_account_name:
  objectSid:
    computer_sid:
  pwdLastSet:
    password_last_set: this | microsoft.ad.as_datetime
  comment:
    host_comment
  memberOf:
    # Gets the value (1) of the first RDN (0) of each memberOf instance (this).
    # For example 'CN=Domain Admins,CN=Users,DC=domain,DC=test'
    # will be returned as just 'Domain Admins'
    computer_membership: this | microsoft.ad.parse_dn | map(attribute="0.1")
  location:


############################################################################
#                             LAPS Integration                             #
#                                                                          #
# Examples on how to use the new Windows LAPS values as connection options #
############################################################################

attributes:
  # msLAPS-Password is used if no encryption has been configured.
  # Currently an encrypted LAPS password is not supported.
  msLAPS-Password:
    ansible_user: (this | from_json).n
    ansible_password: (this | from_json).p

  # msLAPS-EncryptedPassword is used if encryption has been configured.
  # If the Python dpapi-ng library is installed the `this`` value will
  # contain the entry `value` which is the decrypted value. The ``info``
  # entry will contain the reason why the value could not be decrypted.
  msLAPS-EncryptedPassword:
    ansible_user: (this.value | from_json).n
    ansible_password: (this.value | from_json).p

  # ms-Mcs-AdmPwd is used for Legacy LAPS and stores just the password.
  # The username needs to be hardcoded as a string value for this template.
  ms-Mcs-AdmPwd:
    ansible_user: '"Administrator"'
    ansible_password: this


#####################################################################
#                        Constructed Options                        #
#                                                                   #
# These options control the constructed values like vars and groups #
#####################################################################

# Build composed host variables. Requires attributes to be set in the
# attributes option to be referenced here.
compose:
  host_var: computer_sid

# Conditionals that adds found hosts to the groups specified.
groups:
  # Adds all hosts to the windows group
  windows: true

  # Uses the memberOf fact documented above to place the host in the production
  # group if it's a member of that group
  production: '"Production Group" in computer_membership'

# Adds the host to a group site_{{ location }} with the default group of
# site_unknown if the location isn't defined
keyed_groups:
  - key: location | default(omit)
    prefix: site
    default_value: unknown

Авторы

  • Jordan Borean (@jborean93)

Подсказка

Записи конфигурации для каждого типа имеют порядок приоритета «снизу вверх». Например, переменная, которая находится ниже в списке, переопределит переменную, которая находится выше.

Ссылки на коллекцию

  • Отслеживание ошибок
  • Репозиторий (источники)
  • Сообщить об ошибке
  • Связь

© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/microsoft/ad/ldap_inventory.html

Spec-Zone.ru

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