サーバー構成ファイルのリビジョン管理を使用できるようにするためのソリューションは何ですか?[閉まっている]


85

複数のシステム管理者がいる環境では、サーバー構成ファイルをリビジョン管理システムに追加することにはいくつかの利点があります。最も注目に値するのは、変更を追跡する機能、変更を行ったユーザー、そしてもちろん、既知の作業構成にロールバックできることです。

主にUnix / Linuxソリューションに興味がありますが、Windowsの実装にも興味があります。


複製したり、この質問に非常に関連しているようだserverfault.com/questions/3852/...
Zoredache

回答:


52

私はこれを自宅(〜3ホスト)でさまざまなscms(RCS、Subversion、git)で試してみました。私にとって今完璧に機能するセットアップは、setgitpermsフック付きgit です。

あなたが考慮する必要があるもの:

ファイルのアクセス許可と所有権の処理

  • RCS:これをネイティブに行います
  • Subversion:最後に試したところ、svnこれを行うにはラッパーが必要でした
  • git:setgitpermsフックはこれを透過的に処理します(post-checkoutただし、フックをサポートするかなり新しいバージョンのgitが必要です)

また、/etcバージョン管理下のすべてではなく、実際に変更したファイル(私のように)だけが必要な場合は、この種の使用をサポートするscmが必要になります。

  • RCS:とにかく単一のファイルでのみ動作します。
  • Subversion:これには注意が必要です。
  • git:probemはありません。*トップレベルの.gitignoreファイルに「」を入れ、使用したいファイルのみを追加しますgit add --force

最後に、下にいくつかの問題のディレクトリがある/etcし、いくつかのプログラムまたはデーモン(によって読み込まれたパッケージが設定スニペットをドロップできる場所/etc/cron.d/etc/modprobe.dなど)。これらのプログラムの中には、RCSファイル(cronなど)を無視するのに十分なスマートなものとそうでないもの(modprobeなど)があります。.svn ディレクトリについても同じです。再びgitに大きなプラス(トップレベル.git ディレクトリを1つだけ作成します)。


1
Subversionにはasvn svn.collab.net/repos/svn/trunk/contrib/client-side/asvnが必要です。アーカイブSVN(asvn)は、通常svnで処理されないファイルタイプの記録を許可します。現在、これにはデバイス、シンボリックリンク、ファイルの所有権/許可が含まれます。
クリスチャン・シウピトゥ2009年

使用したフックのセットアップ方法を示す記事はどこにでもありますか?
grufftech

短い記事はこちら:jottit.com/jg8h7
8jean 09

Arch Linux ARMでこのような設定を行うことに関する投稿がありますが、ここでも同様に適用できます。zduck.com/2012/storing-your-raspberry-pi-config-in-git
silent__thought

28

私はgitで非公式にそれをやりましたが、より完全で詳細な実装であるetckeeperプロジェクトもあります。


4
etckeeperは本当に優れています-権限の復元(git、hgなどでサポートされていない)を処理し、選択したバックエンド(git、hg、bazaarなどを含む)をサポートします。また、apt-get操作を実行するたびに、/ etcリポジトリがコミットされ、夜間のコミットを行うように、APTに統合されています。私はしばらくこれを使用しましたが、全体的には、権限機能のみの場合、バニラVCSを使用するよりもはるかに優れています。
-RichVel

23

別のオプションは、PuppetCfengineなどの自動サーバー構成ツールを使用して、宣言型言語でサーバー構成をスクリプト化することです。

フロントエンドでの追加作業ですが、Puppetのようなユーティリティを使用すると、人間の介入をほとんど必要とせずにサーバーを自動的に再構築および構成できます。


5
はい。ただし、Puppet / CFengineの設定もリビジョン管理する必要があります。あなたが質問に答えることができるように私はまた、リビジョン制御出力のファンだ「とは何だった日付Xの設定?」「設定はパペットに従ってどのようにすべきでしたか?」と同様に、設定管理システムのトラブルシューティングのために入力と出力を関連付けます。
ロブチャンター

10

私はetckeeperで実験してきましたが、かなりうまくいくようです。集中型サーバーは必要ありませんが、これは状況によっては重要になる場合があります。複数の異なるDVCSバックエンドを使用できるため、最も使い慣れたものを選択できます。それは私には非常にうまくいくように思えますが、私はそれを使用し始めるために私が働いている他の技術を得ることをまだ試みていません。


