Выходной каталог cfengine3

Я начал запускать cfengine3, используя cf-execd для планирования запусков cf-agent с интервалом по умолчанию каждые 5 минут.

cf-execd захватывает выходные данные cf-agent (который запускается с опцией --inform), сохраняет выходные данные в каталоге $WORKDIR/output и также отправляет результат по электронной почте (но только если он отличается от последнего запуска). Как вы можете себе представить, с выходным файлом каждые 5 минут, этот каталог будет быстро заполняться большим количеством файлов, и ожидается, что пользователь очистит этот каталог.

Я создал правило, которое будет удалять эти выходные файлы, которые имеют возраст более 3 дней, однако проблема, которую это создает, заключается в том, что каждый выходной файл будет отличаться от предыдущего (так как новый файл будет удаляться каждый раз), следовательно, электронное письмо будет послал. Поэтому я перехожу от множества файлов в директории выходных данных к большому количеству писем в моем почтовом ящике!

Что мне действительно хотелось бы, так это подавлять сообщения, когда исправляются определенные обещания, особенно то, которое удаляет файлы в выходном каталоге. По существу, это отменит опцию -I только для этого обещания. В качестве альтернативы, если бы я мог изменить временную границу с "сейчас" на фиксированную точку (скажем, каждую среду), я мог бы, по крайней мере, ограничить количество писем до одного в неделю.

3 ответа

Решение

Похоже, вы так и не получили ответ на свой вопрос, поэтому я публикую это сейчас в духе "лучше поздно, чем никогда".

Вы спрашивали:

Что мне действительно хотелось бы, так это подавлять сообщения, когда исправляются определенные обещания, особенно то, которое удаляет файлы в выходном каталоге. По существу, это отменит опцию -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");
}

В моем "унаследованном" развертывании я обнаружил, что garbage_collection связка уже в site.cf, но это не было вызвано ниоткуда. Мне нужно добавить последовательность последовательности в promises.cf

Не уверен, что так будет в новом развертывании; если так, возможно, вам нужно обновить свои обещания (я знаю, что мне нужно)

Надеюсь, это поможет, Кэмерон

На самом деле я пришел к еще более простому ответу - не запускайте cf-agent с --inform.

Просто позвольте cf-engine делать свое дело и не пытайтесь отслеживать, какие ремонтные работы выполняются, главное, чтобы система прибыла в желаемое состояние, а не как она туда попала.

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

Конечно, ваш ответ был строго правильным на вопрос, который я поставил, поэтому я поставил галочку.

Другие вопросы по тегам