[Проект] Система за управление на конфигурации на софтуер

  1. Общо взето, идеята е да се вземе някаква директория с конфигурационни файлове (например /etc), и те да се преобразуват по дадена система от правила до свързани дървовидни структури, чиито листа са самите настройки. Идеята е цялата конфигурация на софтуера в една ОС да може да се представи чрез едно голямо дърво, от чийто корен да можем лесно да достигнем до всяка индивидуална настройка. Всеки node в това дърво трябва да може да се достъпи чрез път, както в нормална файлова система.

    Вече има готов софтуер, който донякъде върши тази работа (нарича се Augeas), който дори има и bindings за Go (които е вероятно да ползвам в моята имплементация). Естествено, Augeas има някои недостатъци, които смятам да реша точно чрез моя проект:

    • Въпреки че дървото в Augeas прилича доста на UNIX-like файлова система, има няколко съществени разлики, които пречат то да се използва като такава:

      • Node, който съдържа други node-ове (т.е. директория във файлова система), може да има стойност. В една файлова система директориите не могат да съдържат данни.
      • Може да има повече от един node с едно и също име (по-точно, с един и същ път (във файлова система не може).
      • В пътя не може да има знаците * и [ (във файлова система може).

      Затова идеята ми е да напиша имплементация на файлова система (например драйвер за FUSE), в която всеки (обикновен) файл отговаря на настройка в Augeas дървото, като промените по нея са в реално време (т.е. Augeas дървото се променя веднага след прилагането им).

    • CLI клиентът на Augeas е с много гаден интерфейс. Мисля да го пренапиша, и да се пробвам да разширя функционалността му.

    • Може би ще се пробвам да включа и някакво utility за управление и deploy-ване на конфигурации на програми върху различни машини (като ще се взимат предвид неща като версии, зависимости и т.н.) (Но това, ако остане време.)

    Мисля, че този проект (ако се получи, естествено :smile:) ще е доста полезен за голям кръг от хора (най-вече системни администратори, но защо не и програмисти). Все пак имам и няколко други идеи, към които мога да пристъпя, ако не одобрите тази тема:

    • Някакъв опростен вариант на dependency-based init система.
    • Опростен вариант на package manager.

    Кажете какво мислите по въпроса :smile:

Трябва да сте влезли в системата, за да може да отговаряте на теми.