質問

私は現在、ファイアウォールやその他のビットとボブを構築するために、OpenBSDシステムをいじっています。

これはかなり実験的なものであるため(私はOpenBSD n00bであり、すでに3〜4回システムを破壊しています)、ファイルシステムの一部または全部を作成した経験は他にあるでしょうか(私は考えています)特に/ etcの一部)VCSまたはその他の作業コピー。

  • これは良いアイデアですか?

  • 特にVCSの人々がこれに使用したことに興味があります。 Subversion、bazaar、gitを検討しています。これは共有リポジトリではないので、多分、分散オア引数よりも基本的なvcs機能に興味があります。

  • また、人々が見つけた想像上のまたは実際の落とし穴についても聞きたいです。ファイルの所有権とアクセス許可の保存には慎重な検討が必要だと思います!

  • そしてもちろん、VCSを使用しない代替アプローチ

役に立ちましたか?

解決

ここ gitを使用して/ etc /をリビジョン管理下に置くことに関する詳細なリビジョンがあります。

別のステップバイステップ方式。

他のヒント

あなたがしていることについては、OpenBSDから始めるのではなく、 pfsense

VCS自体については、 mercurial これらのプロジェクト

etckeeper に言及した人はまだいません。

/ etcをリポジトリ(git(デフォルト)、mercurial、またはbzr)に保存します。ファイルの所有権、許可、空のディレクトリの保存に関する問題を解決します。新しいパッケージのインストール中に発生した変更を/ etcに自動的にコミットするために、(少なくともaptを使用して)パッケージmanagemnetと統合できます。インストールがあなた自身の変更を中断する場合、非常に良いです、ただロールバックしてください。

しばらくの間、Ubuntuで正常に使用しています。

リビジョン管理システムに構成ファイルを置くだけでなく、 Chef または Puppet は、構成ファイルの内容、権限、およびその他の詳細を管理します。 、構成ファイルが変更されたときにアプリケーションを再起動するなど、それらのファイルをgit / subversion / yourfavoriteVCSで管理します。

<!> quot; Gnu / Linux Magazine France <!> quot;でその内容を読みました。 男は/ etcからroot /へのrsyncを使用し、作業コピーを作成せずにSubversion経由で保存します。

少し雑誌を引用します。

OK 。 ユーザーを作成します<!> quot; replica <!> quot;。

/ usr / local / etc / ssh / sshd_configに追加:

Match User replica
X11Forwarding no
AllowTcpForwarding no
ForceCommand /usr/local/bin/svnserv -t -r /home/replica/svnrepo -tunnel-user=replica

リポジトリの作成

sparky#svnadmin create / home / replica / svnrepo

権利の修正:

sparky # chown -R replica:nogroup /home/replica
sparky # chown -R o-rwx /home/replica
sparky # chown -R g-rwx /home/replica

クライアント側:

サブバージョンのインストール

replica # mkdir -p /root/scripts/svnrepo
replica # rsync -av /etc /root/scripts/svnrepo

export SVN_SSH ="ssh -i /root/.ssh/id_rsa"
svn import -m "replica config files" /root/scripts/svnrepos svn+ssh://replica@sparky/home/replica/svnrepo

現在、フォルダはまだ作業コピーではないため、作成する必要があります。 .svnファイルを作成できますか?彼はできません:)

cd /root/scripts
mv svnrepo svnrepo.old
svn checkout svn+ssh://replica@sparky/home/replica/svnrepo

今では、たとえばホストなどのファイルを変更しようとします。

rsyncをもう一度。 / etc / hostsがコピーされている、変更されたファイルのみを取得する必要があります。

これでコミットできます:

svn commit -m "backup 1" /root/scripts/svnrepo

最後にもう1つあります。 Subversionでファイルを取得する場合は、追加する必要があります。たとえば、/ etcに新しいファイルを作成した場合、デフォルトでは保存されません。

何をすべきか

svn status /root/scripts/svnrepo | grep -e '^!' | awk '{ print $2 }' | xargs -r svn delete 
svn status /root/scripts/svnrepo | grep -e '^?' | awk '{ print $2 }' | xargs -r svn add

次に、独自のスクリプトを作成する必要があります。

これがお役に立てば幸いです。

(gtg、タイトルを設定するために後で編集するので、だれも設定しない場合はタイトルを設定します)

私が管理するすべてのサーバー(300 +およびカウント)の/ etcにあるすべてのものは、 Mercurial 。なぜですか?

  • SVNまたはCVSを使用したことがある人なら誰でも簡単に使用できます(使用していない場合、私の生産マシンの/ etcでビジネスを行っているビジネスはありません)
  • あるサーバーの設定から他の多くのサーバーに簡単に変更をプルすることができます
  • 他の管理者がおならを持っている場合、すぐにロールバックできます

Gitは、この場合の問題が少なすぎるために、非常に強力でした。 HGはDVCSであるため、コミットとロールバックはクリーンで簡単です。また、HGを使用してほとんどのWebサイトを管理します。

ソースコードだけではありません:)もう1つのより基本的なオプションは、書き込み時にスナップショット(CoW)を取得する何らかのバージョン管理ファイルシステムを使用することです。DVCSははるかに簡単です。

フィードバック:私がやったこと

(@ Aif、私のマナーが少し欠けていたことを穏やかに思い出してくれてありがとう)

/ etcをgitリポジトリとして使用しましたが、まだ少し不安です(gitではなく私)ので、gitworkを手動で実行しています。

副作用として、私は、より一般的なバージョン管理コンテキスト(マージとなど)。


回答に対する私の反応

ご協力いただきありがとうございます。どの回答を受け入れるかを選択するのに少し苦労しました。もしそれがあなたのものでなければ、私を信じてください、私もあなたのものに感謝します。

@ Luis Melgratti

ルイ、いくつかの素晴らしい参考文献をありがとう。あなたの答えを最も役に立つものとして受け入れました。


@ コンラッド

コンラッド、両方の提案に感謝します。

確かに pfsense を調査しますが、ここでの目標の1つは、ファイアウォールを構築するだけでなく、手を汚すことです。 > quot;重要です。

Mercurialについては、(以前)試したことがあるのでリストに含めませんでした。<!> quot; liked <!> quot; bazaarの方が優れていますが、gitは一見大きな力を持っているように見えます(明らかに、私には必要ないかもしれません)。私の<!> quot; main <!> quot;現在のVCSはSubversionですが、このケースに適した答えかどうかはわかりません。したがって、3つのリストです。

(pfsenseを見て、ネットワーク上で起動しました。非常に良いですが、少しでも手が汚れる可能性はまったくありません...)


@ Aif

ありがとう、アイフ。私は間違いなくそれを試してみるつもりですが、私はgitになってしまうと思います。


@ tinkertim

Mercurialについてお考えいただきありがとうございます。Bazaarには満足していますが、今再訪する予定です。


@ ウィクランダーごと

非常に興味深い提案をありがとう!現在のワークパイルの下から抜け出すことができるとき、私は間違いなくetckeeperを見ていきます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top