web-dev-qa-db-ja.com

gitを使用したパペットモジュールの管理

システムを管理するためにDebian7で実行されているpuppet/foremanサーバーがあります。コミュニティバージョン3.7のpuppetand foreman1.6.0を使用しています。私はディレクトリ環境を使用しています。

現時点では、Subversionで制御される開発環境でモジュールを作成し、外部ディレクトリにエクスポートして、それらのパペットモジュールをビルドする(パペットモジュールビルド...)という、かなり複雑なワークフローを使用しています。それを本番環境にインストールします。 Subversionを使用して本番環境に分岐/タグ付けすることを検討しましたが、思い出せない理由で当時は除外しました。

その間、私は少しgitを学び、Subversionの代わりにgitを使用したいと思いました。私の質問は、そうするためのベストプラクティスがあるかどうかです。少なくとも2つのアプローチがあり、どちらにも長所と短所があります。 1つは、環境開発をバージョン管理下に置き、これを本番環境に複製/分岐することです。 2つ目は、すべてのモジュールのgitリポジトリを作成して、それらを環境に複製することです。

私が言ったように、私はgitに不慣れなので、その長所と短所の本当の手がかりはありません。また、人形と職長を約8ヶ月間使用しています。

乾杯、クリストフ

5
Christoph

答えは、バージョン管理の方法によって異なります。主なアプローチはいくつかあります。

  1. すべてを単一のフラットなGitリポジトリに格納し、マスター(またはマスターレスを実行している場合はノード)にクローンします。

    これははるかに簡単なオプションですが、本番環境と開発環境全体で同じモジュールの複数のコピーがあることを意味します(ただし、シンボリックリンクで回避できます)。


  1. メインのPuppetコードを単一のGitリポジトリに配置し、Gitサブモジュールがカスタムモジュールを指すようにします。展開は上記と同じですが、--recursivegit cloneが追加されています。

    このアプローチの利点は、外部モジュール( PuppetLabs Apach eモジュールなど)を簡単に参照でき、アップストリームの変更を比較的簡単に取り込むことができることですが、また、厄介なことで有名なGitサブモジュールを処理する必要があるというオーバーヘッドもあります。


  1. 独自のPuppetForgeを実行し、 Librarian-puppet または R10K を使用してモジュールのインストールを管理します。

    これには、モジュールのバージョンを公開せずに SemVer を介して完全に制御できるという利点がありますが、独自のPuppetForgeをロールすることは依然として「ブリーディングエッジ」と見なされます"一部によって。

6
Craig Watson