Linuxシステムの更新を、Gitが行うのと同様の方法で、「リビジョン」内で前後に移動できるようにすることで管理したいと思います。どうすればそれができますか?
Linuxシステムの更新を、Gitが行うのと同様の方法で、「リビジョン」内で前後に移動できるようにすることで管理したいと思います。どうすればそれができますか?
回答:
おそらく、Nixパッケージマネージャを使用するNixOSをご覧ください。
NixOSは、システム構成管理の最先端を改善することを目的としたGNU / Linuxディストリビューションです。既存のディストリビューションでは、アップグレードなどのアクションは危険です。パッケージをアップグレードすると他のパッケージが破損する可能性があり、システム全体のアップグレードはゼロから再インストールするよりも信頼性が低く、構成変更の結果を安全にテストできません。システムへの変更を簡単に元に戻すことはできません。
おそらく探しているものは、構成管理ツールと呼ばれます。いくつかの選択肢がありますが、どの状況でもどちらが最適かは非常に主観的です。
私は個人的にPuppetを使い始めるのは非常に簡単であると感じましたが、他の一般的な選択肢はSaltとAnsibleです。
これはあなたの質問にとってはやり過ぎかもしれませんが、システムレベル/大規模な変更を元に戻すことができる最も簡単な方法はスナップショットです:
https://en.wikipedia.org/wiki/Snapshot_%28computer_storage%29
リグの詳細については言及していませんが、gitに精通しているので、より複雑なファイルシステムの使用に興味があるかもしれないと想像するのはそれほど難しくありません。次世代のファイルシステムを使用する場合(click-bait-yの名前は無視)、ターミナルにパンチするだけのコマンドでシステム全体を完全に「巻き戻す」ことができます。行われたすべての変更は、ごくわずかな遅延/労力で元に戻ります。ZFSが最善の策であり、この素晴らしいArsの記事を参照して、それがあなたにとって価値のあるものであるかどうかを確認することができます(他にも多くの素晴らしい機能がたくさんあります)。
「更新」の意味に応じて、etckeeperなどの構成管理ツールに興味があります。これにより、システム構成への変更を自動的に記録し、以前の構成に戻すことができます。
Gitがおなじみのツールであり、「更新」が「システムパッケージの更新」または「サーバーに保存されているすべてのファイルの更新」ではなく「システム構成の更新」を意味する場合、これは見ているものですにとって。
Puppet、Ansible、Etckeeperなどのツールを使用しているかどうかにかかわらず、豚全体(別の回答で述べたスナップショットなど)を使用しない限り、データを失うことなくきれいに「ロールバック」できるとは限りません。適切なアプローチは状況によって異なります(たとえば、ロールバック時に顧客の注文を失う可能性のある運用システムにはスナップショットは適切ではありません)。
過去にOpenVMSを使用しましたが、デフォルトではバージョン管理ファイルシステムが付属しています。
puppetのようなツールが十分に機能しない場合は、おそらくバージョン管理ファイルシステムが必要です。
gitのようなシステム全体(カーネルバージョンを含む)を本当に管理したい場合は、NixOSを探しています。
あまり関係のないバージョンの場合、ほとんどすべてのUNIXからNixOSのパッケージマネージャーであるnixを使用できます。Nixは単純なユーザーとしてインストールできますが、rootとしてインストールする方が簡単です。nixがインストールされると、それを使用して非特権ユーザーとしてパッケージをインストールでき、競合なしで既存のパッケージマネージャーと一緒に正常に実行されます。システムからnixを完全に削除することも非常に簡単なので、実際にそれを試してはいけない言い訳はありません。;-)
質問に直接対処するために、Nixはインストールされたシステム全体を環境として定義します。これは、gitコミットのように、インストールされたすべてのパッケージの非常に特定のバージョンへのポインターセットへのポインターです。
Nixはパッケージをアップグレードすると、新しい環境を作成します。これは、パッケージへの新しいポインターセットを指します(更新されていないパッケージのほとんどは既存のものを指します。これも、ほとんどが新しいgitコミットと非常に似ています)以前の変更されていないファイルと変更されたファイルのいくつかの新しいバージョンを指します)。
もちろん、以前のバージョンの環境に切り替えることは簡単で、フォーク(つまり、最後より古い環境に基づいて新しい環境を作成する)を信じています。環境は特定のシェル(実際、シェルで使用可能な環境変数のセット、つまり名前です)に対してロードできるため、同じマシン上の異なるプロジェクトに対して異なる環境を簡単に作成することもできます。関連のないプロジェクトには別のバージョンのライブラリが必要なので、依存関係の問題はもうありません!
NixOSはそれを次のレベルに引き上げ、同様の方法でカーネルを含むコンピューター全体を管理し、マシン全体の非常に低いリスクのアップグレードを可能にします。
あなたが実験的なタイプの場合、ファイルシステム全体をローカルgitリポジトリにチェックインしてみてください。これは...面白いと思います。
git init
ルートディレクトリ内 /
git add -A .
git commit -m "Initial Snapshot"
git commit -Am "Snapshot X"
などを定期的に追加しますいくつかの利点があります:
gitk
、改訂履歴用の使い慣れたツールgit diff
奇妙なものには次のものがあります。
git
ルートgit
コンテナにネストされたソースコードディレクトリにいるときに期待どおりに動作することを期待します。