Я начал запускать cfengine3, используя cf-execd для планирования запусков cf-agent с интервалом по умолчанию каждые 5 минут.
cf-execd захватывает вывод cf-agent (который запускается с параметром --inform), сохраняет вывод в каталоге $ WORKDIR / output, а также отправляет результат по электронной почте (но только если он отличается от последнего запуска). Как вы можете себе представить, с выходным файлом каждые 5 минут этот каталог быстро заполнится большим количеством файлов, и ожидается, что пользователь очистит этот каталог.
Я создал правило, которое удалит эти выходные файлы, возраст которых превышает 3 дня, однако проблема, которую это создает, заключается в том, что каждый вывод будет отличаться от предыдущего (поскольку каждый раз будет удаляться новый файл), поэтому электронное письмо будет послал. Так что я перехожу от большого количества файлов в каталоге выходов к большому количеству писем в моем почтовом ящике!
Чего я действительно хотел бы, так это подавления сообщений при восстановлении определенных обещаний, особенно того, который удаляет файлы в каталоге выходов. По сути, это отменит параметр -I только для этого обещания. В качестве альтернативы, если бы я мог изменить временную границу с «сейчас» на фиксированную точку (скажем, каждую среду), я мог бы хотя бы ограничить количество писем до одного в неделю.
Похоже, вы так и не получили ответа на свой вопрос, поэтому я публикую его сейчас в духе «лучше поздно, чем никогда».
Ты спрашивал:
Чего я действительно хотел бы, так это подавления сообщений при восстановлении определенных обещаний, особенно того, который удаляет файлы в каталоге выходов. По сути, это аннулирует параметр -I только для этого обещания.
Насколько мне известно, невозможно отменить переключатель --inform для одного обещания.
В качестве альтернативы, если бы я мог изменить временную границу с «сейчас» на фиксированную точку (скажем, каждую среду), я мог бы хотя бы ограничить количество писем до одного в неделю.
Этого можно добиться с помощью параметра «ifelapsed» - он дает минимальную частоту выполнения обещания. Рассмотрим этот пример:
bundle agent garbage_collection { files: "$(sys.workdir)/outputs" delete => tidy, file_select => days_old("3"), depth_search => recurse("inf"), action => weekly; } body action weekly { ifelapsed => 10080; # one week, ie (60*24*7) minutes }
Или вы можете просто запускать это обещание по средам, используя специальный класс. Я предпочитаю ifelapsed
подход, который не зависит от буднего дня (вы никогда не знаете, может ли этот хост не работать в одну среду ...), например:
bundle agent garbage_collection { files: Wednesday:: "$(sys.workdir)/outputs" delete => tidy, file_select => days_old("3"), depth_search => recurse("inf"); }
На самом деле я пришел к еще более простому ответу - не запускайте cf-agent с --inform.
Просто позвольте cf-engine сделать это, и не пытайтесь отслеживать, какие ремонты выполняются, основная проблема заключается в том, что система пришла в желаемое состояние, а не как она туда попала.
Это может показаться анафемой режиму управления изменениями, который хочет отслеживать каждое изменение в системе с мельчайшими подробностями, однако я обнаружил, что это единственный образ мышления, который позволяет использовать cf-engine, оставаясь при этом в здравом уме.
Конечно, ваш ответ на заданный мною вопрос был строго правильным, поэтому я поставил галочку.
В моем «унаследованном» развертывании я обнаружил, что garbage_collection
связка уже в site.cf
, но ниоткуда не звонили. Мне нужно добавить последовательность пакетов в promises.cf
Не уверен, будет ли это так в новом развертывании; если да, возможно, вам нужно обновить свои обещания (я знаю, что мне нужно)
Надеюсь, это поможет, Кэмерон