cfengine3 file_copy только при изменении на стороне источника

Я использую метод "дайджест" копирования для всех обещаний копирования файлов, поскольку из-за того, как мы упаковываем и разворачиваем программное обеспечение, я не могу полагаться на mtime в качестве критериев для обновления файлов. По разным причинам я не использую клиент-серверный подход с сервером центральной конфигурации: скорее мы упаковываем и разворачиваем весь наш модуль конфигурации на каждом сервере, поэтому с точки зрения cf-engine, источник и цель являются локальными на сервере. Бег.

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

Однако, как и многие другие пользователи cfengine, мы работаем в операционной среде, в которой иногда необходимо немедленно применять экстренные исправления - это означает, что у нас нет времени на перестройку и повторное развертывание модуля конфигурации, а исправление часто будет применяться путем развертывания тарбол с конкретными изменениями. Конечно, это проблематично, если cf-engine приходит через 5 минут и отменяет изменения.

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

Итак, после всего этого мой вопрос заключается в следующем: способен ли cf-engine определять, изменился ли источник или цель, когда файлы различаются, и если да, то это способ использовать метод "дайджест", но только если сторона источника изменилась? Я также очень открыт для других идей и подходов, так как я все еще новичок в этом деле управления конфигурацией.

2 ответа

Единственный способ узнать, изменились ли источник или цель, это использовать отметку времени, что cfengine делает хорошо. Может быть, вы думаете об этом. В общем, я думаю, что вы либо позволяете cfengine управлять, либо делаете это вручную. Если вы ищете средний путь, вам не хватает дисциплины, и вы скоро совершите ошибку. Я бы просто пошел с автоматизацией.

Почему бы не поместить свою конфигурацию в систему управления версиями, обновив ее вместо перезаписи? Вместо копировальных файлов,

hg pull -u

или же

svn update

Инструмент управления ревизиями будет обрабатывать локальные изменения для вас, пока у вас не появится возможность зафиксировать и отправить их обратно в центральное хранилище.

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