主厨ERB模板与Logstash Grok模式问题

时间:2016-06-10 20:46:38

标签: chef erb chef-recipe chef-template

我有一个logstash配置文件,我需要将其转换为主厨erb模板(主要是过滤器部分)。但是,由于grok模式的格式,我一直在遇到问题。 以下是grok模式的示例。

<%

这是问题所在。在此之后不久,我需要在IP地址等中填充一些插值。但它不会因为mutate { add_field => {"[@metadata][sentry][msg]" => "%{host}" "[@metadata][sentry][severity]" => "%{severity}" "[@metadata][sentry][host]" => "<%= @sentry_host[:ipaddress] %>" "[@metadata][sentry][pid]" => "<%= @sentry_pid %>" "[@metadata][sentry][key]" => "<%= @sentry_key %>" "[@metadata][sentry][secret]" => "<%= @sentry_secret %>" } } 开始自己的插值。

<%= @sentry_... %>

因此,上述所有值都将作为<%%{POSINT:seqnum1}>%{POSINT:seqnum2}:%>

的字符串处理

有没有办法解决这个问题?我尝试了%> here的转义方法。但它仍然将结束{{1}}放进去。还有其他方法来转义ERB中的字符/字符串吗?

谢谢! 约什

1 个答案:

答案 0 :(得分:0)

您不想在文本中加入%><%%成为文字<%,并且不需要配对的结尾标记。

erb -x的编辑示例:

$ echo '<%% foo <%= asdf %> bar <%= baz %>' | erb -x
#coding:ASCII-8BIT
_erbout = ''; _erbout.concat "<% foo "; _erbout.concat(( asdf ).to_s); _erbout.concat " bar "; _erbout.concat(( baz ).to_s); _erbout.concat "\n"
; _erbout.force_encoding(__ENCODING__)