带有 ip 跳过失败值的木偶红宝石模板不会出错并停止



我在 Puppet (ruby( .erb 模板中有以下代码,对从数组迭代的每个值都有一个验证函数。 我希望它继续下一个值,最好发出警告,或者静默地继续。 下面的代码错误并在条目未通过验证时停止。

例如,如果数组是 $nameservers = ['1.1.1.1','/some.domain/2.2.2.2'],我希望它只处理 1.1.1.1 条目。

这实际上是为了让我可以对/etc/resolv.conf 或/etc/dnsmask.conf 使用相同的输入数组,由我的清单中的其他逻辑确定,该逻辑由 2 个模板之一处理(不,我没有疯(:)。

我知道验证可以在清单或顶部范围变量上完成,但是我需要在模板中执行此操作。

search <%= scope.lookupvar('dns_search') %>
<% scope.lookupvar('nameservers').each do |server| -%>
<% if scope.function_validate_ip_address([server]) -%>
nameserver <%= server -%>
<% end -%>
<% end -%>

干杯

我设法让它使用以下代码。 我唯一无法添加的是仅在 LAST 条目之后的尾随换行符。 关于如何改进此块的任何评论都值得赞赏。

search <%= scope.lookupvar('dns_search') %>    
<% scope.lookupvar('nameservers').each do |server| -%>    
<% begin -%>    
<% if scope.function_validate_ip_address([server]) %>    
nameserver <%= server -%>    
<% end -%>    
<% rescue => e -%>    
<% scope.call_function('warning',[e]) -%>    
<% next %>    
<% end -%>    
<% end -%> 

最新更新