てくなべ (tekunabe)

ansible / network automation / 学習メモ

[Ansible] junos モジュールで netconf 利用時のエラー「name 'known_hosts_lookup' is not defined」の対策

エラー内容

junos モジュールを、netconf コネクションプラグインで利用する際、以下のエラー "name 'known_hosts_lookup' is not defined" が発生することがあります。

$ ansible-playbook -i inventory.ini 01_show.yml 

PLAY [vmx] *********************************************************************************************************

TASK [show] ********************************************************************************************************

fatal: [vmx]: FAILED! => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "msg": "name 'known_hosts_lookup' is not defined"}

PLAY RECAP ********************************************************************************************************
vmx                        : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0  
  • 動作確認環境
    • Ansible 2.9.6

原因

少しわかりにくいですが、これは、初めて接続する相手にホストキーのチェックに失敗した場合に表示されます。

対策

大きく分けて以下の2つの対策があります。

  • (1) 予め何かしらの手段で known_hosts に登録しておく
  • (2) ansible.cfg でホストキーのチェックを無効にする
[defaults]
host_key_checking=no

セキュリティ、運用の事情に合わせてください。


参考: network_cli の場合

ちなみに、netconf ではなく、network_cli 接続で同様の状況の場合は、以下のエラーになります。対策は同じです。

TASK [show] ****************************************************************************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: The ssh-ed25519 key fingerprint is b'e5a(略)51a'.
fatal: [vmx]: FAILED! => {"msg": "Unexpected failure during module execution.", "stdout": ""}