У меня есть собственный кукольный факт (написанный в рубине), который выполняет простой скрипт bash. Скрипт проверяет все файлы в файловой системе для общедоступных разрешений и соответственно возвращает результаты. Кукольный факт проверяет вывод сценария и возвращает «fail», если вывод сценария не равен null.Как запланировать кукольные пользовательские факты для выполнения каждые X часов?
Проблема заключается в том, что сценарий является ресурсоемким, и я не хочу, чтобы он выполнялся каждые 30 минут (клиентский puppet.conf: runinternval = 1800).
Я пробовал использовать ресурс «расписание», но из-за того, как марионетки работают, это влияет только на класс, который я использую, чтобы оценить результат этого факта. Факты кукол оцениваются на каждом марионетке, независимо от чего-либо еще. (тем самым делая их доступными для ресурсов)
Я также попытался переместить код, выполняющий скрипт bash, из факта и в класс кукол, но, похоже, вы не можете оценить вывод сценария bash (используя " exec ") и сохранить его в переменной (опять же, из-за способа кукольных работ).
Теперь я сокращен, чтобы попытаться применить какой-то механизм планирования с использованием языка Ruby и реализовать его в этом факте. Я немного читал о PStore, и сейчас это похоже на хорошее направление.
Кто-нибудь знает, как я могу сделать рубиновый скрипт выполненным только ночью? Я не могу использовать crontab, потому что код будет выполняться марионеткой.
Фрагмент кода из класса кукольный:
if $::myfact == 'fail' {
notify { "warning blah blah...":
loglevel => err,
schedule => 'night',
}
}
Фрагмент кода из кукольного факта:
require 'facter'
Facter.add(:myfact) do
setcode do
if File.exists? '/usr/local/puppet/scripts/myscript.sh'
result = Facter::Util::Resolution.exec("/usr/local/puppet/scripts/myscript.sh")
if result != ''
puts "Result of myfact is: \n #{result}"
'fail'
end
end
end
конец
«... используя запланированное задание для выполнения оценки ...» Это означает, что мне нужно усложнить мой куковый код crontabs и локальным кешем, не так ли? – amirb
@amirb в отличие от усложнения вашего кода факта тем же, да. Да, вы должны это сделать. –