Аналог функционала MODX Cloud для Ajenti

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

В общем суть вопроса такова, я могу его обновить для поддержки последней версии ajenti и выложить в свободный доступ, но вот совсем не знаю нужно ли это кому-нибудь и как отнесется сама организация MODX к такому решения, учитывая что логика создания образов построена на их Vapor скрипте.

В общем прошу всех отписать по вопросу нужно ли это вам и если кто знает про само отношение MODX к такому.
Alex Vakhitov
18 апреля 2014, 01:43
modx.pro
1
2 627
+2

Комментарии: 22

Василий Наумкин
18 апреля 2014, 06:58
0
Исходники Vapor открыты, однако внизу приписан копирайт MODX LLC и никакой свободной лицензии в репозитории я не вижу.
Наверное, самый правильный вариант был бы переписать дополнение так, чтобы оно не использовало vapor.

Честно говоря, я сейчас пишу что-то подобное на Python, поэтому было бы интересно посмотреть на исходники хоть с vapor, хоть без.
    Alex Vakhitov
    18 апреля 2014, 07:13
    0
    Я под ajenti это делал, и его api покрывает 90% функционала, но впринципе перенести все на чистый python с одно направленной функциональность проблем вообще нет.

    Сейчас посмотрел исходники vapor, перенести его на python дело выходных, наверное этим и займусь сейчас.

    Короче, если что могу помочь, все-таки я python программист (:
      Василий Наумкин
      18 апреля 2014, 09:08
      0
      Короче, если что могу помочь, все-таки я python программист (:
      Я теперь немного тоже. Вот, что пока накодил, только не смейся =)

      Помощь — это хорошо, но нужно набивать свои шишки самостоятельно.

        Alex Vakhitov
        18 апреля 2014, 09:15
        0
        Посмеюсь тихо в сторонке (: Вообще советую сразу изучить стандарт написания кода pep8, все сразу станет проще и намного легче читать код будет. Плюс посмотреть в сторону готовых решений и стандартных библиотек, все можно сделать гораздо проще (:
          Василий Наумкин
          18 апреля 2014, 09:20
          0
          Эммм… Ну мне тут PyCharm подсказывает, что моё творчество вполне похоже на PEP-8. Есть некоторые «continuation line over-indented for hanging indent», но я ваще не понимаю, как от них избавиться — он на них ругается всегда (может, глюк?).

          Да и модули помогает импортировать. Другое дело, что пока неясно что именно нужно импортировать из огромной коллекции готового, но это только методом проб и ошибок.

          Python-daemon для 3й версии нет, поэтому использую найденный скрипт. А всё остальное — родными модулями: logging, socketserver и т.д.
            Alex Vakhitov
            18 апреля 2014, 09:29
            0
            Ну это мелких огрех, небольшая ошибка форматирования. В pep8 есть еще нормы импорта модулей, особенно важно выбирать абсолютный или относительный путь для импорта, чтобы не было проблем при установки модулей из pip
              Alex Vakhitov
              18 апреля 2014, 09:42
              0
              Склонировал репозиторий, у тебя какой то треш из смеси пробелов и табуляций. Для исправлений можешь нажимать CMD+ALT+L исправит все явные ошибки, только часто ошибается в форматировании списков, словарей и кортежев по pep8
                Василий Наумкин
                18 апреля 2014, 10:15
                0
                У меня все табами, пробелов нигде нет.

                Возможно, это git что-то наисправлял при коммите.
                  Василий Наумкин
                  18 апреля 2014, 10:29
                  0
                  Переделал на пробелы — всё-таки в Python их черным по белому просят использовать.
        Alex Vakhitov
        18 апреля 2014, 07:57
        0
        Я вот думаю есть ли необходимость делать пакеты как vapor, или оставить все в своем формате и управлять посредством командной строки? То с php вообще связываться не хочется
          Василий Наумкин
          18 апреля 2014, 09:09
          0
          Я планирую бэкапить и восстанавливать без php.
            Alex Vakhitov
            18 апреля 2014, 09:24
            0
            Я написал простенькую прогу, сейчас тестирую как работает.

            Сейчас работает так: программа запускается от пользователя и имеет две функции создать образ или запилить на сайт, при создании парсит конфиги MODX, копирует бд, вычищает служебные таблицы, копирует пакеты и статику и все закидывает в архив. При распаковке имеет дополнительные настройки в виде пути до образа, если его нет смотрит директорию на предмет наличия образа (если их несколько предлагает выбрать один из них), дальше берет конфиги все заливает на свои места и чистит кеш
              Alex Vakhitov
              18 апреля 2014, 13:20
              0
              Выложил первую часть для дампа базы github
                Василий Наумкин
                18 апреля 2014, 17:12
                0
                Что-то дофига всяких обвязок, мне пока такое рано.

                Но посмотреть интересно, в целом похоже, что я двигаюсь в верном направлении.
                  Alex Vakhitov
                  18 апреля 2014, 17:24
                  0
                  Основные обвязки для установки через pip, то просто файлы не интересно (:
                  Осталось файлы в архив закидывать и тесты написать и будет готово решение для бекапов и создания образов
                    Василий Наумкин
                    18 апреля 2014, 17:25
                    0
                    Вот на тесты я бы тоже посмотрел — как оно вообще делается?

                    Пора уже себя приучать к порядку.
                      Alex Vakhitov
                      18 апреля 2014, 17:32
                      +1
                      Пишется проверка всех доступных действий, в данном случаи алгоритм простой, буде создаваться сай на modx и будут проводится миграции, если проблем не обнаруженно то тесты пройдены. Писать их можно через стандартные библиотеки. В общем на выходных сделаю посмотришь
          Виталий Батушев
          18 апреля 2014, 11:21
          +4
          Чувствую себя ребенком, который стоит у двери в темном коридоре и подслушивает разговор взрослых о подарках к Новому году. :)
            Алексей
            16 июня 2014, 06:04
            0
            Под какую версию ajenti написаны скрипты? задумал обновиться до последнего ajenti — хочется попробовать что-то новенькое
              Андрей Рябченко
              11 мая 2016, 11:43
              0
              Доброго дня!
              Подниму эту тему.
              Получилось в результате написать/переписать/выложить дополнение под Ajenti?
                Alex Vakhitov
                11 мая 2016, 11:52
                0
                Если честно уже не помню что было в результате, но сейчас это бессмысленно, есть modhost для этих задач или даже проще использовать docker и docker-machine для деплоя на vscale или DO
                Alexander V
                11 мая 2016, 12:05
                1
                0
                А в чем сложность бекапов?
                На Ansible элементарно делается.
                ---
                 - hosts: 'all'
                   gather_facts: no
                   vars_files: 
                    - 'vars/main.yml' 
                
                   tasks:
                    - name: 'Sync'
                      synchronize: src=/var/www/{{ username }}/ dest=/backup/{{ username }} owner=no group=no delete=yes
                      tags: 'update'
                    
                    - name: 'DB backup'
                      mysql_db: state=dump name={{ username }} target=/backup/{{ username }}/{{ username }}.sql login_user=root login_password={{ mysql_root_pass }}
                      tags: 'update'
                
                    - name: 'Sync restore'
                      synchronize: 
                       src: /backup/{{ username }} 
                       dest: /var/www/
                       delete: yes 
                       rsync_opts:
                        - "--exclude=.sql"
                      become: yes
                      become_user: "{{ username }}"
                      tags: 'restore'
                
                    - name: 'Del MySQL database'
                      mysql_db: 'name={{ username }} login_user=root login_password={{ mysql_root_pass }} state=absent'
                      tags: 'restore'
                
                    - name: 'Add MySQL DB'
                      mysql_db: 'name={{ username }} encoding=utf8 login_user=root login_password={{ mysql_root_pass }} state=present'
                      tags: 'restore'
                
                    - name: 'DB restore'
                      mysql_db: state=import name={{ username }} target=/backup/{{ username }}/{{ username }}.sql login_user=root login_password={{ mysql_root_pass }}
                      tags: 'restore'
                  Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                  22