python – Linux配置工具的常规系统体系结构

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

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

它看起来像(没有interface_to_backend图层):

我现在不关心UI和功能来改变系统配置.但我不知道如何编写中间层,因此将其与其余部分连接起来很容易,并在将来扩展功能.

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

最佳答案 我不确定这是否完全适合我,但我很好奇,所以我会咬人.作为一个rubyist我对Python的帮助不大,但是根据我的经验,这里有一些关于pattens的意见.

我最初的建议是你应该回顾那里的一些竞争者.具体来说,我会关注cfengine,chef和bcfg2.他们各自讲述了一个不同的故事,但如果我总结一下,我会说:

> Chef有一个可爱的dsl语法,但是由于复杂的架构而失望
> bcfg2是用python编写的,但似乎有使用XML的烦人倾向:(
> cfengine在诺言理论中具有最强的理论基础(v.interesting BTW),但是基于C语言.

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

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

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

点赞