community.general.dig lookup – Запросы DNS с помощью библиотеки dnspython
Примечание
Этот lookup-плагин входит в коллекцию community.general (версия 12.6.1).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install community.general. Для использования этого lookup-плагина необходимы дополнительные требования. Подробности см. в разделе Требования.
Чтобы использовать его в playbook, укажите: community.general.dig.
- Краткое описание
- Требования
- Аргументы
- Параметры-ключевые слова
- Примечания
- Примеры
- Возвращаемое значение
Краткое описание
- Lookup dig выполняет запросы к DNS-серверам для получения DNS-записей для определённого имени (FQDN — полное доменное имя). Таким способом можно запрашивать любые DNS-записи.
- Существует несколько вариантов синтаксиса для указания типа записи, которую нужно получить, и имени, для которого она запрашивается. Также можно явно указать DNS-серверы, используемые для запросов.
- В простейшем случае lookup-плагин dig можно использовать для получения IPv4-адреса (DNS-записи A), связанного с FQDN.
- Помимо записи A (по умолчанию), можно указать другой тип записи для запроса. Это можно сделать, передав lookup dig дополнительный параметр в формате qtype=TYPE или добавив /TYPE к запрашиваемому FQDN.
- Если с запрошенной записью связано несколько значений, результаты возвращаются в виде списка, разделённого запятыми. В таких случаях можно передать вызову lookup параметр
wantlist=trueили использоватьqueryвместоlookup, чтобы значения записи возвращались в виде списка, по которому затем можно выполнить итерацию. - По умолчанию lookup использует DNS-серверы, настроенные в системе, для выполнения запроса. Также можно явно указать DNS-серверы для запроса, используя запись @DNS_SERVER_1,DNS_SERVER_2,…,DNS_SERVER_N. Её нужно передать lookup в качестве дополнительного параметра.
Требования
Следующие требования необходимы на локальном управляющем узле, выполняющем этот lookup.
- dnspython (библиотека Python, http://www.dnspython.org/)
Аргументы
Параметр | Комментарии |
|---|---|
Аргументы 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сам по себе не является записью; лишь перечисленные поля доступны для любых результатов записей, которые вы получаете в виде словаря. - Хотя плагин поддерживает всё, что
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 | Список составленных строк или словарей с полями, зависящими от типа запроса. Возвращается: успешно |
|
A string |
Возвращается: успешно |
|
AAAA string |
Возвращается: успешно |
|
ALL string |
Возвращается: успешно |
|
CAA string добавлено в community.general 6.3.0 |
Возвращается: успешно |
|
CNAME string |
Возвращается: успешно |
|
DNAME string |
Возвращается: успешно |
|
DNSKEY string |
Возвращается: успешно |
|
DS string |
Возвращается: успешно |
|
HINFO string |
Возвращается: успешно |
|
LOC string |
Возвращается: успешно |
|
MX string |
Возвращается: успешно |
|
NAPTR string |
Возвращается: успешно |
|
NS string |
Возвращается: успешно |
|
NSEC3PARAM string |
Возвращается: при успехе |
|
PTR string |
Возвращается: при успехе |
|
RP string |
Возвращается: при успехе |
|
SOA string |
Возвращается: при успехе |
|
SPF string |
Возвращается: при успехе |
|
SRV string |
Возвращается: при успехе |
|
SSHFP string |
Возвращается: при успехе |
|
TLSA string |
Возвращается: при успехе |
|
TXT string |
Возвращается: при успехе |
Ссылки на коллекцию
© 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/community/general/dig_lookup.html