Можно ли подавить конкретный сообщения об ошибках при запуске манифеста Puppet?
Следующий фрагмент кода активирует и запускает iptables, если существует файл / etc / sysconfig / iptables. Он работает нормально, но «Проверить файл правил iptables» генерирует сообщение об ошибке, которое я хотел бы скрыть. Я проверил (v2.7) docs параметры типа ресурса exec и погуглил, но не повезло.
cat init.pp
service { "iptables":
enable => true,
ensure => running,
require => Exec["Check for iptables rulesfile"];
}
exec { "Check for iptables rulesfile":
command => "/usr/bin/test -f /etc/sysconfig/iptables",
returns => "0";
}
puppet apply --debug init.pp
...
err: /Stage[main]//Exec[Check for iptables rulesfile]/returns: change from notrun to 0 failed: /usr/bin/test -f /etc/sysconfig/iptables returned 1 instead of one of [0] at init.pp:12
...
warning: /Stage[main]//Service[iptables]: Skipping because of failed dependencies
Есть предположения?
P.S. Да, я понимаю, что это неправильный способ управления правилами брандмауэра с помощью Puppet.
Я так понимаю, вы хотите, чтобы служба iptables была включена и работала только при наличии / etc / sysconfig / iptables. Одним из простых вариантов было бы создать настраиваемый факт с именем iptables (или что угодно, что вам нравится) и использовать это логическое значение, чтобы решить, выполнять ли служебный блок или нет. Например:
Создайте собственный факт в вашем модуле в $ module_name / lib / facter:
Facter.add("iptables") do
setcode do
if Facter::Util::Resolution.exec('test -f /etc/sysconfig/iptables') then
"true"
else
"false"
end
end
end
Тогда в вашем служебном блоке есть что-то вроде этого:
if $::iptables == "true" {
service { "iptables":
enable => true,
ensure => running,
}
}
Это выполнит этот служебный блок, только если этот файл существует. Я думаю, что ты этого хочешь.
Боско предлагает очень хорошее решение.
Ваш хак тоже может сработать, попробуйте лог-уровень метапараметр.
exec { "Check for iptables rulesfile":
command => "/usr/bin/test -f /etc/sysconfig/iptables",
loglevel => "debug",
returns => "0";
}
Обратите внимание, что сервисный ресурс воля пожаловаться на неудачные зависимости.