Ansible: タスクエグゼキュータは、\ u2018文字に問題がある.format()を使用します

作成日 2016年12月30日  ·  2コメント  ·  ソース: ansible/ansible

問題の種類

  • バグレポート
コンポーネント名

ansible / plugins / action / __init__。py

ANSIBLEバージョン
ansible 2.2.0.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides
構成

無し

OS /環境

x86_64 GNU / Linux

概要

Linuxボックスから返されるエラーには、Python2.xでの実装の問題があると思われる\ u2018文字が含まれています。

参照-'{0}' .format(u'Test it \ u2018s unicodeimplementation ')
トレースバック(最後の最後の呼び出し):
ファイル ""、1行目、
UnicodeEncodeError: 'ascii'コーデックは位置7の文字u '\ u2018'をエンコードできません:序数が範囲内にありません(128)

しかし、Python3.xでは正常に実行されます

再現する手順

Linuxボックスから返されるメッセージ、\ u2018は数回使用されます:
致命的:[crlg.be-cloud.be]:失敗しました! => {
「失敗」:true、
"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を参照してunprivileged -user "
}

期待される結果

メッセージが表示されます

実績
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/で試してみてください。

これらのいずれかにまだ問題があると報告されない限り、これは数日で終了します。 ありがとう!

need_info

インストールにパッチを適用しましたが、これで問題ありません。

ありがとう!

このページは役に立ちましたか?
0 / 5 - 0 評価