【发布时间】:2021-03-16 07:05:52
【问题描述】:
我有这个 YAML 文件(我将我的问题提炼到最低限度):
scalar: simple_value
empty:
list:
- 1
- 2
- 3
complex:
- first:
one: 1
two: 2
- second:
one: 3
two: 4
weird: "{{ '{{' }} something {{ '}}' }}"
weirder: "{{ '{{' }} 'TTT' if something == 'blah' else 'FFF' {{ '}}' }}"
weirdest: "&lcub2; ansible_date_time.year &rcub2;.&lcub2; ansible_date_time.month &rcub2;.&lcub2; ansible_date_time.day &rcub2;"
还有这个剧本:
---
- hosts: localhost
tasks:
- name: Load
include_vars:
file: ./vars.yml
name: object
- name: Write
copy:
content: "{{ object | to_nice_yaml(indent=2) }}"
dest: ./outv.yml
输出文件是这样的:
complex:
- first:
one: 1
two: 2
- second:
one: 3
two: 4
empty: null
list:
- 1
- 2
- 3
scalar: simple_value
weird: '{{ something }}'
weirder: '{{ ''TTT'' if something == ''blah'' else ''FFF'' }}'
weirdest: '&lcub2; ansible_date_time.year &rcub2;.&lcub2; ansible_date_time.month
&rcub2;.&lcub2; ansible_date_time.day &rcub2;'
虽然我认为输出和输入列表缩进都是正确且等效的,并且Jinja escaping 处理得当,但我不确定weirder 的值引用。
而且我不明白weirdest 值的换行符。
YAMLint 说没问题,但实际上恢复了“正常”引用并在语法检查期间重新加入换行符。
有没有办法通过过滤器to_nice_yaml(或任何其他过滤器)强制使用双引号?
有没有办法避免换行(或者可能有原因)?
【问题讨论】:
标签: ansible yaml escaping line-breaks quoting