如何使用版本控制管理的/ etc在CentOS 7使用Etckeeper

介绍

在Linux生态系统中,定期安装,维护和升级软件是必须的。 但是,跟踪对本地配置文件所做的更改仍然是必要的。 与进行更改之前复制配置文件的旧备用数据库相反,etckeeper允许您使用Git,Mercurial,Bazaar或Darcs存储库跟踪修改,就像您对软件开发项目一样。

此外,etckeeper使用yum无缝集成,自动提交到的内容进行更改/etc时,包升级目录。 这将允许您恢复到您的配置文件的以前的版本,如果你想 - 或需要 - 这样做。

先决条件

要遵循本教程,您需要:

  • 一个CentOS 7Droplet用sudo的非root用户,您可以通过以下第1步至第4步在设立这个教程

etckeeper只跟踪文件权限,元数据和更改。 它不提供开箱即用的工具来执行文件的恢复,因此需要了解修订控制系统的基本原理。

在本文中,我们将使用Git,这是etckeeper使用的默认VCS。 如果你想更新你的有关Git和版本控制的内存,您可以查看本系列教程 虽然在本指南中不会直接使用Git,但您可以通过etckeeper运行Git特定的命令。

第1步 - 安装etckeeper

在这一步,我们将安装etckeeper。

首先,您需要在CentOS 7服务器上启用EPEL(企业级Linux的额外软件包),因为这是包含etckeeper的存储库。

sudo yum update && sudo yum install epel-release

然后安装Etckeeper。

sudo yum update && sudo yum install etckeeper

Git自带的CentOS 7默认情况下,所以我们不需要安装它。

第2步 - 定制etckeeper的配置

一旦你已经安装etckeeper,下一步就是更新/etc/etckeeper/etckeeper.conf配置文件。

首先,使用Nano或您喜欢的文本编辑器打开配置文件。

sudo nano /etc/etckeeper/etckeeper.conf

以下是您需要配置的基本变量,以便etckeeper正常工作。 随意离开其余的设置注释掉。

第一,根据注释# The VCS to use. ,确保VCS="git"是注释掉(即不存在#在该行的开头)。 默认情况下,此选项已经取消注释,因为git是CentOS 7上etckeeper安装使用的默认VCS。

如果你想防止etckeeper从每天提交更改自动一次,确保AVOID_DAILY_AUTOCOMMITS=1是注释。 为了决定是否要设置此项,您应该考虑您的系统配置文件是否经常更改(例如测试环境通常每天更改)。 如果是这样,你应该注释掉那行; 否则,你可以留下评论。

如果你想Yum安装当有未提交的更改中止/etc ,确保取消注释AVOID_COMMIT_BEFORE_INSTALL=1 这将需要手动提交之前使用yum来安装软件包。 否则,将其注释掉,yum将在运行安装之前自动提交更新的文件。 这个选择完全取决于你; 它在很大程度上取决于您的环境和更改的数量。 这很像前面的示例,除了这个时间将取决于您安装软件包的频率。

更新选项后,请保存并关闭文件。

第3步 - 初始化Git存储库

在这一步中,我们将初始化Git仓库/etc

首先,切换到/etc目录中。

cd /etc

接下来,通过运行以下命令来初始化存储库。

sudo etckeeper init

您应该得到以下消息:

Initialized empty Git repository in /etc/.git/

您现在应该看到.git目录和.gitignore内部文件/etc 例如,如果运行以下命令:

ls -la /etc | grep git

您应该在输出中看到这些行:

drwx------.  7 root     root       4096 Apr  2 21:42 .git
-rw-r--r--.  1 root     root        874 Apr  2 21:42 .gitignore

注意.git必须在本地系统保护(因此读,写,和用于仅超级用户执行权限); 因为版本控制系统不会自己跟踪文件权限,etckeeper提供此功能。

.git目录包含几个配置和说明文件,并准备投入使用的Git本身的其他子目录。 所述.gitignore文件,该文件指定了GIT中应该忽略明确未跟踪文件,目的是将其全部etckeeper进行管理。 不建议手动编辑,除了一个例外。

如果存在您不想使用版本控制跟踪的某些文件,则可以手动将它们添加到.gitignore文件。 要停止跟踪文件,首先打开.gitignore进行编辑。

