3

我有一个非常简单的要求,但我已经尝试了所有我能想到的转义序列,但无法获得所需的输出。

我需要直接输出到文件中:

%{VAR}

这是我的 YAML 文件:

myclass::outputstuff:
    - Heres a litteral var %{VAR}
    - Heres something else %{SOMETHING}

还有我的template.erb:

<%= @outputstuff.each do | ostuff | -%>
<%= ostuff -%>
<% end -%>

但它就像这样,它输出:

Heres a litteral var
Heres something else

如果我按照其他帖子的建议添加一个百分号%%{VAR},它会输出:

Heres a litteral var %
Heres something else %

如果我像%\{VAR}输出一样添加反斜杠:

Heres a litteral var %\{VAR}
Heres something else %\{SOMETHING}

我需要这个大声笑:

Heres a litteral var %{VAR}
Heres something else %{SOMETHING}
4

4 回答 4

5

使用 Hiera 3.3.1,您可以在 YAML 中使用它:

%%{}{EXAMPLE}

这将输出这个文字:

%{EXAMPLE}
于 2017-04-07T20:51:05.723 回答
2

从 v2.0.0 开始,有这个literal功能,这是更“正确”的方法:

%{literal('%')}{VAR}
于 2015-11-15T02:42:53.547 回答
1

我设法让它工作的唯一方法是这种hacky方式,在这里找到

基本上我将 template.erb 更改为:

    <%- @oupputstuff.each do | ostuff | -%>
    <%- if ostuff -%>
    <%= ostuff.gsub(/___/, '%') %>
    <%- end -%>
    <%- end -%>

然后在 YAML 文件中:

myclass::outputstuff:
    - Heres a litteral var ___{VAR}
    - Heres something else ___{SOMETHING}

非常令人惊讶的是,正常的转义序列都不起作用大声笑

于 2015-11-15T14:09:30.587 回答
0

我需要一种方法来表示在%{VAR}Hiera 1.x 和 2.x 中都可以使用的文字字符串,这样我在升级过程中就不会出现任何问题。

这是我想出的愚蠢技巧,它在 1.3.4 和 2.0.0 中都适用于我:

---
"%": "%"

myclass::outputstuff:
  - "Heres a literal var %{hiera('%')}{VAR}"

插值后——在任一 Hiera 版本中——计算结果为:

{"%":"%","myclass::outputstuff":["Heres a literal var %{VAR}"]}

当然,这会导致额外的%密钥四处飘荡,但这不会造成任何伤害。然后,升级后我可以切换到%{literal('%')},并删除额外的 YAML 条目。

于 2017-01-26T20:32:37.190 回答