在Ansible保险库中存储随机生成的密码时,除非密码包含/(斜杠,正斜杠),否则我没有问题
根据Yaml Spec 1.2,在查看可打印的ascii字符时,我应该使用反斜杠来避免双引号,反斜杠和正斜杠。
我试过这个,但是我得到了一个解析错误。
来自保险库文件的行
test: "a<>?x\/x.,:;'-=_+b*()c&d{}\"e^f[]!@g%h\\i$j"
错误:
fatal: [127.0.0.1]: FAILED! => {"failed": true, "msg": "Syntax Error while loading YAML.\n\n\nThe error appears to have been in 'False': line 14, column 13, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\n(could not open file to display line)"}
答案 0 :(得分:7)
Ansible是Python,因此使用PyYaml。 PyYaml实现了YAML 1.1,而不是1.2。在YAML 1.1中,正斜杠不是一个可逃避的字符(当它在1.2中时)。
不要逃避正斜杠。它不是YAML中的特殊字符,因此不需要转义。由于JSON兼容性,YAML 1.2仅为其添加了转义序列。
如果你想完全逃避令人讨厌的逃避问题,请使用块标量:
test: |-
a<>?x/x.,:;'-=_+b*()c&d{}"e^f[]!@g%h\i$j
你不需要在那里逃避任何事情。