community.general.dig lookup – запрос DNS с использованием библиотеки dnspython
Примечание
Этот плагин поиска является частью коллекции community.general (версия 9.5.0).
Эта коллекция может быть уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install community.general. Вам потребуются дополнительные требования для использования этого плагина поиска, см. Требования для получения подробной информации.
Чтобы использовать его в playbook, укажите: community.general.dig.
Краткое описание
- Поиск dig выполняет запросы к DNS-серверам для получения DNS-записей для определенного имени (FQDN - полное доменное имя). Таким образом можно искать любую DNS-запись.
- Существует несколько различных синтаксисов, которые можно использовать для указания, какая запись должна быть получена и для какого имени. Также можно явно указать DNS-сервер(ы), которые следует использовать для поиска.
- В самом простом виде плагин поиска dig может использоваться для получения IPv4-адреса (DNS A-запись), связанного с FQDN
- В дополнение к записи A (по умолчанию) можно также указать другой тип записи, который должен быть запрошен. Это можно сделать либо передав дополнительный параметр в формате qtype=TYPE в поиск dig, либо добавив /TYPE к запрашиваемому FQDN.
- Если несколько значений связаны с запрошенной записью, результаты будут возвращены в виде списка, разделенного запятыми. В таких случаях вы можете захотеть передать опцию
wantlist=trueв вызов поиска или, альтернативно, использоватьqueryвместоlookup, что приведет к возврату значений записей в виде списка, по которому вы можете позже выполнить итерацию. - По умолчанию поиск будет полагаться на настроенные в системе DNS-серверы для выполнения запроса. Также можно явно указать DNS-серверы для запроса, используя обозначение @DNS_SERVER_1,DNS_SERVER_2,…,DNS_SERVER_N. Это необходимо передать как дополнительный параметр в поиск
Требования
Следующие требования необходимы на локальном узле контроллера, который выполняет этот поиск.
- dnspython (библиотека python, http://www.dnspython.org/)
Термины
Параметр | Комментарии |
|---|---|
Terms list / elements=string | Домен(ы) для запроса. |
Ключевые параметры
Здесь описываются ключевые параметры поиска. Это значения key1=value1, key2=value2 и так далее в следующих примерах: lookup('community.general.dig', key1=value1, key2=value2, ...) и query('community.general.dig', key1=value1, key2=value2, ...)
Параметр | Комментарии |
|---|---|
class string | Класс. По умолчанию: |
fail_on_error boolean добавлено в community.general 5.4.0 | Прервать выполнение при ошибках поиска. Значение по умолчанию для этого параметра, вероятно, изменится на Варианты:
|
flat integer | Если 0, каждая запись возвращается как словарь, иначе — строка. По умолчанию: |
port integer добавлено в community.general 9.5.0 | Использовать порт в качестве целевого порта при поиске DNS-записей. По умолчанию: |
qtype string | Тип записи для запроса.
Варианты:
|
real_empty boolean добавлено в community.general 6.0.0 | Возвращает пустой результат без пустых строк и возвращает пустой список вместо Значение по умолчанию для этого параметра, вероятно, изменится на Этот параметр будет принудительно установлен в Варианты:
|
retry_servfail boolean добавлено в community.general 3.6.0 | Повторить попытку с сервером имен, если он возвращает SERVFAIL. Варианты:
|
tcp boolean добавлено в community.general 7.5.0 | Использовать TCP для поиска DNS-записей. Варианты:
|
Примечания
Примечание
- Когда используются ключевые и позиционные параметры вместе, позиционные параметры должны быть указаны перед ключевыми параметрами:
lookup('community.general.dig', term1, term2, key1=value1, key2=value2)иquery('community.general.dig', term1, term2, key1=value1, key2=value2) - ALL не является записью как таковой, просто перечисленные поля доступны для любых результатов записей, которые вы получаете в виде словаря.
- Хотя плагин поиска «dig» поддерживает всё, что поддерживает dnspython изначально, только подмножество может быть преобразовано в словарь.
- Если вам необходимо получить запись AAAA (адрес IPv6), вы должны явно указать тип записи. Синтаксис для указания типа записи показан в примерах ниже.
- Конечная точка в большинстве перечисленных примеров является чисто необязательной, но указана для полноты/правильности.
Примеры
- name: Simple A record (IPV4 address) lookup for example.com
ansible.builtin.debug:
msg: "{{ lookup('community.general.dig', 'example.com.')}}"
- name: "The TXT record for example.org."
ansible.builtin.debug:
msg: "{{ lookup('community.general.dig', 'example.org.', qtype='TXT') }}"
- name: "The TXT record for example.org, alternative syntax."
ansible.builtin.debug:
msg: "{{ lookup('community.general.dig', 'example.org./TXT') }}"
- name: use in a loop
ansible.builtin.debug:
msg: "MX record for gmail.com {{ item }}"
with_items: "{{ lookup('community.general.dig', 'gmail.com./MX', wantlist=true) }}"
- name: Lookup multiple names at once
ansible.builtin.debug:
msg: "A record found {{ item }}"
loop: "{{ query('community.general.dig', 'example.org.', 'example.com.', 'gmail.com.') }}"
- name: Lookup multiple names at once (from list variable)
ansible.builtin.debug:
msg: "A record found {{ item }}"
loop: "{{ query('community.general.dig', *hosts) }}"
vars:
hosts:
- example.org.
- example.com.
- gmail.com.
- ansible.builtin.debug:
msg: "Reverse DNS for 192.0.2.5 is {{ lookup('community.general.dig', '192.0.2.5/PTR') }}"
- ansible.builtin.debug:
msg: "Reverse DNS for 192.0.2.5 is {{ lookup('community.general.dig', '5.2.0.192.in-addr.arpa./PTR') }}"
- ansible.builtin.debug:
msg: "Reverse DNS for 192.0.2.5 is {{ lookup('community.general.dig', '5.2.0.192.in-addr.arpa.', qtype='PTR') }}"
- ansible.builtin.debug:
msg: "Querying 198.51.100.23 for IPv4 address for example.com. produces {{ lookup('dig', 'example.com', '@198.51.100.23') }}"
- ansible.builtin.debug:
msg: "XMPP service for gmail.com. is available at {{ item.target }} on port {{ item.port }}"
with_items: "{{ lookup('community.general.dig', '_xmpp-server._tcp.gmail.com./SRV', flat=0, wantlist=true) }}"
- name: Retry nameservers that return SERVFAIL
ansible.builtin.debug:
msg: "{{ lookup('community.general.dig', 'example.org./A', retry_servfail=true) }}"
Возвращаемое значение
Ключ | Описание |
|---|---|
Возвращаемое значение list / elements=any | Список составных строк или словарей с ключом и значением. Если словарь, поля показывают ключи, возвращаемые в зависимости от типа запроса Возвращено: success |
|
A string |
адрес Возвращено: success |
|
AAAA string |
адрес Возвращено: success |
|
ALL string |
owner, ttl, type Возвращено: success |
|
CAA string added in community.general 6.3.0 |
flags tag value Возвращено: success |
|
CNAME string |
target Возвращено: success |
|
DNAME string |
target Возвращено: success |
|
DNSKEY string |
flags, algorithm, protocol, key Возвращено: success |
|
DS string |
algorithm, digest_type, key_tag, digest Возвращено: success |
|
HINFO string |
cpu, os Возвращено: success |
|
LOC string |
latitude, longitude, altitude, size, horizontal_precision, vertical_precision Возвращено: success |
|
MX string |
preference, exchange Возвращено: success |
|
NAPTR string |
order, preference, flags, service, regexp, replacement Возвращено: success |
|
NS string |
target Возвращено: success |
|
NSEC3PARAM string |
algorithm, flags, iterations, salt Возвращено: success |
|
PTR string |
target Возвращено: success |
|
RP string |
mbox, txt Возвращено: success |
|
SOA string |
mname, rname, serial, refresh, retry, expire, minimum Возвращено: success |
|
SPF string |
strings Возвращено: success |
|
SRV string |
priority, weight, port, target Возвращено: success |
|
SSHFP string |
algorithm, fp_type, fingerprint Возвращено: success |
|
TLSA string |
usage, selector, mtype, cert Возвращено: success |
|
TXT string |
strings Возвращено: success |
Ссылки на сборник
© 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/community/general/dig_lookup.html