我正在运行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/