Ansible: 任务执行程序使用.format(),其中\ u2018字符有问题

创建于 2016-12-30  ·  2评论  ·  资料来源: ansible/ansible

问题类型

  • 错误报告
组件名称

ansible / plugins / action / __ init__.py

可调版本
ansible 2.2.0.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides
配置

没有任何

操作系统/环境

x86_64 GNU / Linux

概括

从linux盒返回的错误包含\ u2018字符,在python 2.x中似乎存在实现问题。

参见-'{0}'。format(u'测试it \ u2018s的unicode实现')
追溯(最近一次通话):
文件 ”“,第1行,在
UnicodeEncodeError:'ascii'编解码器无法在位置7编码字符u'\ u2018':序数不在范围内(128)

但在python 3.x中运行良好

重现步骤

消息从linux框返回,\ u2018被使用了几次:
致命的:[crlg.be-cloud.be]:失败! => {
“失败”:是的,
“ msg”:“无法在临时文件上设置权限,当成为非特权用户时,需要创建Ansible(rc:1,err:chown:更改'/tmp/ansible-tmp-1483137683.83-3208985635661/'的所有权:未进行操作允许的\ nchown:更改“ /tmp/ansible-tmp-1483137683.83-3208985635661/git.py”的所有权:不允许的操作\ n)有关解决此问题的信息,请参见https://docs.ansible.com/ansible /become.html#becoming-一个非特权用户”
}

预期成绩

该消息应显示

实际结果
An exception occurred during task execution. The full traceback is:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/ansible/executor/task_executor.py", line 119, in run
    res = self._execute()
  File "/usr/lib/python2.7/dist-packages/ansible/executor/task_executor.py", line 490, in _execute
    result = self._handler.run(task_vars=variables)
  File "/usr/lib/python2.7/dist-packages/ansible/plugins/action/normal.py", line 33, in run
    results = merge_hash(results, self._execute_module(tmp=tmp, task_vars=task_vars))
  File "/usr/lib/python2.7/dist-packages/ansible/plugins/action/__init__.py", line 618, in _execute_module
    self._fixup_perms2(remote_files, remote_user)
  File "/usr/lib/python2.7/dist-packages/ansible/plugins/action/__init__.py", line 395, in _fixup_perms2
    ' see https://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user'.format(res['rc'], res['stderr']))
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2018' in position 29: ordinal not in range(128)

fatal: [crlg.be-cloud.be]: FAILED! => {
    "failed": true, 
    "msg": "Unexpected failure during module execution.", 
    "stdout": ""
}

我使用“ xxxx%s xxxx”%(res ['rc'],res ['stderr'])代替了此问题。

affects_2.2 bug python3

所有2条评论

我相信这个问题已在开发承诺中得到解决:bb5d8fb476c6e42f1e89b47c00e45f8b088ae40b并在此处被挑选到stable-2.2分支:27be8a10222fbf7a7a4b51c642170e11f2823d39

它应该进入下一个2.2版本。 如果您现在想进行测试以确保可以签出stable-2.2分支并尝试从签出运行,也可以从此处下载ansible-2.2.1.0-0.2.rc2.tar.gz: https: //releases.ansible.com/ansible/进行尝试。

除非您报告说其中之一仍然存在问题,否则我将在几天后关闭它。 谢谢!

needs_info

我修补了安装程序,这对我有用。

谢谢 !!

此页面是否有帮助?
0 / 5 - 0 等级