ウェブサイト検索

Linux で etckeeper を使用してバージョン管理で /etc を管理する方法


Unix/Linux ディレクトリ構造では、/etc ディレクトリは、ホスト固有のシステム全体の設定ファイルとディレクトリが配置される場所です。これは、システム全体のすべての構成ファイルの中心となる場所です。構成ファイルは、プログラムの動作を制御するために使用されるローカル ファイルです。静的である必要があり、実行可能なバイナリにすることはできません。

システム構成ファイルへの変更を追跡するために、システム管理者は通常、構成ファイルを変更する前にそのコピー (またはバックアップ) を作成します。そうすれば、元のファイルを直接変更して間違いを犯した場合でも、保存したコピーに戻すことができます。

Etckeeper は、バージョン管理を使用して /etc を管理できるようにする、シンプルで使いやすいモジュール式の構成可能なツールのコレクションです。これにより、git (推奨 VCS)、mercurial、bazaar、darcs リポジトリなどのバージョン管理システム (VCS) の /etc ディレクトリに変更を保存できます。 。これにより、間違いがあった場合に、git を使用して /etc に加えられた変更を確認したり、元に戻したりすることができます。

その他の機能は次のとおりです。

  1. APT、YUM、DNF、Zypper、pacman-g2 などのフロントエンド パッケージ マネージャーとの統合をサポートし、パッケージのアップグレード中に /etc に加えられた変更を自動コミットします。
  2. git では通常サポートされていないが、/etc にとって重要なファイル メタデータ (ファイルのアクセス許可など) を追跡します。
  3. これには cron ジョブと systemd タイマーの両方が含まれており、それぞれが 1 日に 1 回、既存の変更を /etc に自動的にコミットできます。

Linux に etckeeper をインストールする方法

Etckeeper は、DebianUbuntuFedora、およびその他の Linux ディストリビューションで利用できます。これをインストールするには、図に示すようにデフォルトのパッケージ マネージャーを使用します。このコマンドは、git と他のいくつかのパッケージも依存関係としてインストールすることに注意してください。

sudo apt-get install etckeeper	#Ubuntu and Debian
apt-get install etckeeper		#Debian as root user
dnf install etckeeper			#Fedora 22+
sudo zypper install etckeeper	        #OpenSUSE 15

RedHat Enterprise Linux (RHEL)、CentOS などの Enterprise Linux ディストリビューションでは、図のようにインストールする前にEPEL リポジトリを作成します。

yum install epel-release
yum install etckeeper

Linux での etckeeper の構成

上記のようにetckeeperをインストールしたら、その動作方法を設定する必要があります。その主な設定ファイルは/etc/etckeeper/etckeeper.confです。編集のために開くには、図に示すように、お気に入りのテキストベースのエディターのいずれかを使用します。

vim /etc/etckeeper/etckeeper.conf
OR
sudo nano /etc/etckeeper/etckeeper.conf

このファイルには、使用するバージョン管理システム (VCS) を設定したり、VSC にオプションを渡したりするための、いくつかの設定オプション (それぞれに小さく明確な使用方法の説明が含まれています) が含まれています。タイマーを有効または無効にし、特殊ファイルの警告を有効または無効にし、インストール前に etckeeper が既存の変更を /etc にコミットすることを有効または無効にします。

また、フロントエンドまたは上位レベルのパッケージ マネージャー (apt、yum、dnf など) と、基礎となる低レベルのパッケージ マネージャー (dpkg、rpm など) を etckeeper

ファイルに変更を加えた場合は、それを保存してファイルを閉じます。

Git リポジトリを初期化し、初期コミットを実行する

etckeeper の設定が完了したので、次のように Git リポジトリを初期化して、/etc ディレクトリ内の変更の追跡を開始する必要があります。 root 権限でのみ etckeeper を実行できます。それ以外の場合は、sudo を使用します。

cd 
sudo etckeeper init

次に、etckeeper が自動的に動作できるようにするためのステップです。次のように、最初のコミットを実行して /etc 内の変更の追跡を開始する必要があります。

sudo etckeeper commit "first commit"

変更とコミット

最初のコミットを実行した後、etckeepergit 経由で /etc ディレクトリ内の変更を追跡します。次に、いずれかの構成ファイルに変更を加えてみます。

次に、次のコマンドを実行して、最後のコミット以降に変更されたファイルを表示します。このコマンドは基本的に、コミット用にステージングされていない /etc 内の変更を表示します。VCS は git を意味し、「status 」は git サブコマンドです。

sudo etckeeper vcs status

次に、次のように最近の変更をコミットします。

sudo etckeeper commit "changed hosts and phpmyadmin config files"

コミットログの表示

すべてのコミットのログ (各コミットの ID とコメント) を表示するには、次のコマンドを実行します。

sudo etckeeper vcs log

また、次のようにコミット ID (最初の数文字は機能します) を指定するだけで、コミットの詳細を表示することもできます。

sudo etckeeper vcs show a153b68479d0c440cc42c228cbbb6984095f322d
OR
sudo etckeeper vcs show a153b6847

さらに、次のように 2 つのコミットの違いを確認できます。これは、次のセクションで示すように変更を取り消したい場合に特に便利です。矢印キーを使用して上下または左右にスクロールし、q を押して終了します。

sudo etckeeper vcs show 704cc56 a153b6847

変更を取り消す方法

etckeeper の本質は、/etc ディレクトリへの変更を追跡し、必要に応じて変更を元に戻すのに役立つことです。最後に編集したときに /etc/nginx/nginx.conf に間違いがあり、構成構造のエラーのため Nginx サービスを再起動できないことに気づいた場合は、元に戻すことができます。次のように、構成が正しいと思われる特定のコミット (例: 704cc56) に保存されたコピーにコピーします。

sudo etckeeper vcs checkout 704cc56 /etc/nginx/nginx.conf

あるいは、すべての変更をキャンセルして、特定のコミットに保存されている /etc (およびそのサブディレクトリ) にあるすべてのファイルのバージョンに戻すこともできます。

sudo etckeeper vcs checkout 704cc56 

変更を自動的にコミットできるようにする方法

Etckeeper には、Systemd 用のサービスとタイマー ユニットもパッケージに含まれています。 /etc ディレクトリ内の変更の「Autocommit」を起動するには、とりあえず etckeeper.timer ユニットを起動して、それが稼働しているかどうかを確認してください。 、 次のように。

sudo systemctl start etckeeper.timer
sudo systemctl status etckeeper.timer

そして、図に示すように、システム起動時に自動起動できるようにします。

sudo systemctl enable etckeeper.timer

詳細については、Etckeeper プロジェクト ページ: https://etckeeper.branchable.com/ を参照してください。

結論

このガイドでは、バージョン管理システム (VCS) の /etc ディレクトリに変更を保存するために etckeeper をインストールして使用する方法を説明しました。 git などを使用し、必要に応じて /etc に加えられた変更を確認または元に戻します。以下のフィードバック フォームを使用して、etckeeper についてご意見やご質問を共有してください。