我需要为我们小部门网络中的几台服务器提供一些配置定制。我们目前正在使用 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 会将旧版本复制回来。如果有任何差异,它会在更改时显示差异,因此您可以查看进行了哪些更改,因此您可以注意到任何差异并在需要这些更改时更新您的中央版本。
使用 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。
| 归档时间: |
|
| 查看次数: |
1850 次 |
| 最近记录: |