首页 > 解决方案 > Ansible 中的回溯错误(Python 版本不匹配?)

问题描述

运行以下命令时出现回溯错误

ansible-playbook -i hosts fmg-playbooks/01_add_model_device.yml

我正在运行 Ansible 2.9 和 Python 3.6.5

ansible 2.9.11
  config file = /home/alice/ansible/ansible.cfg
  configured module search path = ['/home/alice/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.6/dist-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.6.5 (default, Apr  1 2018, 05:46:30) [GCC 7.3.0]

我收到有关 Python 版本的警告



TASK [Gathering Facts] ***************************************************************************************************************************************************************************************
[DEPRECATION WARNING]: Distribution Ubuntu 18.04 on host fmg01 should use /usr/bin/python3, but is using /usr/bin/python for backward compatibility with prior Ansible releases. A future Ansible release
will default to using the discovered platform python for this host. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information. This feature will be
removed in version 2.12. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
ok: [fmg01]

然后当我尝试添加设备时,出现回溯错误

TASK [Add model device] **************************************************************************************************************************************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ansible.module_utils.connection.ConnectionError: Method not found
fatal: [fmg01]: FAILED! => {"changed": false, "module_stderr": "Traceback (most recent call last):\n  File \"/home/alice/.ansible/tmp/ansible-local-123199visyis5f/ansible-tmp-1598231721.9686775-123291-130397920449540/AnsiballZ_fmgr_dvm_cmd_add_device.py\", line 102, in <module>\n    _ansiballz_main()\n  File \"/home/alice/.ansible/tmp/ansible-local-123199visyis5f/ansible-tmp-1598231721.9686775-123291-130397920449540/AnsiballZ_fmgr_dvm_cmd_add_device.py\", line 94, in _ansiballz_main\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n  File \"/home/alice/.ansible/tmp/ansible-local-123199visyis5f/ansible-tmp-1598231721.9686775-123291-130397920449540/AnsiballZ_fmgr_dvm_cmd_add_device.py\", line 40, in invoke_module\n    runpy.run_module(mod_name='ansible_collections.fortinet.fortimanager.plugins.modules.fmgr_dvm_cmd_add_device', init_globals=None, run_name='__main__', alter_sys=True)\n  File \"/usr/lib/python2.7/runpy.py\", line 188, in run_module\n    fname, loader, pkg_name)\n  File \"/usr/lib/python2.7/runpy.py\", line 82, in _run_module_code\n    mod_name, mod_fname, mod_loader, pkg_name)\n  File \"/usr/lib/python2.7/runpy.py\", line 72, in _run_code\n    exec code in run_globals\n  File \"/tmp/ansible_fmgr_dvm_cmd_add_device_payload_3LmHxl/ansible_fmgr_dvm_cmd_add_device_payload.zip/ansible_collections/fortinet/fortimanager/plugins/modules/fmgr_dvm_cmd_add_device.py\", line 362, in <module>\n  File \"/tmp/ansible_fmgr_dvm_cmd_add_device_payload_3LmHxl/ansible_fmgr_dvm_cmd_add_device_payload.zip/ansible_collections/fortinet/fortimanager/plugins/modules/fmgr_dvm_cmd_add_device.py\", line 345, in main\n  File \"/tmp/ansible_fmgr_dvm_cmd_add_device_payload_3LmHxl/ansible_fmgr_dvm_cmd_add_device_payload.zip/ansible_collections/fortinet/fortimanager/plugins/module_utils/fortimanager.py\", line 62, in __init__\n  File \"/tmp/ansible_fmgr_dvm_cmd_add_device_payload_3LmHxl/ansible_fmgr_dvm_cmd_add_device_payload.zip/ansible_collections/fortinet/fortimanager/plugins/module_utils/fortimanager.py\", line 65, in process_workspace_lock\n  File \"/tmp/ansible_fmgr_dvm_cmd_add_device_payload_3LmHxl/ansible_fmgr_dvm_cmd_add_device_payload.zip/ansible/module_utils/connection.py\", line 185, in __rpc__\nansible.module_utils.connection.ConnectionError: Method not found\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}

这可能是 Ansible 使用错误的 Python 解释器的问题吗?我可以强制它使用不同于 2.7 的版本吗?

标签: pythonpython-3.xpython-2.7ansible

解决方案


Python 版本没问题。原来这是端口的问题。我在主机文件中切换到 443 并开始工作。

[FMG:vars]
ansible_network_os      = fortinet.fortimanager.fortimanager
ansible_httpapi_port    = 443
ansible_httpapi_use_ssl = True
ansible_httpapi_validate_certs = False
ansible_connection = httpapi

推荐阅读