Ansible с host_key_checking, для которого задано значение false, завершается с ошибкой "Проверка ключа хоста не удалась".

Здесь, если lsusbсбрасывает ошибку, сообщение об ошибке не перенаправляется, только ошибки из grep. Ошибки из lsusbпо-прежнему идут как обычно stderr, т.е. терминал (или что там stderrбыло при запуске скрипта.

VENDOR=$(lsusb -D "$DEVICE" | grep idVendor 2>&1)

.

$ blah=$(ls -l /nonexisting | grep foo 2>&1)
ls: cannot access '/nonexisting': No such file or directory
$ echo "blah: '$blah'"
blah: ''

Вам потребуется перенаправить оба их вывода как группу, чтобы подстановка команд также зафиксировала ошибку:

$ blah=$( { ls -l /nonexisting | grep foo; } 2>&1)
$ echo "blah: '$blah'"
blah: 'ls: cannot access '/nonexisting': No such file or directory'

Использование отдельных перенаправлений, таких как $( foo 2>&1 | grep 2>&1 ), приведет к отправке ошибок первой команды в конвейер, а для grep— в фильтр, что в приведенном выше примере снова приведет к пустому выводу.

2
06.01.2020, 16:59
1 ответ

Для этого требуется специальная опция в модуле git с именемaccept_hostkey.

  • Параметр в файле ansible.cfg определяет, требуется ли узлу контроллера действительный ключ хоста для подключения.
  • На машине, которую вы предоставляете, вы также должны сообщить ей, что для нее не требуется действительный ключ хоста. Вы можете сделать это с помощью

    • установка ~/.ssh/configна удаленном хосте с помощьюStrictHostKeyChecking no
    • или установив параметр в модуле, который использует ssh, сказав ему отключить проверку ключа хоста
2
27.01.2020, 22:07

Теги

Похожие вопросы