我在尝试使用 Ansible 运行 Vagrant 时遇到问题。这是我在 Windows 7 上尝试运行vagrant up
或vagrant provision
在终端(git bash)中遇到的错误:
ERROR! Unexpected Exception: Non-hexadecimal digit found
to see the full traceback, use -vvv
Ansible failed to complete successfully. Any error output should be
visible above. Please fix these errors and try again.
发生这种情况是因为该Ansible-vault
文件.vault_pass
不是十六进制的(它是一个字符串并且不能更改)。在我同事的电脑上它可以正常工作,但在我的电脑上却不行。
文件中有问题的字符串.vault_pass
看起来像DBAKWeG3KOr3jKjBDbAz
.
我想问题出在 Python 上,但我不确定,也不知道如何解决。
当我尝试添加-vvv
这是结果:
错误!意外异常:找到非十六进制数字 完整的追溯是: 回溯(最近一次通话最后): 文件“/usr/bin/ansible-playbook”,第 92 行,在 exit_code = cli.run() 运行中的文件“/usr/lib/python2.7/dist-packages/ansible/cli/playbook.py”,第 132 行 库存=库存(装载机=装载机,variable_manager=variable_manager,host_list=self.options.inventory) 文件“/usr/lib/python2.7/dist-packages/ansible/inventory/__init__.py”,第 85 行,在 __init__ self.parse_inventory(host_list) 文件“/usr/lib/python2.7/dist-packages/ansible/inventory/__init__.py”,第 144 行,在 parse_inventory group.vars = combine_vars(group.vars, self.get_group_variables(group.name)) 文件“/usr/lib/python2.7/dist-packages/ansible/inventory/__init__.py”,第 509 行,在 get_group_variables self._vars_per_group[groupname] = self._get_group_variables(groupname, vault_password=vault_password) _get_group_variables 中的文件“/usr/lib/python2.7/dist-packages/ansible/inventory/__init__.py”,第 527 行 vars = combine_vars(vars, self.get_group_vars(group)) 文件“/usr/lib/python2.7/dist-packages/ansible/inventory/__init__.py”,第 707 行,在 get_group_vars return self._get_hostgroup_vars(host=None, group=group, new_pb_basedir=new_pb_basedir) _get_hostgroup_vars 中的文件“/usr/lib/python2.7/dist-packages/ansible/inventory/__init__.py”,第 746 行 结果 = combine_vars(结果,self._variable_manager.add_group_vars_file(base_path,self._loader)) 文件“/usr/lib/python2.7/dist-packages/ansible/vars/__init__.py”,第 578 行,在 add_group_vars_file (名称,数据)= self._load_inventory_file(路径,加载器) _load_inventory_file 中的文件“/usr/lib/python2.7/dist-packages/ansible/vars/__init__.py”,第 535 行 _found, results = self._load_inventory_file(path=p, loader=loader) _load_inventory_file 中的文件“/usr/lib/python2.7/dist-packages/ansible/vars/__init__.py”,第 550 行 数据 = loader.load_from_file(路径) 文件“/usr/lib/python2.7/dist-packages/ansible/parsing/dataloader.py”,第 113 行,在 load_from_file (file_data, show_content) = self._get_file_contents(file_name) _get_file_contents 中的文件“/usr/lib/python2.7/dist-packages/ansible/parsing/dataloader.py”,第 172 行 数据 = self._vault.decrypt(数据) 文件“/usr/lib/python2.7/dist-packages/ansible/parsing/vault/__init__.py”,第 169 行,解密 b_data = this_cipher.decrypt(b_data, self.b_password) 文件“/usr/lib/python2.7/dist-packages/ansible/parsing/vault/__init__.py”,第 674 行,解密 数据 = unhexlify(数据) TypeError:找到非十六进制数字 Ansible 未能成功完成。任何错误输出都应该是 上面可见。请修复这些错误,然后重试。