Ansible: O executor da tarefa usa .format () que tem problemas com \ u2018 caracteres

Criado em 30 dez. 2016  ·  2Comentários  ·  Fonte: ansible/ansible

TIPO DE PROBLEMA

  • Relatório de erro
NOME DO COMPONENTE

ansible / plugins / action / __ init__.py

VERSÃO ANSÍVEL
ansible 2.2.0.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = Default w/o overrides
CONFIGURAÇÃO

Nenhum

OS / AMBIENTE

x86_64 GNU / Linux

RESUMO

Um erro voltando de uma caixa do Linux contém o caractere \ u2018 que parece ter um problema de implementação no python 2.x.

veja - '{0}'. formato (u'Teste a implementação unicode ')
Traceback (última chamada mais recente):
Arquivo "", linha 1, em
UnicodeEncodeError: o codec 'ascii' não pode codificar o caractere u '\ u2018' na posição 7: ordinal fora do intervalo (128)

mas funciona bem em python 3.x

PASSOS PARA REPRODUZIR

Mensagem voltando da caixa do Linux, \ u2018 é usada várias vezes:
fatal: [crlg.be-cloud.be]: FALHOU! => {
"falhou": verdadeiro,
"msg": "Falha ao definir permissões nos arquivos temporários que o Ansible precisa criar ao se tornar um usuário sem privilégios (rc: 1, err: chown: alterando a propriedade de '/tmp/ansible-tmp-1483137683.83-3208985635661/': Operação não permitido \ nchown: alteração da propriedade de '/tmp/ansible-tmp-1483137683.83-3208985635661/git.py': Operação não permitida \ n). Para obter informações sobre como contornar isso, consulte https://docs.ansible.com/ansible /become.html#becoming -an-
}

RESULTADOS ESPERADOS

A mensagem deve ser exibida

RESULTADOS REAIS
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": ""
}

Resolvi o problema usando "xxxx% s xxxx"% (res ['rc'], res ['stderr']).

affects_2.2 bug python3

Todos 2 comentários

Eu acredito que isso foi corrigido neste commit para devel: bb5d8fb476c6e42f1e89b47c00e45f8b088ae40b e escolhido a dedo para o branch stable-2.2 aqui: 27be8a10222fbf7a7a4b51c642170e11f2823d39

Deve chegar à próxima versão 2.2. Se você gostaria de testá-lo agora para ter certeza de que pode fazer o checkout do branch stable-2.2 e tentar executar de um checkout ou você pode baixar o ansible-2.2.1.0-0.2.rc2.tar.gz aqui: https: //releases.ansible.com/ansible/ para experimentá-lo.

Fecharei isso em alguns dias, a menos que você relate que ainda é um problema com um deles. Obrigado!

need_info

Corrigi minha instalação e isso funciona para mim.

Obrigado !!

Esta página foi útil?
0 / 5 - 0 avaliações