Python KeyError:';用户';当运行Ansible playbook时

Python KeyError:';用户';当运行Ansible playbook时,python,ansible,Python,Ansible,编辑:使用python 3.6会让事情变得更糟。完全重新安装Python2.7.15并没有解决这个问题。同样的错误也出现了 再次编辑:我创建了一个新用户,test\u user,并将我的ansible-web.txt文件发送给该用户(sudo chown test\u user:test\u user ansible web.txt)。我再次运行了剧本,那些错误没有显示出来。所以,我的本地文件有问题。我只是不知道从哪里开始找 我正在试图找出导致此错误的原因。当我尝试运行Ansible剧本时,它会

编辑:使用python 3.6会让事情变得更糟。完全重新安装Python2.7.15并没有解决这个问题。同样的错误也出现了

再次编辑:我创建了一个新用户,
test\u user
,并将我的ansible-web.txt文件发送给该用户(
sudo chown test\u user:test\u user ansible web.txt
)。我再次运行了剧本,那些错误没有显示出来。所以,我的本地文件有问题。我只是不知道从哪里开始找

我正在试图找出导致此错误的原因。当我尝试运行Ansible剧本时,它会反复出现,但剧本仍然成功运行。有两个错误。以下是为单个远程主机运行播放的全部输出:

< TASK [Gathering Facts] >
 ------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Traceback (most recent call last):
  File "/usr/lib/python2.7/logging/__init__.py", line 868, in emit
    msg = self.format(record)
  File "/usr/lib/python2.7/logging/__init__.py", line 741, in format
    return fmt.format(record)
  File "/usr/lib/python2.7/logging/__init__.py", line 469, in format
    s = self._fmt % record.__dict__
KeyError: 'user'
Logged from file transport.py, line 1819
Traceback (most recent call last):
  File "/usr/lib/python2.7/logging/__init__.py", line 868, in emit
    msg = self.format(record)
  File "/usr/lib/python2.7/logging/__init__.py", line 741, in format
    return fmt.format(record)
  File "/usr/lib/python2.7/logging/__init__.py", line 469, in format
    s = self._fmt % record.__dict__
KeyError: 'user'
Logged from file transport.py, line 1819
Traceback (most recent call last):
  File "/usr/lib/python2.7/logging/__init__.py", line 868, in emit
    msg = self.format(record)
  File "/usr/lib/python2.7/logging/__init__.py", line 741, in format
    return fmt.format(record)
  File "/usr/lib/python2.7/logging/__init__.py", line 469, in format
    s = self._fmt % record.__dict__
KeyError: 'user'
Logged from file sftp.py, line 158
Traceback (most recent call last):
  File "/usr/lib/python2.7/logging/__init__.py", line 868, in emit
    msg = self.format(record)
  File "/usr/lib/python2.7/logging/__init__.py", line 741, in format
    return fmt.format(record)
  File "/usr/lib/python2.7/logging/__init__.py", line 469, in format
    s = self._fmt % record.__dict__
KeyError: 'user'
Logged from file sftp.py, line 158
ok: [192.168.80.50]
 ___________________________________
< TASK [test_ansible_facts : debug] >
 -----------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

skipping: [192.168.80.50]
 ___________________________________
< TASK [test_ansible_facts : debug] >
 -----------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

ok: [192.168.80.50] => {
    "msg": "OS version is 18.04"
}
 ____________
< PLAY RECAP >
 ------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

192.168.80.50              : ok=2    changed=0    unreachable=0    failed=0    skipped=1    rescued=0    ignored=0   

