4

私は現在、ファイアウォールとその他のビットとボブを自分で構築することを目的として、OpenBSD システムをいじっています。

これはかなり実験的なものなので (私は OpenBSD n00b で、すでにシステムを 3 つか 4 回破棄しました)、他の人がファイルシステムの一部またはすべてを作成した経験があるのだろうかと思います (特に考えているのは/etc) VCS などの作業コピー。

  • これは良い考えですか?

  • 私は特に、どの VCS の人々がこれに使用したかに興味があります。Subversion、bazaar、および git を検討しています。これは共有リポジトリにはならないので、分散か非分散かという議論よりも、おそらく基本的な vcs 機能に関心があります。

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

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

4

7 に答える 7

8

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

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

于 2009-01-17T13:29:55.450 に答える
4

etckeeper についてまだ誰も言及していないと思います。

/etc をリポジトリ (git (デフォルト)、mercurial、または bzr) に保存します。ファイルの所有権、権限、および空のディレクトリの保持に関する問題を解決します。パッケージ管理ネット (少なくとも apt) と統合して、新しいパッケージのインストール中に発生する /etc への変更を自動的にコミットできます。インストールが独自の変更を無効にする場合は非常に良いです。ロールバックするだけです。

私はしばらくの間、Ubuntuでそれをうまく使用してきました。

于 2009-11-28T22:18:29.407 に答える
4

あなたがしていることについては、OpenBSDから始めるのではなく、pfsenseのように多くの作業がすでに行われているディストリビューションから始めることをお勧めします。

VCS 自体については、これらのプロジェクトで成功裏に使用されているmercurialを検討することをお勧めします。

于 2009-01-17T13:34:11.603 に答える
2

「Gnu/Linux Magazine France」でそれについて読んだことがあります。男は /etc から root/ への rsync を使用し、作業コピーを作成せずに、subversion 経由で保存します。

雑誌から少し引用します。

この例では、サーバーは freeBSD を実行していて「sparky」ですが、保存するマシンは debian の下にあり、「replica」です。ユーザー「レプリカ」を作成します。

/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

たとえば、ホストなどのファイルを変更してみてください。

再同期します。/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、後で編集してタイトルを設定するので、誰もしない場合は1つ)

于 2009-01-17T13:22:04.000 に答える
2

リビジョン管理システムに構成ファイルを入れるだけでなく、 ChefPuppetなどの構成管理システムを使用して、構成ファイルの内容、権限、その他の詳細 (構成ファイルが変更されたときにアプリケーションを再起動するなど) を管理することをお勧めします。これらのファイルは git/subversion/yourfavoriteVCS にあります。

于 2009-02-18T00:14:48.397 に答える
1

私が管理するすべてのサーバー(300以上)の/ etc内のすべては、Mercurialの下にあります。なんで?

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

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

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

于 2009-01-17T18:33:23.060 に答える
0

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

(@Aif、私の良いマナーが少し欠けていたことを優しく思い出させてくれてありがとう)

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

副作用として、より一般的なバージョン管理コンテキスト (マージなど) ではありますが、subversion、git、bazaar、mercurial、monotone、darcs、fossil を並べて評価する小さなプロジェクトを開始しました。


あなたの答えに対する私の反応

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

@ルイス・メルグラッティ

ルイス、いくつかの優れた参考文献をありがとう。私はあなたの答えを最も有用なものとして受け入れました。


@コンラッド

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

私は確かにpfsenseを調査しますが、これに関する私の目的の 1 つは、私の手を本当に汚すことと、ファイアウォールを構築することであるため、「取得するのではなく作成する」ことが重要です。

Mercurial については、(以前に) 試したことがあるのでリストに含めませんでしたが、bazaar の方が「気に入った」と感じましたが、一見したところ、git は大きな力を持っているように見えます (確かに私は必要ないかもしれません)。現在、私の「メイン」VCS は Subversion ですが、この場合の適切な答えかどうかはわかりません。したがって、3つのリスト。

(私は今、pfsense を調べて、自分のネットワークで起動しました。非常に良いですが、少しでも手を汚すかどうかはまったくわかりません...)


@アイフ

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


@ティンカーティム

Bazaar には満足していますが、Mercurial についての考えをお寄せいただきありがとうございます。


@ウィクランダーあたり

とても興味深い提案をありがとうございます!現在のワークパイルから抜け出せるようになったら、必ず etckeeper を調べます。

于 2009-01-17T13:51:26.780 に答える