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

如何在Ansible中避免对变量内容进行模板渲染?

解决办法

1. 用单引号包裹变量值

如果你的JSON内容里没有单引号,直接把整个JSON用单引号包起来,Ansible就不会把里面的{{ }}当成变量解析:

- hosts: all
  gather_facts: false
  remote_user: ansadm
  vars:
    dashboard_json: '{This is some sample text in JSON  with numerous data in curly braces {{Text}} {{MoreText}}  {{MoreText}}  and many more}'

要是JSON里本身有单引号,把每个单引号改成两个单引号就行(YAML单引号的转义规则)。

2. 用YAML块标量处理多行内容(推荐)

针对1700行的超长JSON,用YAML的|块标量最方便,直接把内容粘贴进去就行,完全不用手动转义任何字符:

- hosts: all
  gather_facts: false
  remote_user: ansadm
  vars:
    dashboard_json: |
      {
        "sample_key": "value containing {{Text}}",
        "another_key": "value with {{MoreText}}",
        // 这里直接粘贴完整的1700行JSON
      }

|会完整保留原始的换行和格式,要是你想把连续换行合并成单个,可以换成>,但JSON用|更合适。

3. 从外部文件加载(最适合大文件)

把JSON内容单独存成一个文件(比如dashboard.json),然后用lookup插件读取,彻底避开转义问题:

- hosts: all
  gather_facts: false
  remote_user: ansadm
  vars:
    dashboard_json: "{{ lookup('file', 'dashboard.json') }}"

这里的双引号是必须的,因为要执行lookup插件,但读取到的文件内容里的{{ }}会被当作纯文本,不会被解析。

内容的提问来源于stack exchange,提问作者MikeKim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 23:02:44