gpt4 book ai didi

go - 在 Jinja2 模板中转义 golang 模板

转载 作者:IT王子 更新时间:2023-10-29 02:02:54 34 4
gpt4 key购买 nike

我有以下任务:

- name: Set default log options for Splunk
set_fact:
log_options_base:
tag: "{{ '{{' }}.ImageName{{ '}}' }}/{{ '{{' }}.Name{{ '}}' }}/{{ '{{' }}.ID{{ '}}' }}"
splunk-token: "{{ splunk_token }}"
splunk-url: "{{ splunk_url }}"
splunk-format: "json"
splunk-index: "my-dx"
labels: "{{ env }}"
when:
- log_driver is defined
- log_driver == 'splunk'
- name: Set extendend log options for Splunk
set_fact:
log_options_ext: "{{ log_options_base | combine({ 'env': NODE_ENV }) }}"
when:
- log_options_base != ""

很遗憾,我遇到了以下问题:

模板化字符串时出现模板错误:意外的“.”。字符串:{{.ImageName}}/{{.Name}}/{{.ID}}\n\n

“条件检查 'log_options_base !=\"\"' 失败。

问题肯定出在 golang 模板上,但在我的案例中它已经被转义了。

有什么想法吗?

最佳答案

when 语句本身是一个 Jinja2 表达式,因此 Ansible 会尝试再次评估您的字符串。

你应该擅长 !unsafe在这种情况下键入:

- name: Set default log options for Splunk
set_fact:
log_options_base:
tag: !unsafe "{{.ImageName}}/{{.Name}}/{{.ID}}"

但是我没怎么用过这个语法技巧,所以可能会有一些副作用,在生产使用前测试一下。

附言为什么要将 dict var log_options_baselog_options_base != "" 中的空字符串进行比较?可能是您想要已定义测试?

关于go - 在 Jinja2 模板中转义 golang 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45554173/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com