lon*_*nix 0 ansible ansible-template
我有一个模板化的 json 文件foo.json.j2,其中包含大量文档(“带有注释的 json”)。在服务器上该文件不得包含注释。
有没有一种方法(或模块)可以用来渲染模板而无需注释?
显然,我可以通过一个简单的脚本或 minifer 手动完成此操作,但它需要是幂等的,所以我认为它需要是一个以 ansible 为中心的解决方案。
更新:
示例:
// comment
{
"foo": "bar", // comment
"baz": 10
}
Run Code Online (Sandbox Code Playgroud)
正如 @rolf82 评论中所报道的,json 没有注释语法,因此如果没有具体的示例,很难想象你在说什么。
同时,jinja2 支持模板中的注释,这些注释不会在最终输出中呈现。以下test.json.j2模板:
{#- This is a jinja2 templated json file with comments -#}
{
"test":"{{ var1 }}",
{#- Here we start a dict #}
"testDict":
{
"element1":"{{ var2 }}",
"element2":"{{ var3 }}"
}
{#- End of dict #}
}
Run Code Online (Sandbox Code Playgroud)
由以下剧本使用
{#- This is a jinja2 templated json file with comments -#}
{
"test":"{{ var1 }}",
{#- Here we start a dict #}
"testDict":
{
"element1":"{{ var2 }}",
"element2":"{{ var3 }}"
}
{#- End of dict #}
}
Run Code Online (Sandbox Code Playgroud)
将给出以下结果:
$ ansible-playbook play.yml
PLAY [localhost] **************************************************************************************************************************************************************************************************
TASK [template] ***************************************************************************************************************************************************************************************************
changed: [localhost]
TASK [debug] ******************************************************************************************************************************************************************************************************
ok: [localhost] => {
"msg": {
"test": "1",
"testDict": {
"element1": "2",
"element2": "3"
}
}
}
PLAY RECAP ********************************************************************************************************************************************************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Run Code Online (Sandbox Code Playgroud)
并导致以下文件写入磁盘:
$ cat /tmp/tmp.json
---
- hosts: localhost
gather_facts: false
vars:
var1: 1
var2: 2
var3: 3
tasks:
- template:
src: test.json.j2
dest: /tmp/tmp.json
- vars:
content: "{{ lookup('file', '/tmp/tmp.json') | string }}"
debug:
msg: "{{ content | from_json }}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2498 次 |
| 最近记录: |