2016-07-12 2 views
2

При хранении случайно сгенерированных паролей в хранилище анзибль, у меня нет никаких проблем, если пароль не содержит/(косая черта вперед слэш)Encode слэш/в анзибль YAML файл

Согласно Yaml Spec 1.2, если смотреть на печатаемых символов 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

Какая у вас ошибка, если вы НЕ скрываете косую черту? Подобно 'test: 'a <>? X/x.,:;' - = _ + b *() c & d {} \" e^f []! @ G% h \\ i $ j "' –

+1

просто попробовал и вы правы, не нужно бежать – jdog

ответ

6

анзибль является Python и использует PyYAML. PyYaml реализует YAML 1.1, а не 1.2. В YAML 1.1 косая черта не является эскалабельным символом (в то время как она находится в 1.2).

Не оставляйте косую черту. Это не особый символ в YAML и поэтому не требует экранирования. YAML 1.2 только добавила escape-последовательность для него из-за совместимости с JSON.

Если вы хотите, чтобы избежать неприятных спасаясь вопросы ALLtogether, используйте блок скаляры:

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

Вам не нужно бежать что-то есть.