2016-07-12 11 views
2

パスワードは/(スラッシュ、スラッシュ)が含まれていない限り、Ansibleボールトにランダムに生成されたパスワードを格納し、私は問題がないYaml Spec 1.2によると、エンコードスラッシュ/ AnsibleでYAMLファイル

印刷可能なASCII文字を見て二重引用符、バックスラッシュ、スラッシュをバックスラッシュでエスケープする必要があります。

これを試しましたが、解析エラーが発生します。ボールトファイルから

ライン

test: "a<>?x\/x.,:;'-=_+b*()c&d{}\"e^f[][email protected]%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)"} 
+2

スラッシュをエスケープしないと、どのようなエラーが発生しますか? "試してみたよ":a?>?x/x。、;;; - = _ + b *()c&d {} \ "e^f []!@ g%h \\ i $ j" ' –

+1

そしてあなたは正しいです、エスケープする必要はありません – jdog

答えて

6

Ansibleは、Pythonであるため、PyYAMLとを使用しています。 PyYamlは1.2ではなくYAML 1.1を実装しています。 YAML 1.1では、スラッシュはエスケープ可能な文字ではありません(1.2に入っています)。

スラッシュをエスケープしないでください。 YAMLでは特殊文字ではないため、エスケープする必要はありません。 YAML 1.2では、JSONとの互換性のためにエスケープシーケンスが追加されました。

あなたは、alltogether使用ブロックスカラーを厄介なエスケープ質問をエスケープしたい場合:あなたはそこに何をエスケープする必要はありません

test: |- 
    a<>?x/x.,:;'-=_+b*()c&d{}"e^f[][email protected]%h\i$j