为托管应用程序生成/管理配置文件

mfi*_*nni 5 configuration-management

编辑 - 我开始研究 Perl 的模板工具包。它似乎非常适合下面描述的问题。有人玩过吗?任何(详细)建议?

我问了一个关于配置管理的问题,没有看到回复。我的问题可能太含糊了,所以让我们深入探讨一下。以下是我们在将新客户实例载入我们的托管应用程序时遵循的流程:您将如何管理此流程?我倾向于使用 Perl 脚本来填充模板以生成 shell 脚本、配置文件、XML 配置文件等。简单地看一下 CFengine 和 Chef,它们似乎不会减少工作量,因为我d 仍然必须手动指定工具中的所有更改/编辑。直接接触配置文件似乎没什么好处。

  1. 我们在核心(第 3 方)应用程序的主配置文件中添加了一个节。本节具有以下值
    • 定义实例(客户)名称
    • 此实例的 TCP 侦听器端口(当前未使用)
    • DB2 数据库名称(序列数字标识符,已经存在,它们由 DBA 为我们预留)
    • 三个子配置文件,按名称 - 它们需要从 3 个模板创建并以实例命名
  2. 子配置文件定义:
    • DB2 卷的文件路径
    • 存储对象的文件路径
    • 仅一个 DB2 卷的文件路径(是的,对于第一项是多余的。
  3. 我们运行一些应用程序命令,启动实例
  4. 我们做一些 LDAP 事情(为实例创建一个 OU 等)
  5. 我们在安全侦听器的配置文件中添加了一个节,作为到 LDAP 的传递
    • 实例名称
    • LDAP 单位部门
    • 以 TCP 端口为例
    • DB2 数据库名称
  6. 我们重新启动安全侦听器(非工作时间),从第 1 项更改主配置文件,停止并重新启动实例。它现在通过 LDAP 进行身份验证。
  7. 我们将此实例的停止和启动命令添加到 HA 故障转移脚本中。
  8. 我们将一个 XML 配置文件导入到实例中,该文件定义了客户实际应用程序的内容 - 用户名、组、权限和业务规则。XML 由实施团队提供。

现在,我们配置数据加载应用程序

  1. 我们在现有的顶级配置文件中添加了一个指向新客户级配置文件的节。新的客户级配置文件包括:
    • 实例(客户)名称
    • DB2 数据库名称
    • 任意数量的子配置文件,按名称
  2. 每个子配置文件定义:
    • 用于摄取、反馈、备份和失败的目录的文件路径
    • 这些文件路径具有指向客户特定文件夹的公共路径,然后每个子配置文件都有一个文件夹
  3. 需要创建每个文件路径
  4. 我们需要将此客户实例添加到我们的监控脚本中,以确认正确的进程正在运行并且可以登录。当然,那些监控配置文件包括实例名称、TCP 端口、DB2 数据库名称等。
  5. 还有一个需要为新实例配置的报告应用程序。你明白了。
  6. 还有中间件团队加载到 WAS 中的 XML。我们为他们提供了插入 XML 的值——他们可以很容易地将模板交给我们,我们可以将完整的 XML 返回给他们。

luk*_*yca 2

我认为您可以非常成功地使用Bcfg2来实现此目的。它是一个非常灵活和可扩展的配置管理系统。它配备了 Genshi 来实现基本的模板逻辑,但允许任意内联 Python 代码执行更复杂的操作。

您可以拥有一个包含有关每个实例的所有信息的数据库,然后设置 Bcfg2 以基于该数据库生成每一位配置。作为额外的好处,如果您必须在大量实例(或所有实例)中更改某些内容,这将是完全无痛的。