0

根据我的要求,所有服务器的 rpm 可能相同,但根据服务器环境(如生产、登台、测试或其他)只有一个配置文件更改。我有所有服务器的配置文件包,但我不想在规范文件中对其进行硬编码,或者无法为所有服务器创建不同的 rpm。可以在客户端上安装 rpm 时指定配置文件的名称边。

4

2 回答 2

0

可能会重复这个,所以我会从那里复制我的答案......


我不认为有本地方式。我会%post像你所说的那样做。

但是,我会这样做(类似于我为工作开发的仅限内部包所做的事情):

  1. 三个单独的文件/etc/name.conf-developer/etc/name.conf-live等等。
  2. 让所有三个包都提供一个虚拟包,例如name-config
  3. 有主包需要name-config
    • 这将使rpm,yum或任何需要在同一事务中安装至少一个的
  4. 让所有三个包相互冲突
  5. 将每个配置包的%post(和可能的%verify)符号链接/etc/name.conf到正确的配置
    • 这也有助于向用户展示正在发生的事情

缺点:

  1. 这有点骇人听闻
  2. rpm --whatprovides /etc/name.conf会说它不属于任何包
于 2012-12-04T23:34:23.160 回答
0

亚伦的回答是一个很好的方法。另一种选择是使用 bash if 语句根据主机名(例如 *prod)在 %post 部分中的配置文件上运行 sed 命令。这将允许您根据环境替换特定变量。显然这是一个高级示例,因为我不知道您的配置设置是什么样的。不幸的是,这是一个坏包的例子,因为其他人很难管理。我建议您将任何配置文件移出 RPM,然后开始使用SaltChefPuppet,因为这是它们旨在完成的任务。

于 2012-12-05T05:02:52.733 回答