Использование dns_check в соли (где документация кажется неправильной)
Документы на солончак отмечают существование dns_check
фильтр дзиндзя в 2017.7.3:
{{ 'www.google.com' | dns_check }}
который должен возвращать адрес ip4v в виде строки.
Но когда я попробую это:
test_this_one:
cmd.run:
- name: |
echo {{ 'www.google.com' | dns_check }}
Я вместо этого вижу
local:
Data failed to compile:
----------
Rendering SLS 'base:firewall' failed: Jinja error: dns_check() takes at least 2 arguments (1 given)
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/salt/utils/templates.py", line 418, in render_jinja_tmpl
output = template.render(**decoded_context)
File "/usr/lib/python2.7/dist-packages/jinja2/environment.py", line 989, in render
return self.environment.handle_exception(exc_info, True)
File "/usr/lib/python2.7/dist-packages/jinja2/environment.py", line 754, in handle_exception
reraise(exc_type, exc_value, tb)
File "<template>", line 42, in top-level template code
TypeError: dns_check() takes at least 2 arguments (1 given)
Я что-то пропустил? Я склонен полагать, что я сделал ошибку, а не то, что документы настолько публично ошибочны.
1 ответ
Решение
Глядя на исходный код это выглядит dns_check
сейчас занимает port
аргумент - строка документа говорит:
Пытается подключиться к адресу, прежде чем считать его полезным. Если адрес не может быть достигнут, первый разрешенный используется в качестве запасного.
Так что, вероятно, достаточно указать здесь любой порт, и он должен работать. (и, возможно, следует поднять вопрос о том, чтобы сделать порт необязательным?)