在 Ansible YAML 文件中编码斜杠 /

Encode slash / in Ansible YAML file

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

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

你不需要转义里面的任何东西。