【问题标题】:General system architecture for Linux configuration toolLinux配置工具的通用系统架构
【发布时间】:2012-02-20 01:14:51
【问题描述】:

我将为我的基于 Ubuntu 的系统编写配置工具。接下来我想编写前端(文本、GUI 和 Web)。但这是我想写的最复杂的项目,我不确定我应该使用的通用架构。

目前我有用于更改系统配置的函数和类。但这些功能可能会增长和改变。 @Abki gave我建议如何为前端编写接口。我将为这个接口创建基类,但我不知道如何将它与后端连接,然后与前端连接。可能我应该使用 fasade、wrapper 之类的设计模式。

看起来像(没有 interface_to_backend 层):

我现在不关心 UI 和更改系统配置的功能。但是我不知道如何编写中间层,所以很容易将它与其余部分连接并在未来扩展功能。

我需要一般的想法、设计模式和如何在 Python 中实现它的建议。

【问题讨论】:

    标签: python architecture user-interface ubuntu configuration


    【解决方案1】:

    我不确定这是否完全适合 SO,但我很感兴趣,所以我会咬一口。作为一名 ruby​​ist,我对 Python 帮不上什么忙,但这里是根据我的经验对 pattens 的一些看法。

    我最初的建议是您应该查看一些竞争者。具体来说,我会关注 cfengine、chef 和 bcfg2。他们每个人都讲述了一个不同的故事,但如果我总结一下,我会说:

    • Chef 有一个可爱的 dsl 语法,但被复杂的架构所拖累
    • bcfg2 是用 python 编写的,但似乎有使用 XML 的恼人倾向 :(
    • cfengine 在承诺理论(这是 v.interesting BTW)中拥有最强大的理论基础,但它是基于 C 的。

    维基百科还提供了一个令人印象深刻的configuration management tools 列表,您会发现它们很有用。

    关于设计你自己的工具,我建议你要遵循三个原则:

    1. 简单,越简单越好。范围、配置和使用的简单性都很重要。
    2. 您需要一种单一的方式来存储数据,您需要能够跟踪所做的选择,而不是践踏其他人的更改(尤其是在团队环境中)。
    3. 安全性,大多数配置管理工具在某些时候都需要 root 权限。因此,您需要确保用户可以信任他们正在运行的代码。

    【讨论】:

      【解决方案2】:

      您可以按照文章 Ubuntu Server Setup with Python Fabric 中的描述将 Fabric 与 Python 结合使用

      Comparison of open source configuration management software 上的 Wikipedia 文章还有其他几个使用 Python 执行此操作的工具。

      我喜欢SALT的做法。

      【讨论】:

        【解决方案3】:

        如果您使用 Python 编写 GUI、文本/CLI 和 Web 界面,它们都可以使用相同的 Python 模块。这样一来,一个界面的变化就会透明地影响其他界面。此外,所有这些都在 Python 的强项范围内。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-03-23
          • 2015-02-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-17
          • 2015-11-11
          • 2012-09-10
          相关资源
          最近更新 更多