microsoft.ad.ldap inventory — плагин инвентаризации для Active Directory
Примечание
Этот плагин инвентаризации входит в коллекцию microsoft.ad (версия 1.10.0).
Возможно, эта коллекция уже установлена, если вы используете пакет 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— в значение атрибута LDAPdNSHostName, если он задан. Если атрибут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. По умолчанию: |
auth_protocol string | Протокол аутентификации, используемый при подключении к узлу LDAP. По умолчанию используется
Для поддержки Kerberos необходимо установить дополнительные компоненты Дополнительные сведения см. в разделе Аутентификация LDAP. Для этого параметра можно использовать значение шаблона Jinja2. Варианты:
Конфигурация:
|
ca_cert string | Путь к файлу сертификата ЦС в формате PEM или DER, каталог сертификатов PEM или строка сертификата ЦС в формате PEM, используемого для проверки сертификатов. Если параметр не указан, используемое для проверки хранилище сертификатов ЦС по умолчанию зависит от текущих настроек Python. Для этого параметра можно использовать значение шаблона Jinja2. Конфигурация:
|
cert_validation string | Поведение при проверке сертификата во время использования соединения TLS. Можно указать
Дополнительные сведения см. в разделе Проверка сертификата. Для этого параметра можно использовать значение шаблона Jinja2. Варианты:
Конфигурация:
|
certificate string | Сертификат или набор сертификата с ключом, используемый для аутентификации по сертификату. Значением может быть путь к файлу с сертификатом или строка сертификата в кодировке PEM. Если указан путь к файлу сертификата, файл может содержать сертификат в кодировке PEM, сертификат и ключ в кодировке PEM, сертификат в кодировке DER или сертификат и ключ в формате PFX/PKCS12. Используйте certificate_key, если в указанном сертификате нет ключа. Используйте certificate_password, если ключ зашифрован паролем. Для этого параметра можно использовать значение шаблона Jinja2. Конфигурация:
|
certificate_key string | Ключ сертификата, используемый для аутентификации по сертификату. Значением может быть путь к файлу с ключом в кодировке PEM или DER либо строка ключа в кодировке PEM. Используйте certificate_password, если ключ зашифрован паролем. Для этого параметра можно использовать значение шаблона Jinja2. Конфигурация:
|
certificate_password string | Пароль для расшифровки ключа сертификата, указанного в certificate или certificate_key. Для этого параметра можно использовать значение шаблона Jinja2. Конфигурация:
|
compose dictionary | Создание переменных с помощью выражений Jinja2. По умолчанию: |
connection_timeout integer | Время ожидания установления соединения в секундах, после которого попытка завершается ошибкой. Для этого параметра можно использовать значение шаблона Jinja2. По умолчанию: Конфигурация:
|
encrypt boolean | Требуется ли шифрование соединения. Шифрование может выполняться с помощью протокола аутентификации или TLS. Протоколы auth_protocol При использовании Для этого параметра можно использовать значение шаблона Jinja2. Варианты:
Конфигурация:
|
filter string | Строка фильтра LDAP для запроса объектов компьютеров. По умолчанию она объединяется с фильтром «(objectCategory=computer)». Используйте filter_without_computer, чтобы переопределить это поведение и применять только фильтр filter. |
filter_without_computer boolean добавлено в microsoft.ad 1.3.0 | Не объединять значение filter с фильтром по умолчанию «(objectCategory=computer)». В большинстве случаев следует указать Варианты:
|
groups dictionary | Добавление узлов в группы на основе условий Jinja2. По умолчанию: |
keyed_groups list / elements=dictionary | Добавление узлов в группы на основе значений переменной. По умолчанию: |
|
default_value string добавлено в ansible-core 2.12 |
Значение по умолчанию, если значение переменной узла равно Этот параметр нельзя использовать одновременно с |
|
key string |
Ключ входного словаря, используемый для создания групп. |
|
parent_group string |
Родительская группа для группы, создаваемой по ключу. |
|
prefix string |
Имя группы, создаваемой по ключу, будет начинаться с этого префикса. По умолчанию: |
|
separator string |
Разделитель, используемый для формирования имени группы по ключу. По умолчанию: |
|
trailing_separator boolean добавлено в ansible-core 2.12 |
Установите для этого параметра значение Этот параметр нельзя использовать одновременно с Варианты:
|
leading_separator boolean добавлено в ansible-core 2.11 | Используйте вместе с По умолчанию имя группы, создаваемой по ключу, начинается с подчёркивания, если для неё не указан префикс или разделитель. Это связано с тем, что префикс по умолчанию — Установите для этого параметра значение Если имя группы формируется на основе сопоставления, разделитель всё равно используется для объединения элементов. Чтобы вообще не использовать разделитель в имени группы, задайте для группы по ключу пустую строку в качестве разделителя. Варианты:
|
password string | Пароль для аутентификации. Если для auth_protocol задано Если для auth_protocol задано Для этого параметра можно использовать значение шаблона Jinja2. Конфигурация:
|
port integer | Порт LDAP, используемый для соединения. Для LDAP используется порт 389, а для LDAPS — порт 686. По умолчанию используется порт Для этого параметра можно использовать значение шаблона Jinja2. Конфигурация:
|
search_base string | База поиска LDAP, в которой выполняется поиск объектов компьютеров. Если параметр не указан, по умолчанию используется При поиске в большой базе данных Active Directory рекомендуется сузить базу поиска, чтобы ускорить выполнение запросов. |
search_scope string | Область поиска LDAP.
Варианты:
|
server string | Контроллер домена/сервер, к которому выполняется подключение. Если сервер не указан, он определяется на основе текущей настройки Дополнительные сведения см. в разделе Поиск сервера. Для этого параметра можно использовать значение шаблона Jinja2. Конфигурация:
|
strict boolean | Если задано Поскольку в выражениях можно использовать факты, они могут быть доступны не всегда; по умолчанию такие ошибки игнорируются. Варианты:
|
tls_mode string | Используемая операция TLS. Если для port явно задано значение
Если планируется использовать TLS, рекомендуется выбрать Для этого параметра можно использовать значение шаблона Jinja2. Варианты:
Конфигурация:
|
use_extra_vars boolean добавлено в ansible-core 2.11 | Объединить дополнительные переменные с доступными переменными для формирования значений (наивысший приоритет). Варианты:
Конфигурация:
|
username string | Имя пользователя для аутентификации. Если для auth_protocol задано Если для auth_protocol задано Для этого параметра можно использовать значение шаблона Jinja2. Конфигурация:
|
Примечание
Параметры конфигурации, перечисленные выше для каждого типа записей (переменная Ansible, переменная среды и т. д.), упорядочены от низкого приоритета к высокому. Например, переменная, расположенная ниже в списке, переопределяет переменную, расположенную выше. Типы записей также упорядочены по приоритету от низкого к высокому. Например, запись ansible.cfg (расположенная выше в списке) переопределяется переменной Ansible (расположенной ниже в списке).
Примечания
Примечание
- Дополнительные сведения об использовании этого плагина инвентаризации см. в разделе Инвентаризация LDAP.
- Дополнительные сведения о получении паролей LAPS с помощью этого плагина см. в разделе LAPS.
- Этот плагин находится на этапе предварительного ознакомления; параметры модуля могут измениться с учётом полученных отзывов.
- Если в описании параметра не указано иное, значение из файла конфигурации используется без изменений. Только для параметров подключения LDAP разрешено использовать шаблон Jinja2.
- На этом этапе инвентаризация ещё не завершена, поэтому автоматически заполненные группы
allиungroupedбудут содержать только данные, явно добавленные в них предыдущими источниками инвентаризации. - Во время построения инвентаризации динамические «магические переменные» недоступны. Например,
groupsиhostvarsещё не существуют. - Дополнительные сведения о подключениях 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
Ссылки на коллекцию
© 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/ldap_inventory.html