0

私の要件によると、すべてのサーバーでrpmが同じである可能性がありますが、本番、ステージング、テストなどのサーバー環境ごとに1つの構成ファイルのみが変更されます。すべてのサーバーの構成ファイルのバンドルがありますが、仕様ファイルにハードコードしたくないか、すべてのサーバーに異なる rpm を作成することはできません。クライアントに rpm をインストールするときに構成ファイルの名前を指定することは可能です。側。

4

2 に答える 2

0

おそらくこれの繰り返しなので、そこから回答をコピーします...


ネイティブな方法はないと思います。私は%postあなたが指摘したようにします。

ただし、私はこれを行います(仕事用に開発した内部専用パッケージで行うことと同様です):

  1. /etc/name.conf-developer/etc/name.conf-liveなどの3 つの別個のファイル。
  2. 3 つのパッケージすべてが仮想パッケージを提供するようにします。name-config
  3. メインパッケージにrequiredを持たせるname-config
    • これによりrpm、、、yumまたは少なくとも 1 つが同じトランザクションにインストールされる必要があるものが作成されます。
  4. 3 つのパッケージすべてが互いに競合するようにする
  5. 各構成パッケージ%post(および場合によっては)の適切な構成への %verifyシンボリック リンクを設定します。/etc/name.conf
    • これは、何が起こっているかをユーザーに示すのにも役立ちます

短所:

  1. それは少しハックです
  2. rpm --whatprovides /etc/name.confどのパッケージにも所有されていないと言うでしょう
于 2012-12-04T23:34:23.160 に答える
0

アーロンの答えはそれを行う良い方法です。別のオプションとして、bash if ステートメントを使用して、構成ファイルの %post セクションでホスト名 (*prod など) に基づいて sed コマンドを実行する方法があります。これにより、環境に応じて特定の変数を置き換えることができます。設定のセットアップがどのように見えるかわからないので、明らかにこれは高レベルの例です。残念ながら、これは悪いパッケージがどのように見えるかの例です。構成ファイルを RPM から移動し、SaltChef、またはPuppetの使用を開始することをお勧めします。これは、これらが達成するように設計された種類のタスクであるためです。

于 2012-12-05T05:02:52.733 に答える