带有 ip 验证的 Puppet ruby 模板 - 跳过失败值而不是错误并停止
Puppet ruby template with ip validation - skip failed values not error and stop
我在 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 -%>
干杯
我设法让它与以下代码一起工作。我唯一无法添加的是仅在最后一个条目之后的尾随换行符。对如何改进此块的任何评论表示赞赏。
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 -%>
我在 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 -%>
干杯
我设法让它与以下代码一起工作。我唯一无法添加的是仅在最后一个条目之后的尾随换行符。对如何改进此块的任何评论表示赞赏。
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 -%>