Vagrant “如何调试”;错误!意外异常:找到非十六进制数字;流浪汉?
我正面临着一个问题,试图与Ansible一起流浪。以下是我在Windows 7上尝试在终端(git bash)中运行Vagrant “如何调试”;错误!意外异常:找到非十六进制数字;流浪汉?,vagrant,virtualbox,ansible,vagrant-windows,ansible-vault,Vagrant,Virtualbox,Ansible,Vagrant Windows,Ansible Vault,我正面临着一个问题,试图与Ansible一起流浪。以下是我在Windows 7上尝试在终端(git bash)中运行vagrant up或vagrant provision时遇到的错误: ERROR! Unexpected Exception: Non-hexadecimal digit found to see the full traceback, use -vvv Ansible failed to complete successfully. Any error output shoul
vagrant up
或vagrant provision
时遇到的错误:
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\u pass
不是十六进制(它是一个字符串,不能更改)。在我学院的电脑上它工作正常,但在我的电脑上却不正常
.vault\u pass
文件中有问题的字符串看起来像DBAKWeG3KOr3jKjBDbAz
我想这是Python的问题,但我不确定,也不知道如何解决它
当我尝试添加-vvv
时,这是资源:ERROR! Unexpected Exception: Non-hexadecimal digit found the full traceback was: Traceback (most recent call last): File "/usr/bin/ansible-playbook", line 92, in exit_code = cli.run() File "/usr/lib/python2.7/dist-packages/ansible/cli/playbook.py", line 132, in run inventory = Inventory(loader=loader, variable_manager=variable_manager, host_list=self.options.inventory) File "/usr/lib/python2.7/dist-packages/ansible/inventory/__init__.py", line 85, in __init__ self.parse_inventory(host_list) File "/usr/lib/python2.7/dist-packages/ansible/inventory/__init__.py", line 144, in parse_inventory group.vars = combine_vars(group.vars, self.get_group_variables(group.name)) File "/usr/lib/python2.7/dist-packages/ansible/inventory/__init__.py", line 509, in get_group_variables self._vars_per_group[groupname] = self._get_group_variables(groupname, vault_password=vault_password) File "/usr/lib/python2.7/dist-packages/ansible/inventory/__init__.py", line 527, in _get_group_variables vars = combine_vars(vars, self.get_group_vars(group)) File "/usr/lib/python2.7/dist-packages/ansible/inventory/__init__.py", line 707, in get_group_vars return self._get_hostgroup_vars(host=None, group=group, new_pb_basedir=new_pb_basedir) File "/usr/lib/python2.7/dist-packages/ansible/inventory/__init__.py", line 746, in _get_hostgroup_vars results = combine_vars(results, self._variable_manager.add_group_vars_file(base_path, self._loader)) File "/usr/lib/python2.7/dist-packages/ansible/vars/__init__.py", line 578, in add_group_vars_file (name, data) = self._load_inventory_file(path, loader) File "/usr/lib/python2.7/dist-packages/ansible/vars/__init__.py", line 535, in _load_inventory_file _found, results = self._load_inventory_file(path=p, loader=loader) File "/usr/lib/python2.7/dist-packages/ansible/vars/__init__.py", line 550, in _load_inventory_file data = loader.load_from_file(path) File "/usr/lib/python2.7/dist-packages/ansible/parsing/dataloader.py", line 113, in load_from_file (file_data, show_content) = self._get_file_contents(file_name) File "/usr/lib/python2.7/dist-packages/ansible/parsing/dataloader.py", line 172, in _get_file_contents data = self._vault.decrypt(data) File "/usr/lib/python2.7/dist-packages/ansible/parsing/vault/__init__.py", line 169, in decrypt b_data = this_cipher.decrypt(b_data, self.b_password) File "/usr/lib/python2.7/dist-packages/ansible/parsing/vault/__init__.py", line 674, in decrypt data = unhexlify(data) TypeError: Non-hexadecimal digit found Ansible failed to complete successfully. Any error output should be visible above. Please fix these errors and try again. 错误!意外异常:找到非十六进制数字 完整的回溯是: 回溯(最近一次呼叫最后一次): 文件“/usr/bin/ansible playbook”,第92行,在 退出\u code=cli.run() 文件“/usr/lib/python2.7/dist-packages/ansible/cli/playbook.py”,第132行,正在运行 库存=库存(加载器=加载器,变量管理器=变量管理器,主机列表=self.options.inventory) 文件“/usr/lib/python2.7/dist packages/ansible/inventory/_init__.py”,第85行,在_init中__ self.parse\u目录(主机\u列表) 文件“/usr/lib/python2.7/dist packages/ansible/inventory/_init__.py”,第144行,在parse_inventory中 group.vars=combine_vars(group.vars,self.get_group_变量(group.name)) 文件“/usr/lib/python2.7/dist packages/ansible/inventory/_init__.py”,第509行,在get_组变量中 self.\u vars\u per\u group[groupname]=self.\u获取组变量(groupname,vault\u password=vault\u password) 文件“/usr/lib/python2.7/dist packages/ansible/inventory/_init__.py”,第527行,在_get_group_变量中 变量=组合变量(变量,自。获取组变量(组)) 文件“/usr/lib/python2.7/dist packages/ansible/inventory/_init__.py”,第707行,在get_组变量中 返回self.\u获取\u主机组\u变量(主机=无,组=组,新的\u-pb\u-basedir=新的\u-pb\u-basedir) 文件“/usr/lib/python2.7/dist packages/ansible/inventory/_init__.py”,第746行,位于主机组变量中 结果=组合变量(结果、自变量、管理器。添加组变量、文件(基本路径、自加载程序)) 文件“/usr/lib/python2.7/dist packages/ansible/vars/________init__.py”,第578行,在add_group_vars_文件中 (名称、数据)=自身。\u加载\u清单\u文件(路径、加载程序) 文件“/usr/lib/python2.7/dist packages/ansible/vars/_init__.py”,第535行,在加载清单文件中 _找到,结果=self.\u加载\u清单\u文件(路径=p,加载程序=loader) 文件“/usr/lib/python2.7/dist packages/ansible/vars/_init__.py”,第550行,在加载清单文件中 data=loader.load\u from\u文件(路径) 文件“/usr/lib/python2.7/dist packages/ansible/parsing/dataloader.py”,第113行,从文件加载 (文件数据,显示内容)=self.\u获取文件内容(文件名) 文件“/usr/lib/python2.7/dist packages/ansible/parsing/dataloader.py”,第172行,在“获取文件”内容中 数据=自身。\u vault.decrypt(数据) 文件“/usr/lib/python2.7/dist-packages/ansible/parsing/vault/__-init__.py”,第169行,在decrypt中 b_data=此_密码.解密(b_数据,self.b_密码) 文件“/usr/lib/python2.7/dist packages/ansible/parsing/vault/_init__.py”,第674行,在decrypt中 数据=不精确(数据) TypeError:找到非十六进制数字 Ansible未能成功完成。任何错误输出都应该是
可见上面。请修复这些错误并重试。当编码文件包含回车(\r)符号时,可能会出现此问题
如果您是通过git获取文件的,那么应该正确配置git—将
core.eol=lf
设置为.gitconfig
这与加密文件末尾的Windows行结尾有关。
只需将最后一行的结尾切换到Unix并保存文件 为了防止有人遇到同样的问题,我在尝试手动解密直接从YAML文件(或从
ansible vault encrypt_string
的输出)复制的变量时遇到了这个问题
例如:
加密字符串:
echo-n“黄金不闪烁”|易变保险库加密|
从标准输入读取明文输入。(按ctrl-d键结束输入)
!拱顶|
$ANSIBLE_保险库;1.1;AES256
61626566613637386434386364376236636636646263386561336463386132626335386335356463
3930303065646433346431383463636366332306564310A65346436431303538333563306566462
61303866343966613164623533323936383165623539623734316161373561383532326231623862
6439306562306433360A6330388626233376262373561333630566623864623435663465656364
64643961613064313964376266336330366566616435663130666135383739323962646563326336
3062636437636664363039383436306535303939323535353163
正在尝试解密:
echo'$ANSIBLE\u保险库;1.1;AES256
61626566613637386434386364376236636636646263386561336463386132626335386335356463
3930303065646433346431383463636366332306564310A65346436431303538333563306566462
61303866343966613164623533323936383165623539623734316161373561383532326231623862
6439306562306433360A6330388626233376262373561333630566623864623435663465656364
64643961613064313964376266336330366566616435663130666135383739323962646563326336
306263643763666436303938343630635353039323535353163'| ansible vault decrypt--vault密码文件。/vault env
[警告]:在-:vault format Unexlify错误中存在vault格式错误:
找到非十六进制数字
错误!Vault格式不精确错误:为找到非十六进制数字-
要解决此问题,只需删除开头的YAML缩进空格:
echo'$ANSIBLE\u保险库;1.1;AES256
61626566613637386434386364376236636636646263386561336463386132626335386335356463
3930303065646433346431383463636366332306564310A65346436431303538333563306566462
6130386634396661316462353332393638316562353962373431616
mysql_pw: !vault |
$ANSIBLE_VAULT;1.1;AES256
35336630636134383938626366353162326236363966353535356361373465616364383336366536
6630373462316336333830643331376464633961643633380a623863373966323432646236306239
36326465343239343766363936653631643761646562306530363262633262323966623530373664
3239376534303565340a623262646132623033383964366438633964303633363430373463633033
3164 < spaces here