AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 39729
Accepted
Nikolai Prokoschenko
Nikolai Prokoschenko
Asked: 2009-07-13 23:11:21 +0800 CST2009-07-13 23:11:21 +0800 CST 2009-07-13 23:11:21 +0800 CST

通过 RPM 管理配置?

  • 772

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

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

rpm rhel5
  • 5 5 个回答
  • 1914 Views

5 个回答

  • Voted
  1. David Pashley
    2009-07-13T23:26:00+08:002009-07-13T23:26:00+08:00

    我可以建议一个替代解决方案吗?您可能会发现像 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"],
       }
    }
    

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

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

    • 10
  2. Best Answer
    freiheit
    2009-07-14T00:04:05+08:002009-07-14T00:04:05+08:00

    用大卫的解决方案代替使用木偶。真的。

    但是,如果您确定,您可以创建一个包含“/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 并非旨在让两个不同的包争夺的基本问题一个文件。难以测试,难以调试,正是那种聪明的解决方案,让你以后希望你一开始就使用 puppet。

    • 5
  3. Chad Huneycutt
    2009-07-14T13:37:11+08:002009-07-14T13:37:11+08:00

    无论您决定如何推出更改,如果您需要修改 ntp.conf(或任何配置文件,真的)并且不想批量替换文件,请查看 Augeas ( http://augeas.net)。有一点学习曲线,但它消除了解析/编辑文件的许多复杂性。

    • 1
  4. 3dinfluence
    2009-07-14T04:17:38+08:002009-07-14T04:17:38+08:00

    从长远来看,我认为 Puppet 或 CFEngine 是要走的路。但作为第一步,更容易实现版本控制系统(如 subversion 或 git)应该可以工作。即使在 Puppet 和 CFEngine 下,您也需要保留配置文件的更改历史记录。

    • 0
  5. Vechiato
    2009-07-19T05:08:41+08:002009-07-19T05:08:41+08:00

    我试图只使用 rpms 来处理。只有当您的配置文件非常简单时才有可能。

    最好的方法,但实现起来并不简单,是使用像每个人都建议的 puppet 和 cfengine 这样的工具。

    • 0

相关问题

  • 用于维护 yum 存储库的工具

  • CentOS 5 (RHEL 5) 的 Python 3.0 RPM

  • 为什么以 root 身份构建 RPM 是不好的?

  • 用于 centos 的 Python 源 RPMS?

  • 可以使用 easy_install 和 bdist_rpm 安装吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve