Общая системная архитектура для инструмента настройки Linux - PullRequest
4 голосов
/ 27 января 2012

Я собираюсь написать инструмент конфигурирования для моей системы на основе Ubuntu. Далее я хотел бы написать веб-интерфейсы (текст, графический интерфейс и веб-интерфейс). Но это самый сложный проект, который я хотел написать, и я не уверен в общей архитектуре, которую мне следует использовать.

На данный момент у меня есть функции и классы для изменения конфигурации системы. Но эти функции, вероятно, будут расти и изменяться. @Abki дал мне совет, как написать интерфейс для веб-интерфейсов. Я собираюсь сделать базовые классы для этого интерфейса, но я не знаю, как связать его с бэкэндом, а затем с внешними интерфейсами. Возможно, мне следует использовать шаблоны дизайна, такие как fasade, wrapper или что-то еще.

Похоже (без слоя interface_to_backend):

enter image description here

Мне сейчас наплевать на интерфейс и функции для изменения конфигурации системы. Но я не знаю, как написать средний слой, поэтому было бы легко связать его с остальными и расширить функциональность в будущем.

Мне нужны общие идеи, шаблоны проектирования, советы, как реализовать это в Python.

Ответы [ 3 ]

1 голос
/ 27 января 2012

Я не уверен, что это полностью подходит для SO, но я заинтригован и поэтому я укушу. Как Rubyist, я не могу помочь с Python, но вот несколько советов по шаблонам из моего опыта.

Мое первоначальное предложение: вы должны рассмотреть несколько претендентов. В частности, я бы посмотрел на cfengine, chef и bcfg2. Каждый из них рассказывает свою историю, но если бы я суммировал, я бы сказал:

  • Шеф-повар имеет прекрасный синтаксис dsl, но разочарован сложной архитектурой
  • bcfg2 написан на python, но, похоже, имеет раздражающую тенденцию использовать XML: (
  • cfengine имеет самые сильные теоретические основания в теории обещаний (что, кстати, очень интересно), но базируется на C.

Википедия также предоставляет довольно внушительный список инструментов управления конфигурацией , которые вы найдете полезными.

Что касается разработки вашего собственного инструмента, я бы предложил три принципа, которым вы хотите следовать:

  1. Простота, чем проще, тем лучше. Простота с точки зрения объема, конфигурации и использования - все это важно.
  2. Вам понадобится единственный способ хранения данных, вы должны иметь возможность отслеживать выбор по мере того, как он сделан, и не попирать изменения других людей (особенно в командной среде).
  3. Безопасность, большинству инструментов управления конфигурацией в какой-то момент требуются привилегии root. Поэтому вам нужно убедиться, что пользователи могут доверять коду, который они запускают.
1 голос
/ 27 января 2012

Вы можете использовать Fabric с Python, как описано в статье Настройка сервера Ubuntu с Python Fabric

Статья в Википедии на Сравнение программного обеспечения для управления конфигурацией с открытым исходным кодом имеетнесколько других инструментов, которые используют Python для этого.

Мне нравится подход SALT .

0 голосов
/ 27 января 2012

Если вы пишете GUI, текстовый / CLI и веб-интерфейсы с использованием Python, все они могут использовать один и тот же модуль Python.Таким образом, изменение одного интерфейса прозрачно влияет на другие.Плюс все это в области силы Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...