Di Linux/Unix, /etc
direktori adalah tempat file dan direktori konfigurasi seluruh sistem khusus host berada; ini adalah lokasi sentral untuk semua file konfigurasi seluruh sistem. File konfigurasi adalah file lokal yang digunakan untuk mengontrol cara kerja program – file tersebut harus statis dan tidak boleh berupa biner yang dapat dieksekusi.
Untuk melacak perubahan pada file konfigurasi sistem, administrator sistem biasanya membuat salinan (atau cadangan) file konfigurasi sebelum memodifikasinya. Dengan begitu, jika mereka langsung memodifikasi file asli dan membuat kesalahan, mereka dapat kembali ke salinan yang disimpan.
Dalam panduan ini, kita akan mempelajari cara Menginstal dan mengkonfigurasi etckeeper di Opensuse Leap 15.
Menginstal etckeeper
Pastikan sistem Anda mutakhir
sudo zypper refresh
sudo zypper update -y
Etckeeper tersedia di repositori OpenSUSE default. Untuk menginstal, gunakan perintah berikut. Ini juga akan menginstal dependensi:
sudo zypper install etckeeper
Ketik y ketika diminta untuk menerima instalasi dan tunggu sampai selesai.
Konfirmasikan paket yang diinstal dengan perintah ini
~> 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
Mengonfigurasi etckeeper
Setelah etckeeper diinstal, kita perlu mengkonfigurasinya. File konfigurasi etckeeper terletak di jalur ini /etc/etckeeper/etckeeper.conf.
Buka menggunakan editor teks favorit Anda, saya menggunakan vim.
sudo vim /etc/etckeeper/etckeeper.conf
Konfigurasi dalam file memiliki deskripsi yang kecil dan jelas. Opsi ini memungkinkan Anda menyetel sistem kontrol versi yang akan digunakan, meneruskan opsi ke VSC; untuk mengaktifkan atau menonaktifkan timer, mengaktifkan atau menonaktifkan peringatan file khusus, mengaktifkan atau menonaktifkan etckeeper agar tidak melakukan perubahan yang ada pada /etc
sebelum penginstalan.
Selain itu, Anda dapat menyetel pengelola paket tingkat depan atau tingkat yang lebih tinggi (seperti apt, yum, dnf dll.) dan pengelola paket dasar atau tingkat rendah (dpkg, rpm dll.) agar berfungsi dengan etckeeper .
Jika Anda telah membuat perubahan pada file, simpan dan tutup file.
Inisialisasi repositori git
Selanjutnya kita akan menginisialisasi repositori git untuk melacak perubahan di /etc. Etckeeper harus dijalankan dengan root atau sebagai pengguna dengan perintah sudo. Mari kita beralih ke direktori /etc dan menginisialisasinya .
cd /etc
sudo etckeeper init
Ini adalah output di server saya
~> 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/
Selanjutnya, langkah untuk etckeeper agar dapat bekerja secara otomatis, Anda harus menjalankan komit pertama untuk mulai melacak perubahan di /etc
, sebagai berikut.
sudo etckeeper commit "initial commit with original etc configs"
Melakukan Perubahan dan Komitmen
Setelah menjalankan komit pertama Anda, etckeeper melalui git sekarang melacak setiap perubahan di /etc
direktori. Sekarang coba buat perubahan apa pun di file konfigurasi mana pun.
Kemudian jalankan perintah berikut untuk menampilkan file yang telah berubah sejak komit terakhir; perintah ini pada dasarnya menunjukkan perubahan pada /etc
tidak dipentaskan untuk komit, di mana VCS berarti git dan “status ” adalah sub-perintah git.
sudo etckeeper vcs status
Anda akan melihat output yang mirip dengan ini dengan file yang diubah:
/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")
Kemudian komit perubahan terbaru sebagai berikut.
sudo etckeeper commit "updated hosts file and disallowed root ssh login"
Anda akan melihat output yang mirip dengan ini
/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(-)
Lihat Log Komit
Untuk melihat log semua komit (setiap id dan komentar komit), Anda dapat menjalankan perintah berikut.
sudo etckeeper vcs log
Keluaran
/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
Anda juga dapat menampilkan detail komit, cukup tentukan ID komit (beberapa karakter pertama dapat berfungsi) seperti yang ditunjukkan:
sudo etckeeper vcs show 9984ce498ba68d15c8e1ac84dbec7b3cb6e3202f
Selain itu, Anda dapat melihat perbedaan antara dua komit seperti yang ditunjukkan. Ini sangat berguna jika Anda ingin mencabut perubahan seperti yang ditunjukkan di bagian berikutnya. Anda dapat menggunakan tombol panah untuk menggulir ke atas dan bawah atau kiri dan kanan, dan keluar dengan menekan q
.
sudo etckeeper vcs show 9984ce 179ae
Cara Mencabut Perubahan
Inti dari etckeeper adalah untuk membantu Anda melacak perubahan pada /etc
. Anda direktori dan membalikkan perubahan jika perlu. Dengan asumsi Anda menyadari bahwa Anda membuat beberapa kesalahan dalam /etc/ssh/sshd_config saat terakhir kali Anda mengeditnya dan layanan sshd tidak dapat dimulai ulang karena kesalahan dalam struktur konfigurasi, Anda dapat kembali ke salinan yang disimpan dalam komit tertentu (mis. 9984ce ) yang menurut Anda konfigurasinya benar sebagai berikut.
sudo etckeeper vcs checkout 9984ce /etc/ssh/sshd_config
Atau, Anda dapat membatalkan semua perubahan dan kembali ke versi semua file di bawah /etc
(dan sub-direktorinya) disimpan dalam komit tertentu.
sudo etckeeper vcs checkout 9984ce
Aktifkan Perubahan untuk Dikomit Secara Otomatis
Penjaga Lain juga dikirimkan dengan layanan dan unit pengatur waktu untuk Systemd , termasuk dalam paket. Untuk meluncurkan “Otomatis ” dari perubahan pada /etc
direktori, cukup mulai etckeeper.timer
unit untuk saat ini dan periksa apakah sudah aktif dan berjalan, sebagai berikut.
sudo systemctl start etckeeper.timer
Konfirmasi status
/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.
Dan aktifkan untuk memulai otomatis saat boot sistem seperti yang ditunjukkan.
sudo systemctl enable etckeeper.timer
Kesimpulan
Dalam panduan ini kita mempelajari cara menginstal dan menggunakan etckeeper untuk mengelola perubahan di direktori /etc menggunakan sistem manajemen versi seperti git.