私の要件によると、すべてのサーバーでrpmが同じである可能性がありますが、本番、ステージング、テストなどのサーバー環境ごとに1つの構成ファイルのみが変更されます。すべてのサーバーの構成ファイルのバンドルがありますが、仕様ファイルにハードコードしたくないか、すべてのサーバーに異なる rpm を作成することはできません。クライアントに rpm をインストールするときに構成ファイルの名前を指定することは可能です。側。
1032 次
2 に答える
0
おそらくこれの繰り返しなので、そこから回答をコピーします...
ネイティブな方法はないと思います。私は%post
あなたが指摘したようにします。
ただし、私はこれを行います(仕事用に開発した内部専用パッケージで行うことと同様です):
/etc/name.conf-developer
、/etc/name.conf-live
などの3 つの別個のファイル。- 3 つのパッケージすべてが仮想パッケージを提供するようにします。
name-config
- メインパッケージにrequiredを持たせる
name-config
- これにより
rpm
、、、yum
または少なくとも 1 つが同じトランザクションにインストールされる必要があるものが作成されます。
- これにより
- 3 つのパッケージすべてが互いに競合するようにする
- 各構成パッケージ
%post
(および場合によっては)の適切な構成への%verify
シンボリック リンクを設定します。/etc/name.conf
- これは、何が起こっているかをユーザーに示すのにも役立ちます
短所:
- それは少しハックです
rpm --whatprovides /etc/name.conf
どのパッケージにも所有されていないと言うでしょう
于 2012-12-04T23:34:23.160 に答える
0
アーロンの答えはそれを行う良い方法です。別のオプションとして、bash if ステートメントを使用して、構成ファイルの %post セクションでホスト名 (*prod など) に基づいて sed コマンドを実行する方法があります。これにより、環境に応じて特定の変数を置き換えることができます。設定のセットアップがどのように見えるかわからないので、明らかにこれは高レベルの例です。残念ながら、これは悪いパッケージがどのように見えるかの例です。構成ファイルを RPM から移動し、Salt、Chef、またはPuppetの使用を開始することをお勧めします。これは、これらが達成するように設計された種類のタスクであるためです。
于 2012-12-05T05:02:52.733 に答える