Puppet Dev/Test サーバーの git 構成は次のようになります。
- 開発者は自分の /home ディレクトリに作業ディレクトリを持っており、ここで実際に構成を変更します。
- 変更は、各作業ディレクトリから中央のベア リポジトリにプッシュされます。
- 変更は、テストが行われる Development ディレクトリに取り込まれます。
- その後、変更は本番リポジトリにプルされます。ただし、本番リポジトリでは、開発からのホスト固有の情報を持つ manifests/ ディレクトリを無視したいと考えています。運用リポジトリには他のマニフェストが含まれるか、マニフェストを他の場所で制御できないようにするという考えです。
リポジトリからディレクトリを削除し、.gitignore ファイルにエントリを追加するgit status
と、本番リポジトリにコミットする必要がある変更 (削除されたディレクトリ) があり、開発リポジトリよりも 1 つコミットされていることがわかります。
私が見つけたのは、ファイルシステムにディレクトリを残しながら.gitignoreにディレクトリを追加することで、これが軽減されることです。ただし、Production manifests ディレクトリにホストの別のリストを保持することを選択した場合、状況はすぐにナシ型になる可能性があります。
他に考えられる唯一の方法は、Dev マニフェストとモジュール ディレクトリに個別のリポジトリを作成することです。これにより、マニフェストをそのままにして、モジュールの更新を Prod に取り込むことができます。次に、/home ディレクトリ リポジトリから別のリポジトリ チェーンを作成し、Production マニフェストだけを格納するための新しい中央のベア デポを介して、そこから個別にプルすることができます。ただし、Production ディレクトリの下に既に git リポジトリを作成しているため、これはスターターではないことがわかります。1 つのディレクトリを 2 つのリポジトリで提供することはできませんね。
おそらく、マニフェストとモジュールの各ディレクトリの git リポジトリをそれらのディレクトリの下に配置する必要があります。
それは実行可能な方法ですか?この問題に対する他の一般的な解決策はありますか? 私はgitにかなり慣れていないので、gitがどれほど堅牢であるかに精通していません。
編集:私がやろうとしていることを表す図へのリンク: Puppet git repo diagram。各環境でノードの個別のマニフェストを保持したい理由がわかります。