web-dev-qa-db-ja.com

RPMを使用してPythonアプリをデプロイするための好ましいアプローチは何ですか?

私はdev-ops側に不慣れで、PythonアプリケーションをRPMにパッケージ化する(python setup.py bdist_rpmを使用)ように取り組んできました。 centos VMYum経由。 ChefはVMの管理に使用されます。 Pythonアプリは、継続的デプロイプロセスの一部としてvirtualenv内で実行されます。

RPMがスマートで自己完結型である場合は、virtualenv環境の作成/開始、必要な依存関係のpipインストール、最後にinitプロセスの構成(この場合はuwsgi RESTサーバーの開始)などの操作を実行します。 virtualenvのプロセス)?

または、Chefレシピがvirtualenvの構築とpip-installing依存関係を管理し、RPM自体が単純な「pythonsetup.py install」を実行して、PythonモジュールをvirtualenvのpythonX.Y/site-にロードする必要があります。パッケージフォルダ?

'yum install/reinstall'呼び出しのフォロー(たとえば自動化されたプロセスを介して)はどちらのアプローチでも機能しますが、前者はより複雑なRPMを必要とし、「ベストプラクティス」ではない可能性があります。前者は、後でよりクリーンに削除できる自己完結型のインストールを可能にし、開発者(Python)と開発者(Chef)の間の懸念をより適切に分離します。 「通常」行われていることについてアドバイスしてください。

5
woodbon

これ シェフの料理本はかなり良いようです。それはあなたがやろうとしていることをサポートします。通常行われていることについては、Puppetの観点からしかアプローチできませんが、クックブックで簡単にサポートされている場合、RPMにそのような複雑さを追加する理由はわかりません。後で変更を加える必要があるときに、自分でより多くの作業を作成するだけで、他のユーザーがサポートするのが難しくなります。

0
Forrest