Ansible 使用命令/外壳程序模块的原因:ValueError:在多次运行时,键名不能以下划线开头

Ansible 使用命令/外壳程序模块的原因:ValueError:在多次运行时,键名不能以下划线开头,ansible,Ansible,Ansible会在每个使用shell或命令模块的任务上抛出一个错误,但在第一次在新机器上运行时不会 我使用的过程是镜像一个新的raspberry pi,然后使用ansible设置我需要的服务。第一次运行ansible可以正常工作,但是如果我再次运行它(不做任何更改),它会失败,并说ValueError:Key name不能以下划线开头 下面是一个抛出错误的任务示例。在远程机器上运行/usr/local/bin/pigpiod-v可按预期工作/ - name: see if pigpiod is

Ansible会在每个使用shell或命令模块的任务上抛出一个错误,但在第一次在新机器上运行时不会

我使用的过程是镜像一个新的raspberry pi,然后使用ansible设置我需要的服务。第一次运行ansible可以正常工作,但是如果我再次运行它(不做任何更改),它会失败,并说
ValueError:Key name不能以下划线开头

下面是一个抛出错误的任务示例。在远程机器上运行
/usr/local/bin/pigpiod-v
可按预期工作/

- name: see if pigpiod is the correct version
  command: "/usr/local/bin/pigpiod -v"
  register: pigpiod_version
以下是错误:

An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ValueError: Key name may not begin with an underscore
fatal: [issacs_box]: FAILED! => {"changed": false, "module_stderr": "Traceback (most recent call last):\n  File \"<stdin>\", line 113, in <module>\n  File \"<stdin>\", line 105, in _ansiballz_main\n  File \"<stdin>\", line 48, in invoke_module\n  File \"/usr/lib/python3.5/imp.py\", line 234, in load_module\n    return load_source(name, filename, file)\n  File \"/usr/lib/python3.5/imp.py\", line 170, in load_source\n    module = _exec(spec, sys.modules[name])\n  File \"<frozen importlib._bootstrap>\", line 626, in _exec\n  File \"<frozen importlib._bootstrap_external>\", line 673, in exec_module\n  File \"<frozen importlib._bootstrap>\", line 222, in _call_with_frames_removed\n  File \"/tmp/ansible_command_payload_hc3z4iej/__main__.py\", line 292, in <module>\n  File \"/tmp/ansible_command_payload_hc3z4iej/__main__.py\", line 199, in main\n  File \"/tmp/ansible_command_payload_hc3z4iej/ansible_command_payload.zip/ansible/module_utils/basic.py\", line 901, in __init__\n  File \"/tmp/ansible_command_payload_hc3z4iej/ansible_command_payload.zip/ansible/module_utils/basic.py\", line 2243, in _log_invocation\n  File \"/tmp/ansible_command_payload_hc3z4iej/ansible_command_payload.zip/ansible/module_utils/basic.py\", line 2201, in log\n  File \"systemd/_journal.pyx\", line 68, in systemd._journal.send\n  File \"systemd/_journal.pyx\", line 32, in systemd._journal._send\nValueError: Key name may not begin with an underscore\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
任务执行期间发生异常。要查看完整的回溯,请使用-vvv。错误为:ValueError:键名不能以下划线开头
致命:[issacs\u box]:失败!=>{“changed”:false,“module\u stderr”:“Traceback(最近一次调用):\n File\”,第113行,in\n File\“\”,第105行,in\u ansiballz\u main File\”,第48行,in invoke\u module\n File\“/usr/lib/python3.5/imp.py\”,第234行,in load\n模块\n返回load\u源(名称、文件名、文件)\n File\”/usr/lib/python3.5/imp.py.py\,第170行,加载\u源\n模块=\u exec(规范,系统模块[名称])\n文件\“\”,第626行,加载\u exec文件\“\”,第673行,加载\u源\n模块\“\”,第222行,调用\u已删除\u帧\n文件\/tmp/ansible命令\u有效载荷hc3z4iej/\uu主载荷\uzpy\”,第292行,在\n文件\/tmp/ansible命令\u3payload\u3IEJ/.hcu,第199行,主文件“/tmp/ansible\u command\u payload\u hc3z4iej/ansible\u command\u payload.zip/ansible/module\u utils/basic.py”,第901行,初始文件“/tmp/ansible\u command\u payload\u hc3z4iej/ansible\u command\u payload.zip/ansible/module\u utils/basic.py”,日志调用文件第2243行\“/tmp/ansible\u command\u payload\u hc3z4iej/ansible\u command\u payload.zip/ansible/module\u utils/basic.py\”,第2201行,在systemd.\u journal.send\n文件“systemd/\u journal.pyx\”,在systemd.\u journal.第32行。\u send\n值错误:键名不能以下划线开头,“\n”“module\u stdout:”“msg”:“模块故障\n有关确切错误,请参阅stdout/stderr”,“rc”:1}”

似乎是一个奇怪的Ansible bug。您使用的是什么版本?您是否可以尝试降级和/或升级一个版本。如果这样可以修复此错误,请通知Ansible开发人员,并在他们的repo中创建一个问题


否则,请尝试更新和/或降级您的Python版本。可能是因为此文件有问题。
/usr/lib/python3.5/imp.py
我安装了错误的PYPI包。巧合的是,有一个名为
systemd
(版本0.16.1)的包与官方的
systemd Python
(版本234)包。运行
pip3卸载systemd
,然后
pip3安装systemd python——用户
解决了这个问题。

我使用的是2.8版(我相信是最新版本)。我尝试降级到2.7,但这没有任何区别。我不知道如何检查
imp.py
文件以查看是否有任何错误,但它似乎是原始版本。您可以尝试在另一个Ansible主节点上运行playbook吗?