我想创建一个中央配置文件存储库,以便我可以在修订控制(Mercurial)下对任何配置进行更改。这将包括一些 GNU/Linux 机器(将使用 etckeeper)、网络设备的配置文件、打印机的配置文件以及最后但并非最不重要的 Windows 配置。
我知道您可以将某些配置(如 ISA 和 DHCP)作为文本/xml 文件导入,甚至可以将共享文件夹作为注册表项导入,但是对于 GPO 和 AD、IIS、MSSql 等内容,有没有办法将配置作为平面文件获取?基本上,你能在 Windows 下拥有一些类似于 etckeeper 的东西吗?像一些基于powershell的命令之类的东西?
此外,ACL 和其他文件权限是否可以在版本控制 (hg) 下保留?
BTW,我已经读过了
无济于事。
我有兴趣在我的 Ubuntu 系统中安装带有 Mercurial 的 etckeeper。我的原因是我不知道如何使用Git,暂时不想学习。如果我检查包描述,听起来很有希望:
kent@rat:~$ apt-cache search etckeeper
etckeeper - store /etc in git, mercurial, or bzr
Run Code Online (Sandbox Code Playgroud)
我想知道如何从这里继续?我试过谷歌搜索,但我没有找到任何适用于 Ubuntu + etckeeper + Mercurial 组合的东西。
(如果您知道针对这种情况的好教程,那么链接是一个很好的答案。无需重复。)
具体来说,我想跟踪我的grub.conf( /boot/grub/grub.conf) 和一些 oracle 文件(即/db/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora)。
我尝试使用链接;但是 etckeeper/git 只跟踪链接指向的位置,而不是实际内容。而且我无法创建硬链接,因为文件在另一个卷上。
我知道我可以设置另一个 GIT 存储库,但我宁愿将其全部放在 etckeeper 中。
根据 nealmcb 的回答,我想出了以下脚本:
#!/bin/sh
set -e
# Based on nealmcb's idea/script from http://serverfault.com/questions/211425/
# If you want other configuration data or files on the system also
# opportunistically tracked via etckeeper, use this script to copy them in.
# If there is a hook of some sort available related to the files
# you're mirroring, you can call etckeeper directly and …Run Code Online (Sandbox Code Playgroud) 我注意到有几个人推荐使用etckeeper将版本控制应用于我的 /etc 目录。
在我看来,默认安装将存储库与您尝试管理的 /etc 放在同一台机器上。这适用于版本控制,但不会提供对文件进行服务器外备份的额外好处 - 或者允许我将 /etc 的部分从一台源机器复制到另一台。
是否可以在中央管理机器上共享单个 git 存储库,以便每个服务器上的 etckeeper 将其数据存储在同一位置?
(我现在用 svn 和一些自定义脚本做类似的事情来提交和恢复文件,但我必须记住在我进行更改时提交它们。)
我想弄清楚为什么在etckeeper提交后,我在重启时遇到了问题(由于这个伟大的事情已经解决了)。
我和 etckeeper 一起玩,git checkout some_commit_sha快速浏览了一下,然后git checkout master.
/etc在这些操作之后,我的文件权限似乎被破坏了。包括所有文件ssh_host_rsa_key passwd-, shadow-均rw-r--r--。我不知道 Git 不保存文件权限。
现在我修复了所有这些(我希望我没有错过任何东西)。
获得/etc.
我一直在阅读有关etckeeper,但我不知道您是否可以在 /etc 以外的任何其他目录上使用它。
在任何配置文件(我可以找到)中似乎都没有对 /etc 的引用,所以我保证这是硬编码的,您不能选择要监视的目录。这是真的?我也想让它管理/opt。这能做到吗?
我设置了 etckeeper 并添加了文件/etc/etckeeper/commit.d/60github-push,以便将提交推送到 github。
[orschiro@thinkpad etc]$ sudo cat /etc/etckeeper/commit.d/60github-push
#!/bin/sh
set -e
if [ "$VCS" = git ] && [ -d .git ]; then
cd /etc/
git push origin master
fi
Run Code Online (Sandbox Code Playgroud)
但是,推送到 github 失败,因为 etckeeper 尝试以 root 身份推送。是否应该使用 sudo 不保留我的 git 用户帐户设置,包括我的 ~/.ssh 密钥?
[orschiro@thinkpad etc]$ sudo etckeeper commit "test"
[master de5971c] test
Author: orschiro <orschiro@thinkpad.(none)>
3 files changed, 2 insertions(+), 1 deletion(-)
rename etckeeper/{ => commit.d}/60github-push (100%)
create mode 100644 test
no such identity: /root/.ssh/id_rsa: No such …Run Code Online (Sandbox Code Playgroud) 我想为我所有服务器的 etckeeper .git repos 建立一个中央 git 存储库。这里的建议是在 /etc/etckeeper/commit.d 中使用一个文件,它基本上看起来像这样,假设已经在 somedir 上的某个主机上设置了一个 git repo:
#!/bin/sh
cd /etc
git push faruser@farhost:somedir
Run Code Online (Sandbox Code Playgroud)
这样做的问题是,将所有服务器放在中央服务器上的同一个 repo 中会非常好。我试过
git push faruser@farhost:somedir/server1
Run Code Online (Sandbox Code Playgroud)
但那失败了。
如您所见,我以前从未使用过 git ......非常感谢有关如何实现这一点的任何想法:)
干杯,
安德烈亚斯
我正在尝试从 Ubuntu Karmic 升级到 Lucid,但它失败了,因为 etckeeper 检测到发生的更改sudo do-release-upgrade并阻止了 apt 的运行。如何暂时关闭它?
编辑:
** etckeeper detected uncommitted changes in /etc prior to apt run
** Aborting apt run. Manually commit and restart.
Exception during pm.DoInstall(): E:Problem executing scripts DPkg::Pre-Invoke 'if [ -x /usr/sbin/etckeeper ]; then etckeeper pre-install; fi', E:Sub-process returned an error code
Could not install the upgrades
Run Code Online (Sandbox Code Playgroud)
正如我所说,它声称有变化,即使我刚刚承诺。
按照将 /etc 置于源代码管理之下的建议,我已经安装了 ETCKEEPER。
看起来不错,但我有一些问题。
是否可以将您执行的命令放入更改消息中。因此,如果我运行apt-get install widget,我希望提交消息的第一行类似于install widget,而不是在 apt run 之后在 /etc 中提交更改的帮助较小
我希望能够从普通用户对 bzr 存储库进行查询。但是我被.bzr目录的保护所阻止。将其更改为a+r是否有任何问题
drwx------ 6 根根 4096 八月 30 日 13:00 .bzr
删除文件(例如 /etc/shadow/ 从 etckeeper 控制中)是否有任何问题?
我正在一个有几个管理员用户的服务器上工作。它们中的每一个都可以sudo用来进行配置更改。我们正在/etc使用etckeeper保持我们的目录版本控制。
但是,当我或其他管理员调用 时sudo etckeeper commit COMMITMESSAGE,git 使用root用户的名称和电子邮件作为提交消息。git config user.name在这种情况下,在 etc 存储库上的设置不起作用,因为每次etckeeper commit调用时,都将使用相同的数据。
我想要的是实际用户名和电子邮件出现在etckeeper git 存储库中,以便从提交日志中我可以追踪谁做了哪些更改。
任何帮助是极大的赞赏!
一段时间以来,我一直在我的 Digital Ocean Droplet 上使用 etckeeper,并且从那时起对 /etc 进行了大量更改。
我现在意识到我一直在使用 bzr 并且想切换到 git;但是担心我会丢失对 /etc 目录所做的所有增量更改。
有什么方法不仅可以从 bzr 切换到 git,还可以将 bzr 的增量更改也转换为 git 吗?
谢谢!
我想转储使用dpkg.
到现在为止我都使用dpkg -l.
但它有一个缺点:对结果进行排序没有意义。
头:
root@aptguettler:~# LANG=C dpkg-query -l| sort | head
+++-===========================================================-=================================================-============-================================================================================
Desired=Unknown/Install/Remove/Purge/Hold
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
ii a11y-profile-manager-indicator 0.1.10-0ubuntu3 amd64 Accessibility Profile Manager - Unity desktop indicator
Run Code Online (Sandbox Code Playgroud)
尾巴:
root@aptguettler:~# LANG=C dpkg-query -l| sort | tail
rc texlive-publishers-doc 2015.20160320-1 all TeX Live: Documentation files for texlive-publishers
rc texlive-science 2015.20160320-1 all TeX Live: Natural and computer sciences
rc texlive-science-doc 2015.20160320-1 all TeX Live: Documentation files for texlive-science
rc tpconfig 3.1.3-15 amd64 touchpad device configuration utility
rc …Run Code Online (Sandbox Code Playgroud)