gpt4 book ai didi

ansible - 没有换行符到空格转换的 yaml 多行语法

转载 作者:行者123 更新时间:2023-12-04 21:56:44 33 4
gpt4 key购买 nike

我有这样的字典:

env: qat
target_host: >
{%if env in ['prd'] %}one
{%elif env in ['qat','stg'] %}two
{%else%}three
{%endif%}

当我打印它时,我得到:

ok: [localhost] => { "var": { "target_host": "two " } }



所以它将行尾的\n 转换为空格。这正是它应该做的。但是,在这种情况下,我只是试图将行展开以使 if/else 的结构更具可读性,并且我不想要额外的空间。如果我将所有内容放在没有 > 的一行上,它会按预期工作,但我希望能够使其多行,以便更容易阅读。

我发现了这个问题
Is there a way to represent a long string that doesnt have any whitespace on multiple lines in a YAML document?

所以我可以这样做:
env: qat
target_host: "{%if env in ['prd'] %}one\
{%elif env in ['qat','stg'] %}two\
{%else%}three\
{%endif%}"

这给出了想要的结果。

有没有办法做到这一点而不会使其更加困惑?

最佳答案

在 Jinja* 中,您可以通过在块的开头/结尾添加减号来去除空格/换行符。这应该可以解决问题:

env: qat
target_host: >
{%if env in ['prd'] -%}one
{%- elif env in ['qat','stg'] -%}two
{%- else -%}three
{%- endif%}

* Jinja 2是 Ansible 使用的模板引擎。

关于ansible - 没有换行符到空格转换的 yaml 多行语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31060182/

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