我正在运行Ansible 1.8.2
我在另一个系统上创建了一个保管文件。在该系统上,它可以正常工作。
但是,当我在本地系统上运行它时,出现以下错误:

$» ansible-vault --debug view vars/vaulted_vars.yml
Vault password:
Traceback (most recent call last):
  File "/usr/bin/ansible-vault", line 225, in main
    fn(args, options, parser)
  File "/usr/bin/ansible-vault", line 172, in execute_view
    this_editor.view_file()
  File "/usr/lib/python2.7/site-packages/ansible/utils/vault.py", line 280, in view_file
    dec_data = this_vault.decrypt(tmpdata)
  File "/usr/lib/python2.7/site-packages/ansible/utils/vault.py", line 136, in decrypt
    data = this_cipher.decrypt(data, self.password)
  File "/usr/lib/python2.7/site-packages/ansible/utils/vault.py", line 545, in decrypt
    data = unhexlify(data)
TypeError: Odd-length string

ERROR: Odd-length string

我试图手动输入密码或将其复制粘贴,但是仍然会发生错误。

这是怎么回事,以及如何解决此错误?

最佳答案

事实证明,此错误是因为从Ansible 1.8.2开始,它需要对已存储文件使用非常特定的行尾编码。

当我拥有这种类型的文件时,它将失败:

$» file vaulted_vars.yml
vaulted_vars.yml: ASCII text, with CRLF line terminators

但是,一旦我将其更改为此,它便开始工作:
$» file vaulted_vars.yml
vaulted_vars.yml: ASCII text

发生整个问题是因为我的git客户端正在更改换行符。有关详细信息,请参见本文:https://help.github.com/articles/dealing-with-line-endings/

关于 "Odd-length string"的Ansible-Vault错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27787412/

10-14 15:59
查看更多