Шаблон Puppet ruby с проверкой IP-адреса - пропустить ошибочные значения, а не ошибки и остановить - PullRequest
0 голосов
/ 07 января 2020

У меня есть следующий код в шаблоне Puppet (ruby) .erb с функцией validate для каждого значения, которое повторяется из массива. Я хочу продолжить со следующими значениями и, предпочтительно, выдать предупреждение или молча продолжить. Приведенный ниже код ошибки и останавливается, если запись не проходит проверку.

Например, если массив $ nameservers = ['1.1.1.1', '/ some.domain / 2.2.2.2'] Я хочу, чтобы это только обработать запись 1.1.1.1.

Это на самом деле, поэтому я могу использовать тот же входной массив для /etc/resolv.conf или /etc/dnsmask.conf, как определено другими логами c в моем манифесте это обрабатывается одним из 2 шаблонов (нет, я не сумасшедший):).

Я знаю, что проверка может быть выполнена в манифесте или в переменных верхней области видимости, однако мне нужно это сделать в шаблоне.

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

<% end -%>
<% end -%>

Ура

1 Ответ

0 голосов
/ 07 января 2020

Мне удалось заставить его работать со следующим кодом. Единственное, что я не могу добавить - это завершающий перевод новой строки только после последней записи. Любые комментарии о том, как этот блок может быть улучшен, приветствуются.

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 -%> 
...