GNU/Linux >> Linux の 問題 >  >> OpenSuse

etckeeperを使用してOpenSUSELeap15で/etcを管理する方法

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

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

このガイドでは、OpenSUSELeap15でetckeeperをインストールおよび構成する方法を学習します。

etckeeperのインストール

システムが最新であることを確認してください

sudo zypper refresh
sudo zypper update -y

Etckeeperは、デフォルトのOpenSUSEリポジトリで利用できます。インストールするには、次のコマンドを使用します。これにより、依存関係もインストールされます:

sudo zypper install etckeeper

インストールを受け入れるように求められたらyと入力し、インストールが完了するのを待ちます。

このコマンドでインストールされたパッケージを確認します

~> rpm -qi etckeeper
Name        : etckeeper
Version     : 1.18.7
Release     : bp153.1.17
Architecture: x86_64
Install Date: Thu Mar  3 17:44:56 2022
Group       : System/Management
Size        : 113726
License     : GPL-2.0+
Signature   : RSA/SHA256, Sat Mar 13 02:04:56 2021, Key ID 9c214d4065176565
Source RPM  : etckeeper-1.18.7-bp153.1.17.src.rpm
Build Date  : Sat Mar 13 02:04:32 2021
Build Host  : lamb54
Relocations : (not relocatable)
Packager    : https://bugs.opensuse.org
Vendor      : openSUSE
URL         : http://etckeeper.branchable.com/
Summary     : Store /etc under Version Control
Description :
The etckeeper program is a tool to let /etc be stored in a git,
mercurial, bzr or darcs repository. It hooks into yum to automatically
commit changes made to /etc during package upgrades. It tracks file
metadata that version control systems do not normally support, but that
is important for /etc, such as the permissions of /etc/shadow. It is
quite modular and configurable, while also being simple to use if you
understand the basics of working with version control.
Distribution: SUSE Linux Enterprise 15 SP3

etckeeperの構成

etckeeperをインストールしたら、構成する必要があります。 etckeeper構成ファイルは、このパス/etc/etckeeper/etckeeper.confにあります。

お気に入りのテキストエディタを使用して開きます。私はvimを使用しています。

sudo vim /etc/etckeeper/etckeeper.conf

ファイル内の構成には、小さく明確な説明があります。オプションを使用すると、使用するバージョン管理システムを設定し、オプションを VSCに渡すことができます。;タイマーを有効または無効にするには、特殊ファイルの警告を有効または無効にし、etckeeperが既存の変更を/etcにコミットすることを有効または無効にします インストール前。

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

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

gitリポジトリを初期化しています

次に、/etcの変更を追跡するためにgitリポジトリを初期化します。 Etckeeperは、rootを使用して実行するか、sudoコマンドを使用するユーザーとして実行する必要があります。 /etcディレクトリに切り替えて初期化します。

cd /etc
sudo etckeeper init

これは私のサーバーの出力です

~> cd /etc
/etc> sudo etckeeper init
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: 	git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: 	git branch -m <name>
Initialized empty Git repository in /etc/.git/

次に、 etckeeperの手順を実行します 自動的に機能するには、最初のコミットを実行して、/etcの変更の追跡を開始する必要があります。 、次のように。

sudo etckeeper commit "initial commit with original etc configs"

変更とコミット

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

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

sudo etckeeper vcs status

変更されたファイルとともに、次のような出力が表示されるはずです。

/etc> sudo etckeeper vcs status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   hosts
	modified:   ssh/sshd_config

no changes added to commit (use "git add" and/or "git commit -a")

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

sudo etckeeper commit "updated hosts file and disallowed root ssh login"

これに似た出力が表示されるはずです

/etc> sudo etckeeper commit "updated hosts file and disallowed root ssh login"
[master 9984ce4] updated hosts file and disallowed root ssh login
 Author: ec2-user <[email protected]>
 2 files changed, 3 insertions(+), 3 deletions(-)

コミットログの表示

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

sudo etckeeper vcs log

出力

/etc> sudo etckeeper vcs log
commit 9984ce498ba68d15c8e1ac84dbec7b3cb6e3202f (HEAD -> master)
Author: ec2-user <[email protected]>
Date:   Thu Mar 3 18:02:25 2022 +0000

    updated hosts file and disallowed root ssh login

commit 179ae7654496e9190c700c1ea4584d0ff05d3418
Author: ec2-user <[email protected]>
Date:   Thu Mar 3 17:59:00 2022 +0000

    initial commit with original etc configs

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

sudo etckeeper vcs show 9984ce498ba68d15c8e1ac84dbec7b3cb6e3202f

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

sudo etckeeper vcs show 9984ce 179ae

変更を取り消す方法

etckeeperの本質 /etcへの変更を追跡するのに役立ちます ディレクトリを作成し、必要に応じて変更を元に戻します。 / etc / ssh / sshd_configでいくつかの間違いを犯したことに気付いたと仮定します 最後に編集したときに、構成構造のエラーのためにsshdサービスを再開できない場合は、特定のコミットで保存したコピーに戻すことができます(例: 9984ce )次のように構成が正しいと思われる場合。

sudo etckeeper vcs checkout 9984ce /etc/ssh/sshd_config

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

sudo etckeeper vcs checkout 9984ce

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

Etckeeper Systemd用のサービスユニットとタイマーユニットも同梱されています 、パッケージに含まれています。 「自動コミット」を起動するには 」の/etcの変更 ディレクトリ、etckeeper.timerを起動するだけです 今のところユニットを作成し、次のように稼働しているかどうかを確認します。

sudo systemctl start etckeeper.timer

ステータスを確認する

/etc> sudo systemctl status etckeeper.timer
● etckeeper.timer - Daily autocommit of changes in /etc directory
     Loaded: loaded (/usr/lib/systemd/system/etckeeper.timer; disabled; vendor preset: disabled)
     Active: active (waiting) since Thu 2022-03-03 18:08:39 UTC; 4s ago
    Trigger: Fri 2022-03-04 18:08:39 UTC; 23h left
   Triggers: ● etckeeper.service
       Docs: man:etckeeper(8)

Mar 03 18:08:39 opensusesrv systemd[1]: Started Daily autocommit of changes in /etc directory.

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

sudo systemctl enable etckeeper.timer

結論

このガイドでは、etckeeperをインストールして使用し、gitなどのバージョン管理システムを使用して/etcディレクトリの変更を管理する方法を学びました。


OpenSuse
  1. OpenSUSELeap15.3にMongodb5をインストールする方法

  2. MysqlServer8をOpenSUSELeap15.3にインストールする方法

  3. OpenSUSELeap15.3にRedis6をインストールして設定する方法

  1. OpenSUSE 12.2を12.3にアップグレードする方法(デスクトップとサーバー)

  2. OpenSUSELeap15.3にErlangをインストールする方法

  3. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  1. OpenSUSELeap15.3でPodmanをインストールして使用する方法

  2. / etc / motdはどのように更新されますか?

  3. /etc/cron.d で @reboot を使用する方法