Ansible playbook在新的Ubuntu/Ansible/Python环境中停止工作

2024-09-28 13:38:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个环境中有一个工作的Ansible设置,我无法让它在我的新环境中正常运行

当我在新环境中运行时,我遇到了以下错误,并且不确定在哪里缩小问题范围(Python不匹配?Ansible版本不匹配?)

任何关于如何缩小范围的建议都将不胜感激


TASK [Provision FGT1 Device] ************************************************************************************************************
task path: /home/fortinet/Downloads/ansible/playbooks/complete_provisioning/ansible_provision_playbook.yml:6
Using module file /home/fortinet/Downloads/ansible/modules/fmgr_provisioning.py
<192.168.0.120> ESTABLISH LOCAL CONNECTION FOR USER: root
<192.168.0.120> EXEC /bin/sh -c 'echo ~ && sleep 0'
<192.168.0.120> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /root/.ansible/tmp/ansible-tmp-1592597614.94-254333872560613 `" && echo a   nsible-tmp-1592597614.94-254333872560613="` echo /root/.ansible/tmp/ansible-tmp-1592597614.94-254333872560613 `" ) && sleep 0'
<192.168.0.120> PUT /root/.ansible/tmp/ansible-local-25254o2_iRu/tmpqOs7iz TO /root/.ansible/tmp/ansible-tmp-1592597614.94-25433387256061   3/fmgr_provisioning.py
<192.168.0.120> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1592597614.94-254333872560613/ /root/.ansible/tmp/ansible-tmp-1   592597614.94-254333872560613/fmgr_provisioning.py && sleep 0'
<192.168.0.120> EXEC /bin/sh -c '/usr/bin/python /root/.ansible/tmp/ansible-tmp-1592597614.94-254333872560613/fmgr_provisioning.py && sle   ep 0'
<192.168.0.120> EXEC /bin/sh -c 'rm -f -r /root/.ansible/tmp/ansible-tmp-1592597614.94-254333872560613/ > /dev/null 2>&1 && sleep 0'

The full traceback is:
Traceback (most recent call last):
  File "/tmp/ansible_422O5V/ansible_module_fmgr_provisioning.py", line 624, in <module>
    main()
  File "/tmp/ansible_422O5V/ansible_module_fmgr_provisioning.py", line 512, in main
    response = fmg.login()
  File "/tmp/ansible_422O5V/ansible_modlib.zip/ansible/module_utils/network/fortimanager/fortimanager.py", line 59, in login
  File "/usr/local/lib/python2.7/dist-packages/pyFMG/fortimgr.py", line 476, in login
    self._lock_ctx.check_mode()
  File "/usr/local/lib/python2.7/dist-packages/pyFMG/fortimgr.py", line 99, in check_mode
    code, resp_obj = self._fmg.get(url, fields=["workspace-mode", "adom-status"])
  File "/usr/local/lib/python2.7/dist-packages/pyFMG/fortimgr.py", line 517, in get
    return self._post_request("get", self.common_datagram_params("get", url, *args, **kwargs))
  File "/usr/local/lib/python2.7/dist-packages/pyFMG/fortimgr.py", line 371, in _post_request
    raise FMGValidSessionException(method, params)
pyFMG.fortimgr.FMGValidSessionException: A call using the get method was requested to /cli/global/system/global on a FortiManager instanc   e that had no valid session or was not connected. Paramaters were:
[{'url': '/cli/global/system/global', 'fields': ['workspace-mode', 'adom-status']}]

fatal: [192.168.0.120]: FAILED! => {
    "changed": false,
    "module_stderr": "Traceback (most recent call last):\n  File \"/tmp/ansible_422O5V/ansible_module_fmgr_provisioning.py\", line 624, i   n <module>\n    main()\n  File \"/tmp/ansible_422O5V/ansible_module_fmgr_provisioning.py\", line 512, in main\n    response = fmg.login()   \n  File \"/tmp/ansible_422O5V/ansible_modlib.zip/ansible/module_utils/network/fortimanager/fortimanager.py\", line 59, in login\n  File    \"/usr/local/lib/python2.7/dist-packages/pyFMG/fortimgr.py\", line 476, in login\n    self._lock_ctx.check_mode()\n  File \"/usr/local/li   b/python2.7/dist-packages/pyFMG/fortimgr.py\", line 99, in check_mode\n    code, resp_obj = self._fmg.get(url, fields=[\"workspace-mode\"   , \"adom-status\"])\n  File \"/usr/local/lib/python2.7/dist-packages/pyFMG/fortimgr.py\", line 517, in get\n    return self._post_request   (\"get\", self.common_datagram_params(\"get\", url, *args, **kwargs))\n  File \"/usr/local/lib/python2.7/dist-packages/pyFMG/fortimgr.py\   ", line 371, in _post_request\n    raise FMGValidSessionException(method, params)\npyFMG.fortimgr.FMGValidSessionException: A call using    the get method was requested to /cli/global/system/global on a FortiManager instance that had no valid session or was not connected. Para   maters were:\n[{'url': '/cli/global/system/global', 'fields': ['workspace-mode', 'adom-status']}]\n",
    "module_stdout": "",
    "msg": "MODULE FAILURE",
    "rc": 1
}
        to retry, use: --limit @/home/fortinet/Downloads/ansible/playbooks/complete_provisioning/ansible_provision_playbook.retry

PLAY RECAP ******************************************************************************************************************************
192.168.0.120              : ok=0    changed=0    unreachable=0    failed=1

这是工作设置的“ansible--version”输出

fortinet@Ansible-Host:~$ ansible --version
ansible 2.7.11
  config file = /home/fortinet/.ansible.cfg
  configured module search path = [u'/home/fortinet/ansible/modules']
  ansible python module location = /usr/local/lib/python2.7/dist-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 2.7.12 (default, Nov 12 2018, 14:36:49) [GCC 5.4.0 20160609]
fortinet@Ansible-Host:~$

这是非工作设置的“ansible--version”输出

sysadmin@ubuntu18:/home/fortinet/Downloads/ansible/playbooks/complete_provisioning$ ansible --version
ansible 2.5.1
  config file = /home/fortinet/Downloads/ansible/playbooks/complete_provisioning/ansible.cfg
  configured module search path = [u'/home/fortinet/Downloads/ansible/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0]
sysadmin@ubuntu18:/home/fortinet/Downloads/ansible/playbooks/complete_provisioning$


当我尝试使用我刚刚安装的较旧版本的Python(2.7.12)运行playbook时,我也会遇到一个错误

ansible-playbook ansible_provision_playbook.yml -vvv -e 'ansible_python_interpreter=/usr/local/bin/python'
ansible-playbook 2.5.1
  config file = /home/fortinet/Downloads/ansible/playbooks/complete_provisioning/ansible.cfg
  configured module search path = [u'/home/fortinet/Downloads/ansible/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible-playbook
  python version = 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0]
Using /home/fortinet/Downloads/ansible/playbooks/complete_provisioning/ansible.cfg as config file
Parsed /home/fortinet/Downloads/ansible/playbooks/complete_provisioning/hosts inventory source with ini plugin

PLAYBOOK: ansible_provision_playbook.yml ***********************************************************************************************************************************************
1 plays in ansible_provision_playbook.yml

PLAY [Processing Devices for Automated Provisioning] ***********************************************************************************************************************************
META: ran handlers

TASK [Provision FGT1 Device] ***********************************************************************************************************************************************************
task path: /home/fortinet/Downloads/ansible/playbooks/complete_provisioning/ansible_provision_playbook.yml:6
Using module file /home/fortinet/Downloads/ansible/modules/fmgr_provisioning.py
<192.168.0.120> ESTABLISH LOCAL CONNECTION FOR USER: sysadmin
<192.168.0.120> EXEC /bin/sh -c 'echo ~ && sleep 0'
<192.168.0.120> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /home/sysadmin/.ansible/tmp/ansible-tmp-1592623661.17-74974994506330 `" && echo ansible-tmp-1592623661.17-74974994506330="` echo /home/sysadmin/.ansible/tmp/ansible-tmp-1592623661.17-74974994506330 `" ) && sleep 0'
<192.168.0.120> PUT /home/sysadmin/.ansible/tmp/ansible-local-6279tjyzd_/tmp0yJ5I1 TO /home/sysadmin/.ansible/tmp/ansible-tmp-1592623661.17-74974994506330/fmgr_provisioning.py
<192.168.0.120> EXEC /bin/sh -c 'chmod u+x /home/sysadmin/.ansible/tmp/ansible-tmp-1592623661.17-74974994506330/ /home/sysadmin/.ansible/tmp/ansible-tmp-1592623661.17-74974994506330/fmgr_provisioning.py && sleep 0'
<192.168.0.120> EXEC /bin/sh -c '/usr/local/bin/python /home/sysadmin/.ansible/tmp/ansible-tmp-1592623661.17-74974994506330/fmgr_provisioning.py && sleep 0'
<192.168.0.120> EXEC /bin/sh -c 'rm -f -r /home/sysadmin/.ansible/tmp/ansible-tmp-1592623661.17-74974994506330/ > /dev/null 2>&1 && sleep 0'
The full traceback is:
Traceback (most recent call last):
  File "/home/sysadmin/.ansible/tmp/ansible-tmp-1592623661.17-74974994506330/fmgr_provisioning.py", line 123, in <module>
    f.write(z.read('ansible_module_fmgr_provisioning.py'))
  File "/usr/local/lib/python2.7/zipfile.py", line 935, in read
    return self.open(name, "r", pwd).read()
  File "/usr/local/lib/python2.7/zipfile.py", line 1010, in open
    close_fileobj=should_close)
  File "/usr/local/lib/python2.7/zipfile.py", line 526, in __init__
    self._decompressor = zlib.decompressobj(-15)
