3

在 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)"}
4

1 回答 1

8

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

你不需要在那里逃避任何东西。

于 2016-07-12T10:12:22.970 回答