通过 RPM 管理配置?

Nik*_*nko 2 rhel5 rpm

我需要为我们小部门网络中的几台服务器提供一些配置定制。我们目前正在使用 RHEL5,因为我不想重复工作,所以我想使用该配置创建 RPM 并将它们上传到我们的 RHN。

现在的问题是:假设我想通过/etc/ntp.conf. 可悲的是,没有/etc/ntp.d/将我的文件放入其中,因此我必须ntp.conf用我的 RPM覆盖。我如何正确地做到这一点,即在ntp更新时不会丢失该配置并且也没有可能的配置文件冲突?

Dav*_*ley 10

我可以提出替代解决方案吗?您可能会发现像 Puppet 或 Cfengine2 这样的配置管理工具可以满足您的需求。您编写清单文件来描述您希望系统的外观,然后它消失并更改系统,使其看起来像那样。请注意您描述系统外观的重要区别,而不是您如何更改系统。ntp 的一个例子可能是:

class ntp {
   package {"ntpd":
       ensure => latest,
   }
   file { "/etc/ntp/ntp.conf":
       source => "puppet:///ntp/ntp.conf",
       owner => "root",
       group => "root",
       mode => 644,
       require => Package["ntpd"],
   }
   service { "ntpd":
       ensure => running,
       enable => true,
       subscribe => File["/etc/ntp/ntp.conf"],
   }
}
Run Code Online (Sandbox Code Playgroud)

当您在特定节点中包含此类时,您将安装 ntpd 包,将您的文件复制到服务器并确保守护进程正在运行。如果 puppet 对 ntp.conf 进行了任何更改,它将重新启动 ntp 守护进程(感谢 subscribe 行)。

这如何解决您的问题?好吧,当安装了新版本的 ntp 时,如果包覆盖了配置文件,puppet 会将旧版本复制回来。如果有任何差异,它会在更改时显示差异,因此您可以查看进行了哪些更改,因此您可以注意到任何差异并在需要这些更改时更新您的中央版本。


fre*_*eit 5

使用 David 的使用 puppet 的解决方案。真的。

但是,如果您下定决心,您可以做的是创建一个包含“/etc/ntp.conf.rassie”的包 rassie-ntp-conf。在规范文件中,您需要一个%post将您的配置复制到默认配置上的文件,以及一个%triggerin -- ntp-server执行相同操作的“ ”。这样,如果以后的升级覆盖了配置,触发器将复制回来。也许将一些东西放入 /etc/cron.daily 做同样的事情以确保......可能也需要让所有这些脚本service ntpd condrestart在 cp 之后做一个。

这就是基础知识。如果你想为更多的包做这件事,你可能会构建一个通过 /etc/rassie/ 运行的标准脚本来查找配置以复制到 /etc 并让 %post 和 %triggerin 内容运行它。

但是,真的,忽略这一点并使用 puppet 或 Chef 或 cfengine ......这种“通过 RPM 推出配置”方案充满了微妙的问题,这些问题源于 RPM 的基本问题,即 RPM 并非设计为让两个不同的包发生冲突单个文件。难以测试,难以调试,正是这种聪明的解决方案,让您以后希望自己一开始就使用 puppet。