ค้นหาเว็บไซต์

วิธีจัดการ /etc ด้วยการควบคุมเวอร์ชันโดยใช้ Etckeeper บน Linux


ในโครงสร้างไดเร็กทอรี Unix/Linux ไดเร็กทอรี /etc คือที่เก็บไฟล์และไดเร็กทอรีการกำหนดค่าทั้งระบบเฉพาะโฮสต์ เป็นตำแหน่งศูนย์กลางสำหรับไฟล์การกำหนดค่าทั้งระบบ ไฟล์การกำหนดค่าคือไฟล์ในเครื่องที่ใช้ควบคุมวิธีการทำงานของโปรแกรม โดยจะต้องเป็นแบบคงที่และไม่สามารถเป็นไบนารีที่ปฏิบัติการได้

เพื่อติดตามการเปลี่ยนแปลงในไฟล์การกำหนดค่าระบบ โดยปกติผู้ดูแลระบบจะทำสำเนา (หรือสำรองข้อมูล) ของไฟล์การกำหนดค่าก่อนที่จะทำการแก้ไข ด้วยวิธีนี้ หากพวกเขาแก้ไขไฟล์ต้นฉบับโดยตรงและทำผิดพลาด พวกเขาสามารถแปลงกลับเป็นสำเนาที่บันทึกไว้ได้

Etckeeper เป็นชุดเครื่องมือที่เรียบง่าย ใช้งานง่าย แบบแยกส่วนและกำหนดค่าได้ เพื่อให้จัดการ /etc โดยใช้การควบคุมเวอร์ชัน ช่วยให้คุณสามารถจัดเก็บการเปลี่ยนแปลงในไดเร็กทอรี /etc ในระบบควบคุมเวอร์ชัน (VCS) เช่น git (ซึ่งเป็น VCS ที่ต้องการ), mercurial, bazaar หรือ darcs repository . ซึ่งทำให้คุณสามารถใช้ git เพื่อทบทวนหรือย้อนกลับการเปลี่ยนแปลงที่เกิดขึ้นกับ /etc ในกรณีที่เกิดข้อผิดพลาด

คุณสมบัติอื่น ๆ ของมันคือ:

  1. รองรับการผสานรวมกับตัวจัดการแพ็คเกจส่วนหน้ารวมถึง APT, YUM, DNF, Zypper และ pacman-g2 เพื่อยืนยันการเปลี่ยนแปลงที่ทำกับ /etc โดยอัตโนมัติในระหว่างการอัปเกรดแพ็คเกจ
  2. ติดตามข้อมูลเมตาของไฟล์ (เช่น การอนุญาตของไฟล์) ที่ปกติ git ไม่รองรับ แต่นั่นเป็นสิ่งสำคัญสำหรับ /etc และ
  3. โดยรวมทั้งงาน cron และตัวจับเวลา systemd ซึ่งแต่ละตัวสามารถกระทำการเปลี่ยนแปลงที่กำลังออกไปยัง /etc โดยอัตโนมัติวันละครั้ง

วิธีการติดตั้ง Etckeeper ใน Linux

Etckeeper มีให้บริการใน Debian, Ubuntu, Fedora และการกระจาย 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

ในการกระจาย Enterprise Linux เช่น RedHat Enterprise Linux (RHEL), CentOS และอื่นๆ คุณต้องเพิ่ม พื้นที่เก็บข้อมูล EPEL ก่อนทำการติดตั้งตามที่แสดง

yum install epel-release
yum install etckeeper

การกำหนดค่า Etckeeper ใน Linux

เมื่อคุณติดตั้ง 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 ของคุณดังต่อไปนี้ คุณสามารถเรียกใช้ etckeeper ได้เฉพาะกับสิทธิ์ root เท่านั้น มิฉะนั้นให้ใช้ sudo

cd 
sudo etckeeper init

ขั้นต่อไป เพื่อให้ etckeeper ทำงานโดยอัตโนมัติ คุณจะต้องรันคอมมิตแรกเพื่อเริ่มติดตามการเปลี่ยนแปลงใน /etc ดังต่อไปนี้

sudo etckeeper commit "first commit"

การเปลี่ยนแปลงและความมุ่งมั่น

หลังจากรันการคอมมิตครั้งแรกของคุณ etckeeper ผ่าน git กำลังติดตามการเปลี่ยนแปลงใดๆ ในไดเร็กทอรี /etc ตอนนี้ให้พยายามทำการเปลี่ยนแปลงในไฟล์การกำหนดค่าใด ๆ

จากนั้นรันคำสั่งต่อไปนี้เพื่อแสดงไฟล์ที่เปลี่ยนแปลงตั้งแต่การคอมมิตครั้งล่าสุด คำสั่งนี้จะแสดงการเปลี่ยนแปลงใน /etc ที่ไม่ได้ถูกจัดเตรียมสำหรับการคอมมิต โดยที่ VCS หมายถึง git และ “status ” คือคำสั่งย่อย git

sudo etckeeper vcs status

จากนั้นยอมรับการเปลี่ยนแปลงล่าสุดดังต่อไปนี้

sudo etckeeper commit "changed hosts and phpmyadmin config files"

ดูบันทึกการกระทำ

หากต้องการดูบันทึกของการคอมมิตทั้งหมด (รหัสและความคิดเห็นของคอมมิตแต่ละรายการ) คุณสามารถรันคำสั่งต่อไปนี้

sudo etckeeper vcs log

คุณยังสามารถแสดงรายละเอียดของการคอมมิตได้ เพียงระบุ รหัสคอมมิต (อักขระสองสามตัวแรกสามารถใช้ได้) ตามที่แสดง:

sudo etckeeper vcs show a153b68479d0c440cc42c228cbbb6984095f322d
OR
sudo etckeeper vcs show a153b6847

นอกจากนี้ คุณสามารถดูความแตกต่างระหว่างสองคอมมิตได้ดังที่แสดง สิ่งนี้มีประโยชน์อย่างยิ่งหากคุณต้องการเพิกถอนการเปลี่ยนแปลงตามที่แสดงในส่วนถัดไป คุณสามารถใช้ปุ่มลูกศรเพื่อเลื่อนขึ้นและลงหรือซ้ายและขวา และออกโดยกด 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 เพียงเริ่มหน่วย etckeeper.timer ในตอนนี้และตรวจสอบว่าหน่วยนั้นเปิดใช้งานและทำงานอยู่หรือไม่ ดังต่อไปนี้

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

และเปิดใช้งานให้เริ่มอัตโนมัติเมื่อบูตระบบตามที่แสดง

sudo systemctl enable etckeeper.timer

สำหรับข้อมูลเพิ่มเติม โปรดดูหน้าโครงการ Etckeeper: https://etckeeper.branchable.com/

บทสรุป

ในคู่มือนี้ เราได้แสดงวิธีการติดตั้งและใช้ etckeeper สำหรับการเปลี่ยนแปลงร้านค้าในไดเร็กทอรี /etc ในระบบควบคุมเวอร์ชัน (VCS) เช่น git และตรวจทานหรือย้อนกลับการเปลี่ยนแปลงที่เกิดขึ้นกับ /etc ตามที่จำเป็น แบ่งปันความคิดของคุณหรือถามคำถามเกี่ยวกับ etckeeper ผ่านแบบฟอร์มคำติชมด้านล่าง