Назад | Перейти на главную страницу

Какой предпочтительный подход к развертыванию приложения Python с использованием RPM?

Я новичок в области разработки и эксплуатации, и я работал над тем, чтобы приложение Python было упаковано в RPM (используя python setup.py bdist_rpm), развернутое на виртуальной машине centos через Yum. Chef используется для управления виртуальной машиной. Приложение Python будет работать в virtualenv как часть процесса непрерывного развертывания.

Должен ли RPM быть умным и автономным, выполняя такие операции, как создание / запуск среды virtualenv, установка необходимых зависимостей по протоколу и, наконец, настройка процесса инициализации (в данном случае для запуска процесса сервера uwsgi REST для virtualenv)?

Или должен ли рецепт Chef управлять построением зависимостей virtualenv и pip-install, при этом сам RPM выполняет простую установку python setup.py для загрузки моих модулей Python в папку virtualenv pythonX.Y / site-packages?

Последующий вызов «yum install / переустановка» (скажем, через автоматизированный процесс) будет работать для любого подхода, но первый требует более сложного RPM, что, возможно, не является «лучшей практикой», верно? Первый допускает автономную установку, которую можно было бы более аккуратно удалить позже, и лучше разделяет проблемы между разработчиком (Python) и разработчиками (Chef). Пожалуйста, посоветуйте, что «обычно» делается.

это Поваренная книга шеф-повара кажется довольно хорошей. Он обеспечивает поддержку того, чем вы хотите заниматься. Что касается того, что обычно делается, я могу подходить к нему только с точки зрения Puppet, но я не вижу причин добавлять такого рода сложности к RPM, когда это легко поддерживается кулинарной книгой. Вы просто создаете больше работы для себя позже, когда вам нужно внести изменения, и усложняете поддержку другим пользователям.