python - 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 的版本吗?
解决方案
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
推荐阅读
- python-3.x - 尽管使用了默认参数,但 Get() 返回 None
- reactjs - 使用 TypeScript 输入带有强制变量的 GraphQL 查询
- mysql - MySQL:如何为这个后查询过滤器设置“HAVING”条件?
- javascript - JavaScript Maps——使用“相同”键创建两个值
- html - 即使没有互联网,链接也会显示图像
- python-3.x - 无法使用硒单击登录按钮
- c++ - #包括
在 Visual Studio 代码中不起作用 - c# - 如何在 bot 框架 v4 中将对话框设置为欢迎消息
- html - 如何渲染具有 4:3 比例背景图像的 div
- spring-boot - SpringBoot ActiveMQ 通过 1099 禁用 JMX 连接