community.general.dig – запрос DNS с использованием библиотеки dnspython
Примечание
Этот плагин входит в коллекцию community.general (версия 1.3.2).
Для его установки используйте: ansible-galaxy collection install community.general.
Для использования в книге задач укажите: community.general.dig.
Описание
- Поиск dig выполняет запросы к DNS-серверам для получения DNS-записей для определенного имени (FQDN — полностью квалифицированное доменное имя). Таким образом, можно выполнить поиск любой DNS-записи.
- Существует несколько различных синтаксических конструкций для указания записываемой записи и для которого имени. Также можно явно указать DNS-сервер(ы), которые следует использовать для поиска.
- В своем самом простом виде плагин поиска dig можно использовать для получения IP-адреса IPv4 (DNS-запись A), связанного с FQDN.
- Помимо (по умолчанию) записи A, также можно указать другой тип записи, который следует запросить. Это можно сделать, передав дополнительный параметр типа qtype=TYPE в поиск dig или добавив /TYPE к FQDN, запрашиваемому для поиска.
- Если с запрошенной записью связано несколько значений, результаты будут возвращены в виде списка, разделенного запятыми. В таких случаях вы можете передать параметр wantlist=True в плагин, что приведет к возврату значений записи в виде списка, по которому вы сможете итерироваться позже.
- По умолчанию поиск будет полагаться на DNS-серверы, настроенные на уровне всей системы для выполнения запроса. Также можно явно указать DNS-серверы для запроса, используя обозначение @DNS_SERVER_1,DNS_SERVER_2,…,DNS_SERVER_N. Это нужно передать в качестве дополнительного параметра к поиску.
Требования
Ниже приведены требования к локальному контроллеру узлу, на котором выполняется этот поиск.
- dnspython (библиотека Python, http://www.dnspython.org/)
Параметры
| Параметр | Варианты/Значения по умолчанию | Настройка | Комментарии |
|---|---|---|---|
| _terms строка | домен(ы) для запроса | ||
| flat строка | По умолчанию: 1 | Если 0, каждая запись возвращается в виде словаря, в противном случае — в виде строки | |
| qtype строка |
| тип записи для запроса |
Примечания
Примечание
- 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) }}"
- 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) }}"
Возвращаемые значения
Общие возвращаемые значения описаны в документации, следующие поля уникальны для этого поиска:
| Ключ | Возвращаемое значение | Описание | |
|---|---|---|---|
| _list список / элементы=сырые | успех | Список составленных строк или словарей с ключом и значением. Если словарь, поля показывают возвращенные ключи в зависимости от типа запроса | |
| A строка | успех | адрес | |
| AAAA строка | успех | адрес | |
| ALL строка | успех | владелец, ttl, тип | |
| CNAME строка | успех | целевой | |
| DLV строка | успех | алгоритм, тип_хеша, тег_ключа, хеш | |
| DNAME строка | успех | целевой | |
| DNSKEY строка | успех | флаги, алгоритм, протокол, ключ | |
| DS строка | успех | алгоритм, тип_хеша, тег_ключа, хеш | |
| HINFO строка | успех | cpu, os | |
| LOC строка | успех | широта, долгота, высота, размер, горизонтальная_точность, вертикальная_точность | |
| MX строка | успех | приоритет, обмен | |
| NAPTR строка | успех | порядок, приоритет, флаги, сервис, regexp, замена | |
| NS строка | успех | целевой | |
| NSEC3PARAM строка | успех | алгоритм, флаги, итерации, соль | |
| PTR строка | успех | целевой | |
| RP строка | успех | mbox, txt | |
| SOA строка | успех | mname, rname, serial, refresh, retry, expire, minimum | |
| SPF строка | успех | строки | |
| SRV строка | успех | приоритет, вес, порт, целевой | |
| SSHFP строка | успех | алгоритм, тип_fp, отпечаток | |
| TLSA строка | успех | использование, селектор, тип_m, сертификат | |
| TXT строка | успех | строки | |
Авторы
- Jan-Piet Mens (@jpmens) <jpmens(at)gmail.com>
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/community/general/dig_lookup.html