在 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
你不需要转义里面的任何东西。
在 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
你不需要转义里面的任何东西。