6

私は最近シェフを探しています。バージョン管理でテンプレート化可能な(.erb)構成を保持するだけでなく、アクション(ノードに構成をアップロードした後のサービスの再起動など)を実行できます。Chefはパッケージ管理を支援するため、インターフェイスするノードとの依存関係確認できます(つまり、sudoパッケージをインストールする必要があります)。ChefはRubyで簡単に拡張できるように見えるため、カスタムプロセスがある場合は、提供されているフレームワーク内でスクリプトを作成するだけです。

しかし、まだ試していないので、適切なgemを使用してクライアントとサーバーにRubyをインストールする必要があります(これはそれほど難しくありません)。全体的に、一度に多数のサーバーを管理するのは本当に簡単に見えます。


私たちはChefを多用しています(60以上のサーバー)。すべてのレシピと設定ファイルはSubversionにチェックインされます。
organicveggie

3

私はインフラストラクチャ全体でPuppetを実装していますが、バージョン管理でデータを保持することは非常に役立ちます。

Mercurialは、いくつかのメタデータが隠されたディレクトリに格納されている単なるファイルのコレクションであるため、Mercurialが好きです(管理しやすく、理解しやすく、使いやすい)。

私のPuppetファイルは/ usr / local / etc / puppet /(FreeBSD 7.1)にあります。Mercurialを追加するのに必要なすべて:

> cd /usr/local/etc/puppet
> hg init

すべての変更は、単純な「hg commit」でコミットされます。変更が何かをホースでつなぐ場合、1つのコマンドですべてのサーバーを特定のバージョンのファイル(sudoersなど)にロールバックできます。

Mercurialの素晴らしい紹介


3

管理しているサーバーでSubversionを使用しています。正常に動作します。Tracインスタンスも設定している ので、タイムラインビュー、チケットシステム、ブラウジングなどがあります。

シンボリックリンク、cron、subversionを使用svn updateして、すべてのLinuxサーバーがスクリプト(ファイアウォールスクリプトなど)を使用してリポジトリを更新する、subversionリポジトリに基づく自動構成配布もセットアップしました。


2

実際の使用例は次のとおりです。Subversionを使用して、4つの異なるサーバー上の構成ファイルを管理します。コードで使用するのと同じ理由で、構成ファイルのバージョン管理を使用することをお勧めします。これは、バックアップと元に戻すボタンがすべて1つになっているためです。私がはるかに多くのサーバーを管理していて、それらのサーバーが構成の点ではるかに近い場合、berberichの答えに詳述されているPuppetのようなものを使用することになります。

アイデアは、サーバー上の特定のフォルダー(/ var / named /など)をチェックアウトできるリポジトリを1つ持つことができるということです。そのため、構成ファイルの履歴とバックアップの両方があります(間違えた場合、バックアップはボーナスです)あなたの手で編集追加のワイプGUI構成アプリケーション使用ののMac OS Xサーバーでのサーバ管理咳を)。その後、テストサーバーで簡単にテストし、その後、手動でファイルをコピーせずに動作するファイルで運用サーバーを更新します。


1

私は数年前にまさにこれを行うプロジェクトを作成しました:Savon

Subversionを使用してファイルを保存し、所有権、権限、SELinuxコンテキストの追跡などの追加機能を備えています。また、ファイルシステムの変更をレイヤーに論理的に分割できるため、たとえば、すべてのWebサーバーに個別に送信される変更を追跡できます。



0

ほとんどの変更は、定期的なメンテナンスタイプの場合でも、ヘルプデスクシステムで管理されます。私たちはドキュメントをゆっくりと自分の使用のためにwikiに移行し、エンドユーザーに公開しています。構成の変更とその背後にある議論を投稿することは、イントラネット上で開かれているのは素晴らしいことです。


0

何年もの間、私は修正を始めたファイルにrcを使用していましたが、数年前に/ etc全体をgitの制御下に置き始めました。細かくまとめてファイルをチェックインするには作業が必要です(巨大な「さまざまな更新」チェックインに頼る場合もあります)。これを支援するスクリプトをいくつか作成しましたが、言及されたetckeeperは非常に興味深いようで、すぐに試してみます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.