------------------------
\   ^__^
\(oo)\_______
(__)\       )\/\
||----w|
||     ||
回溯(最近一次呼叫最后一次):
文件“/usr/lib/python2.7/logging/_init__uuu.py”,第868行,在emit中
msg=self.format(记录)
文件“/usr/lib/python2.7/logging/_init__uuu.py”,第741行,格式为
返回格式(记录)
文件“/usr/lib/python2.7/logging/_init__uuu.py”,第469行,格式为
s=自记录的百分比__
KeyError:'用户'
从文件transport.py第1819行记录
回溯(最近一次呼叫最后一次):
文件“/usr/lib/python2.7/logging/_init__uuu.py”,第868行,在emit中
msg=self.format(记录)
文件“/usr/lib/python2.7/logging/_init__uuu.py”,第741行,格式为
返回格式(记录)
文件“/usr/lib/python2.7/logging/_init__uuu.py”,第469行,格式为
s=自记录的百分比__
KeyError:'用户'
从文件transport.py第1819行记录
回溯(最近一次呼叫最后一次):
文件“/usr/lib/python2.7/logging/_init__uuu.py”,第868行,在emit中
msg=self.format(记录)
文件“/usr/lib/python2.7/logging/_init__uuu.py”,第741行,格式为
返回格式(记录)
文件“/usr/lib/python2.7/logging/_init__uuu.py”,第469行,格式为
s=自记录的百分比__
KeyError:'用户'
从文件sftp.py第158行记录
回溯(最近一次呼叫最后一次):
文件“/usr/lib/python2.7/logging/_init__uuu.py”,第868行,在emit中
msg=self.format(记录)
文件“/usr/lib/python2.7/logging/_init__uuu.py”,第741行,格式为
返回格式(记录)
文件“/usr/lib/python2.7/logging/_init__uuu.py”,第469行,格式为
s=自记录的百分比__
KeyError:'用户'
从文件sftp.py第158行记录
ok:[192.168.80.50]
___________________________________

-----------------------------------
\   ^__^
\(oo)\_______
(__)\       )\/\
||----w|
||     ||
跳过:[192.168.80.50]
___________________________________

-----------------------------------
\   ^__^
\(oo)\_______
(__)\       )\/\
||----w|
||     ||
确定:[192.168.80.50]=>{
“msg”:“操作系统版本为18.04”
}
____________
<播放重述>
------------
\   ^__^
\(oo)\_______
(__)\       )\/\
||----w|
||     ||
192.168.80.50:确定=2更改=0无法访问=0失败=0跳过=1获救=0忽略=0
我真的没有“你尝试了什么”的回答,因为我没有改变任何东西(除了我的Ubuntu机器上的基本软件更新),而且我对Python的了解不够,无法调试它。搜索特定错误不会产生任何结果

无论我运行哪个剧本,这些错误都会出现。我使用的是Ansible版本2.7.15和Python 2.7.15


关于我能做什么有什么想法吗

好吧,今天早上我在开机时崩溃(得到一个
initramfs
提示,这导致我在grub中运行
fsck
),我决定继续重新安装我的操作系统。我使用apt重新安装了Ansible,使用
Ansible playbook.yml运行了playbook,并在没有错误的情况下完成了。这本身不是一个解决方案,因为我显然还有其他问题,但是python错误已经消失了

自从升级到ansible 2.9以来,我一直遇到类似的错误,虽然我们没有解决所有问题,但我可以指出一些来源

keyerror来自此处ansible自身设置的格式-

我们有一个自定义日志,因此我们能够调整我们的日志消息

-self.logger.info(message)
+self.logger.info(message, extra={'user':user})
当其他应用程序有自己的记录器并执行日志调用时,这并不能解决KeyError问题。这些仍然会出现错误并无法记录


编辑:这已被确认为一个错误,并在ansible master中修复-

根据回溯和playbook仍然成功执行的事实,问题似乎源于
日志记录。你试过更新那个软件包吗?@JR.请原谅我的困惑,你指的是哪个软件包?我没有更新任何软件包。@JR.我运行了
sudopip安装日志--upgrade
,但这并没有改变任何东西。这就是您所指的包吗?我假设它是一个包,但它是一个标准库()。无视我最初的评论。对不起,我帮不上忙:-\@JR.用一些新信息更新了我的问题。谢谢你的信息!我的机器出现了另一个问题(它正在引导到initramfs提示符),所以我完全重新安装了操作系统和ansible。我在跑2.9.2。现在一切都好了。我会接受你的回答。