【发布时间】: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