sudo nano .gitignore

该文件的最后一行将读取# end section managed by etckeeper 添加要忽略的文件的文件名,每行一个,上面这一个。

file_to_ignore
another_file_to_ignore
# end section managed by etckeeper

然后保存并关闭文件。

您还需要从当前由git管理的缓存中删除这些文件,因为您之前已初始化本地存储库。

etckeeper vcs rm --cached file_to_ignore

重复上面的命令尽可能多的文件,你以前添加.gitignore

第4步-犯下/etc到Git仓库

在这一步中,我们将致力于我们最初/etc

添加第一个提交很容易; 只需输入以下命令即可。 虽然不是绝对必要,您应该为每个提交添加一个描述,以便以后能够轻松地识别它们。

sudo etckeeper commit "First commit of my /etc directory"

然后,您应该看到输出的文件列表提交到您的存储库,如下面(截断):

create mode 100644 selinux/targeted/modules/active/modules/dnsmasq.pp
create mode 100644 selinux/targeted/modules/active/modules/dnssec.pp
create mode 100644 selinux/targeted/modules/active/modules/docker.pp
create mode 100644 selinux/targeted/modules/active/modules/dovecot.pp

第5步 - 进行更改

在这一步中,我们将做出一些改变,以在一个文件中/etc并提交他们。 在下一步中,我们将还原这些更改。

首先,更改您选择的文件的内容。 例如,您可以通过添加在年底由一个IP地址及其相关主机名的行添加一个新的主机到本地名称解析/etc/hosts

首先,打开文件。

sudo nano /etc/hosts

然后,将以下行添加到文件的末尾。

192.168.0.2    node01

保存并关闭文件。 现在,让我们提交这个更改。

sudo etckeeper commit "Added a line to the hosts file"

最后,修改文件的权限。

sudo chmod 640 /etc/hosts

并修改其所有权(确保与自己的用户名来替换sammy )。

sudo chown sammy:sammy /etc/hosts

您可以查看当前的权限和所有权/etc/hosts

ls -l /etc/hosts

输出应如下所示:

-rw-r----- 1 sammy sammy 675 Apr 17 15:01 /etc/hosts

第6步 - 撤消更改

现在让我们测试etckeeper的恢复功能 - 不仅仅是文件及其内容,还有它的权限和所有权。

首先,列出你到目前为止提交的提交。

sudo git log --pretty=oneline

输出的第一列是唯一标识提交的SHA-1散列; 第二个是您在提交更改时使用的描述。

你的输出应该看起来像这样,用不同的哈希。

d0958fbe4d947a6a3ad98141f9fe89d1fd1a95c4 Added a line to the hosts file
76c193da740a3e137fa000773a79de8bb5c898b7 First commit of my /etc directory

记下每个提交的哈希值。 您将使用它们回滚到之前的状态。

让我们回滚/etc/hosts ,以我们开始本教程之前,它的样子。 将红色字符替换为与第一次提交对应的SHA-1哈希值。 注意,你不需要指定整个SHA-1哈希字符串; 一些字符唯一标识它会做。

sudo etckeeper vcs checkout 76c19 /etc/hosts

现在,我们可以检查内容,权限和所有权/etc/hosts看到,他们已经改回来。

看看文件的最后几行。

tail /etc/hosts

应该给你一个这样的输出,它缺少192.168.0.2 node01我们增加了,如预期一致。

...

# The following lines are desirable for IPv6 capable hosts
::1 test-etckeeper test-etckeeper
::1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6

检查当前权限和所有权/etc/hosts试。

ls -l /etc/hosts

你会看到一个看起来像这样的输出。

-rw-r--r-- 1 root root 704 Apr 17 15:01 /etc/hosts

文件的内容已正确恢复,以及权限和所有权。

结论

在本教程中,我们已经介绍了如何使用etckeeper,一个伟大的工具来存储你/etc目录中创建一个Git仓库。 您还可以使用到Bazaar,Mercurial或Darcs存储库。

无论您选择什么VCS,etckeeper都将帮助您保持在配置文件的顶部,并确保如果您需要撤消更改或修改功能,您始终可以回滚到先前的状态。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