/ etcを追跡するために使用する最も簡単なVCSは何ですか? etcディレクトリをバージョン管理のベストプラクティスに保存する際の課題は何ですか?集中型または分散型のVCSを使用する必要がありますか?
etckeeper を使用して処理できます。これにより、リポジトリにgit、Mercurial、darcs、またはbzrを使用できるようになります。
etckeeper を使用してください。これには多くの理由があります。
私はgitがこの仕事に最適だと思います(Mercurialもおそらく同じように機能しますが)。/etc内の単純な「gitinit」で、あなたは道を進んでいます。その後、気になるファイルを追加するだけで、変更されたときにいつでもチェックインできます。変更があるたびに自動的にチェックインするようにcronを設定することもできます(ただし、ログは取得されません)。ファイル)。最初のマシンとすべて同じ構成を持つ2番目のマシンを設定する場合、または単にバックアップとして使用する場合は、リポジトリをプッシュすることもできます。
私がsysadminingを始めたとき、rcsは/ etcの選択の方法でした。次にCVS、次にSVNが登場しました。何か新しいことが起こったら、それに切り替えます。 :)しかし、VCSの新しいパラダイムごとに、私の人生は実際に楽になりました。
私はjedbergに同意しますが、その逆を行います。 gitリポジトリを使用しますが、すべてのファイルを無視して.gitignoreを作成してから、気になるファイルにunignoreを追加します。少なくともこの方法では、gitステータスが継続的にダーティになることはありません。
すなわち:.gitignore *!hosts!resolv.conf
等...
ジョン
宗教的な意図がない場合:分散型VCS、できればバザールを使用することを強くお勧めします。それの訳は:
apt-get install bzr
の問題です)cd /etc bzr init . bzr add . bzr commit . -m "Initial configuration"
GitとMercurialは他の2人の出場者です(他の回答で指摘されているように)が、セットアップなしでリモートサーバーにプッシュする機能がありません(少なくともまだ)。
バージョン管理システムで/ etcのすべてを管理するわけではありません。その理由は、/ etcの内容のほとんどはおそらく時間の経過とともにあまり変化しないからです。パッケージ管理ツールは/ etc内の多くのファイルを管理し、パッケージをアップグレードすると、VCSとの興味深い競合が発生する可能性があります。
代わりに、サーバーのさまざまなコンポーネントとパッケージを管理する configurationmanagement システムを使用し、テンプレートと静的ファイル(該当する場合)を使用してサービスを構成し、/etc(および他の場所)にファイルを保存する設定。私はそれらすべてをバージョン管理システムに保存しますが、個人的にはGitを好みます。システム管理者として、「典型的な」GitワークフローはSubversion(またはCVS)よりも理にかなっているからです。 Gitの分散化は、私にとってシステム管理にとって大きな勝利になります。
これまでのすべてのアドバイス(すべて私がしていることをほぼ正確に説明しています)に加えて、私は自分自身のために tig を発見しました。 cmdlineを使用してgitでetcを管理することは、私を夢中にさせ、変更はすぐに積み重なっていきました。 git GUIをランダムに探し回るだけで、tigと呼ばれるこのncursesベースのGUIが存在することに気付きました。
今、私は実際に私の/ etcを管理するのを楽しみにしています!