Ansible:如何修复输出报价和换行符?

Ansible:如何修复输出报价和换行符?,ansible,yaml,escaping,line-breaks,quoting,Ansible,Yaml,Escaping,Line Breaks,Quoting,我有这个YAML文件(我将我的问题提炼到最低限度): 还有这个剧本: --- - hosts: localhost tasks: - name: Load include_vars: file: ./vars.yml name: object - name: Write copy: content: "{{ object | to_nice_yaml(indent=2) }}"

我有这个YAML文件(我将我的问题提炼到最低限度):

还有这个剧本:

---
- 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;'
虽然我认为输出和输入列表的缩进都是正确的、等价的,并且正确地处理了,但我不确定
weirder
的值引用是否正确。 我不明白最奇怪的
值的换行符

表示可以,但实际上恢复了“正常”引号,并在语法检查期间重新加入换行符

有没有办法强制使用带有filter
的双引号来\u nice\u yaml
(或任何其他过滤器)


是否有办法避免断线(或者可能有原因)?

关于您在《最奇怪的代码》中观察到的断线,文档中对此进行了解释:

to_yaml
to_nice_yaml
过滤器使用默认的80符号字符串长度限制。这会导致第80个符号后出现意外的换行(如果第80个符号后有空格)为避免此类行为并生成长行,请使用
宽度
选项。必须使用硬编码的数字来定义宽度,而不是像
float(“inf”)
这样的结构,因为过滤器不支持代理Python函数。
例如:

{{some_variable|to_yaml(缩进=8,宽度=1337)}
{{some_variable|to_nice_yaml(缩进=8,宽度=1337)}
资料来源:


然后,在文档中的解释之后,他们还指出了以下事实:

过滤器不支持通过其他YAML参数。有关完整列表,请参阅

因此,双引号字符串可以从中得到一些信息:
default\u style='“

可以找到更多的细节


因此,剧本:

---
- 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
-主机:所有
收集事实:不
任务:
-副本:
内容:{{object}to_nice_yaml(缩进=2,宽度=1337,默认样式='\')}
目的地:./outv.yml
变量:
对象:
标量:简单值
空的:
名单:
- 1
- 2
- 3
复杂:
-第一:
1:1
2:2
-第二:
1:3
2:4
奇怪:{{{}}某物{{}}
更奇怪的是:“{{{}}TTT'if something=='blah'else'FFF'{{}”
最奇怪的:&lcub2;ansible\u date\u time.year&rcub2;ansible\u date\u time.month&rcub2;ansible\u date\u time.day&rcub2
提供包含以下内容的文件outv.yml:

“复杂”:
-“第一”:
“一”:!!int“1”
“两个”:!!int“2”
-“第二”:
“一”:!!int“3”
“两个”:!!int“4”
“空”:!!空“空”
“名单”:
- !!int“1”
- !!int“2”
- !!int“3”
“标量”:“简单值”
“怪异”:“{{something}}”
“古怪”:“{‘TTT’if something=='blah'else'FFF'}”
“最奇怪的”:“&lcub2;ansible_date_time.year&rcub2;&lcub2;ansible_date_time.month&rcub2;&lcub2;ansible_date_time.day&rcub2;”
请注意,
!!int
!!null
语法在YAML中调用,并在链接文档中解释