AttributeError: 'NoneType' object has no attribute 'decompressobj'

fatal: [192.168.0.120]: FAILED! => {
    "changed": false,
    "module_stderr": "Traceback (most recent call last):\n  File \"/home/sysadmin/.ansible/tmp/ansible-tmp-1592623661.17-74974994506330/fmgr_provisioning.py\", line 123, in <module>\n    f.write(z.read('ansible_module_fmgr_provisioning.py'))\n  File \"/usr/local/lib/python2.7/zipfile.py\", line 935, in read\n    return self.open(name, \"r\", pwd).read()\n  File \"/usr/local/lib/python2.7/zipfile.py\", line 1010, in open\n    close_fileobj=should_close)\n  File \"/usr/local/lib/python2.7/zipfile.py\", line 526, in __init__\n    self._decompressor = zlib.decompressobj(-15)\nAttributeError: 'NoneType' object has no attribute 'decompressobj'\n",
    "module_stdout": "",
    "msg": "MODULE FAILURE",
    "rc": 1
}
 [WARNING]: Could not create retry file '/home/fortinet/Downloads/ansible/playbooks/complete_provisioning/ansible_provision_playbook.retry'.         [Errno 13] Permission denied:
u'/home/fortinet/Downloads/ansible/playbooks/complete_provisioning/ansible_provision_playbook.retry'


PLAY RECAP *****************************************************************************************************************************************************************************
192.168.0.120              : ok=0    changed=0    unreachable=0    failed=1


Tags: inpyhomebinlibusrlocalline
1条回答
网友
1楼 · 发布于 2024-09-28 13:38:51

这个特殊的问题最终证明是一个不匹配的问题。最初的设置是Ansible 2.7,由于我无法使用Ansible 2.9实现这一点,所以我使用了Ansible 2.5系统

将它从2.5升级到2.7“修复”了这个特定错误,但给我留下了几个其他问题

大多数问题似乎源于现在通过httpapi和localhost运行剧本的方式,我将不得不为我以前的FortiGate/FortiManager任务创建新剧本

https://docs.ansible.com/ansible/latest/plugins/connection/httpapi.html

(这一变化显然发生在Ansible 2.8中。我是Ansible新手,所以我仍在了解这些变化对剧本的意义。)

我对此的永久修复是Dockerfile,它确保我的脚本环境在每个平台上保持不变

相关问题 更多 >

    热门问题