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

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

编辑 - 我开始研究 Perl 的 Template-Toolkit。它似乎非常适合解决下面描述的问题。有人玩过吗?有什么(详细)建议吗?

我问了一个关于配置管理的问题,但还没有收到回复。我的问题可能太模糊了,所以让我们谈谈实际情况。这是我们将新客户实例加入托管应用程序时遵循的流程:您将如何管理它?我倾向于使用 Perl 脚本来填充模板以生成 shell 脚本、配置文件、XML 配置文件等。简要查看 CFengine 和 Chef,似乎它们不会减少工作量,因为我仍然必须手动指定工具中的所有更改/编辑。与直接接触配置文件相比,这似乎没有太大的好处。

  1. 我们在核心(第三方)应用程序的主配置文件中添加了一个节。此节具有以下值:
    • 定义实例(客户)名称
    • 此实例的 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. 中间件团队还会将 XML 加载到 WAS 中。我们为他们提供值,让他们插入到 XML 中 - 他们可以非常轻松地将模板交给我们,然后我们就可以返回完整的 XML。

答案1

我认为你可以用乙型肝炎病毒在这方面非常成功。这是一个非常灵活且可扩展的配置管理系统。它自带 Genshi 以提供基本的模板逻辑,但允许任意内联 Python 代码执行更复杂的操作。

您可以拥有一个包含每个实例的所有信息的数据库,然后设置 Bcfg2 以根据该数据库生成每一项配置。作为额外的好处,如果您需要在大量实例(或所有实例)中更改某些内容,这将完全没有麻烦。

答案2

这看起来很定制,所以我会考虑制作自己的工具织物让后端运行所有这些Django用于网络前端。

使用 fabric 作为后端,您也可以在没有 django 的情况下在 ssh 中使用它。

相关内容