【问题标题】:Traceback Errors in Ansible (Python version mismatch?)Ansible 中的回溯错误(Python 版本不匹配?)
【发布时间】:2020-08-24 01:25:05
【问题描述】:

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

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 的版本吗?

【问题讨论】:

  • 您可以将ansible_python_interpreterinventory变量设置为您要使用的Python路径。
  • 我知道我可以使用 -e 命令。问题可能是这些 py 文件是 python 2 并且我为 python 3 设置了它。我会尝试看看我是否可以使用旧版本的 python 运行它
  • 这是一个库存变量,因此您应该在主机旁边的库存文件中包含它。
  • ansible-galaxy-fortios-docs.readthedocs.io/en/latest/… => 你必须在目标上使用 python 3。如果两个版本都可用,请按照错误消息中链接的文档中的建议,在您的清单中强制使用带有 ansible_python_interpreter 的 python 3。

标签: python python-3.x python-2.7 ansible


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-10-06
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 2018-01-06
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多