在Ansible YAML文件中编码斜杠/

时间:2016-07-12 04:33:12

标签: yaml ansible ansible-vault

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

1 个答案:

答案 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

你不需要在那里逃避任何事情。