You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible Playbook生成文件时如何保留值中的双引号

Ansible Playbook生成文件时如何保留值中的双引号

我明白你的问题了——你想用Ansible生成YAML文件时,保留所有值的双引号,但当前使用to_nice_yaml过滤器输出的内容自动去掉了这些引号,这确实不符合你的预期。别担心,我们可以通过调整过滤器的参数轻松解决这个问题。

问题根源

to_nice_yaml过滤器底层依赖PyYAML库,默认情况下,PyYAML会自动移除不必要的引号(比如没有特殊字符的字符串)。但如果你需要强制保留双引号,我们可以通过传递额外参数来改变这个行为。

解决方案

修改to_nice_yaml过滤器,添加default_style='"'参数,这个参数会强制给所有标量值加上双引号。调整后的任务代码如下:

- name: Creating temporary file
  ansible.builtin.copy:
    content: |
        {{ test_var | to_nice_yaml(indent=2, default_style='"') }}
    dest: "./test_file"
  delegate_to: localhost

效果验证

运行修改后的Playbook后,生成的test_file内容就会和你期望的一致:

- hardware:
  - cpu: "4 Cores"
    disk: "HDD 50G"
    ram: "5G"
  hostname: "hostname"
  users:
  - email: "user@domain.com"
    groups: "group1, group2, group3"
    passwd: "sdf%^#("
    user: "user"

小补充:其实YAML语法本身不需要给所有字符串加引号,只有包含空格、特殊符号的字符串才需要。但如果你的场景必须强制所有值都带双引号,上面的方法就完全适用。

备注:内容来源于stack exchange,提问作者Konstantin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 13:23:05