编辑:使用python 3.6会使情况变得更糟。完全重新安装python 2.7.15并不能解决问题。出现相同的错误。
再次编辑:我创建了一个新用户test_user
,并把ansible-web.txt文件写给了该用户(sudo chown test_user:test_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
我真的没有“您尝试了什么”的响应,因为我没有进行任何更改(除了Ubuntu计算机上的基本软件更新),而且我对Python的了解还不足以对其进行调试。搜索特定错误不会产生任何结果。
无论我运行哪本剧本,这些错误都会出现。我正在使用Ansible版本2.7.15和Python 2.7.15。
关于我能做什么的任何想法?
答案 0 :(得分:0)
好吧,今天早晨启动崩溃(出现initramfs
提示,导致我在grub中运行fsck
)后,我决定继续重新安装操作系统。我使用apt重新安装了Ansible,并用ansible-playbook <my_playbook>.yml
运行了剧本,并且没有错误地完成了任务。从本质上讲,这不是一个解决方案,因为我显然还有其他问题,但是python错误消失了。
答案 1 :(得分:0)
自升级到ansible 2.9以来,我一直遇到相同类型的错误,虽然我们没有解决所有问题,但我可以指出一些消息来源。
密钥错误来自于此处本身在ansible中设置的格式-https://github.com/ansible/ansible/commit/a7837edcf26e1e8542109952a9117e145c4cba1d#diff-b433171851ee6e9ab6c4f98f233678b5R65
我们有一个自定义日志,因此能够调整日志消息
-self.logger.info(message)
+self.logger.info(message, extra={'user':user})
当其他应用程序具有自己的记录器并进行日志调用时,这不能解决KeyError。那些仍然会遇到KeyError并且无法记录。
编辑:此错误已确认为错误,已在ansible母版-https://github.com/ansible/ansible/issues/65249
中修复