2014-01-09 2 views
1

Есть ли какие-либо инструменты, такие как приложение для миграции базы данных Django South, но для переноса всех конфигураций сервера?Миграция системных конфигураций

Я управляю несколькими конфигурациями сервера полностью из источника управления. Код приложения Django, конфигурация Apache, конфигурация балансировки нагрузки, списки пакетов Ubuntu, все указано в файле конфигурации и развертывается с помощью команд Fabric. Однако мне все же необходимо вручную определить, что изменилось, и решить, какие команды развертывания выполняться последовательно, чтобы сервер соответствовал моим файлам конфигурации.

В идеале, я бы хотел управлять своими серверами таким образом, что Юг управляет моей схемой базы данных. После того, как я изменил свой код, мне нужно было бы сгенерировать «миграцию схемы», которая определяла бы необходимость перезаписывать Apache.conf, загружать статические носители, устанавливать новый системный пакет и т. Д. .

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

Кто-нибудь знает об инструменте с этой функциональностью?

ответ

0

Мы используем EntryPoints.

У нас есть простой инструмент, который вызывает все точки входа, которые он может найти.

Наиболее часто используемой точкой входа для нас является «перезагрузка».

В «перезагрузке» документы обновляются, файл wsgi затрагивается для перезапуска рабочих процессов. И если есть необходимость в изменении файловой системы (глупый пример: переименовать каталог «temp» в «tmp»), сделайте это.

Этот инструмент не отслеживает историю того, что уже было сделано. Это означает, что каждый перезапуск проверяет, существует ли еще временная директория. Это Idempotence.

До сих пор перезагрузка по-прежнему достаточно быстро. Каждая реализация EntryPoint может использовать какой-то ярлык, чтобы проверить, выполнено ли это (например, «коснитесь» файла «var/entrypoints/do-foo.done»).

Для этого мы не используем команду управления django, потому что мы используем ее для настройки систем. Если система настроена, django пока недоступен.

Но имейте в виду: конфигурация лучше, чем программирование. Если для нескольких приложений нужны символические ссылки, лучше реализовать одну точку входа, которая запрашивает (за каждую точку входа) другие приложения: какие символические ссылки вам нужны?

Смежные вопросы