Аналог функционала MODX Cloud для Ajenti
Сейчас разбираю архивы того что делал в очень давно и провожу реструктурезацию серверов и нашел дополнение для ajenti которое позволяет делать образы сайтов на MODX, копировать их, устанавливать и все такое. Плюс просто может создавать, обновлять и удалять сайты, сбрасывать пароль администратора, делать полноценный бекап для переноса. Все работает при конфигурации как в инструкции по настройке хостинга от Василия.
В общем суть вопроса такова, я могу его обновить для поддержки последней версии ajenti и выложить в свободный доступ, но вот совсем не знаю нужно ли это кому-нибудь и как отнесется сама организация MODX к такому решения, учитывая что логика создания образов построена на их Vapor скрипте.
В общем прошу всех отписать по вопросу нужно ли это вам и если кто знает про само отношение MODX к такому.
В общем суть вопроса такова, я могу его обновить для поддержки последней версии ajenti и выложить в свободный доступ, но вот совсем не знаю нужно ли это кому-нибудь и как отнесется сама организация MODX к такому решения, учитывая что логика создания образов построена на их Vapor скрипте.
В общем прошу всех отписать по вопросу нужно ли это вам и если кто знает про само отношение MODX к такому.
Комментарии: 22
Исходники Vapor открыты, однако внизу приписан копирайт MODX LLC и никакой свободной лицензии в репозитории я не вижу.
Наверное, самый правильный вариант был бы переписать дополнение так, чтобы оно не использовало vapor.
Честно говоря, я сейчас пишу что-то подобное на Python, поэтому было бы интересно посмотреть на исходники хоть с vapor, хоть без.
Наверное, самый правильный вариант был бы переписать дополнение так, чтобы оно не использовало vapor.
Честно говоря, я сейчас пишу что-то подобное на Python, поэтому было бы интересно посмотреть на исходники хоть с vapor, хоть без.
Я под ajenti это делал, и его api покрывает 90% функционала, но впринципе перенести все на чистый python с одно направленной функциональность проблем вообще нет.
Сейчас посмотрел исходники vapor, перенести его на python дело выходных, наверное этим и займусь сейчас.
Короче, если что могу помочь, все-таки я python программист (:
Сейчас посмотрел исходники vapor, перенести его на python дело выходных, наверное этим и займусь сейчас.
Короче, если что могу помочь, все-таки я python программист (:
Короче, если что могу помочь, все-таки я python программист (:Я теперь немного тоже. Вот, что пока накодил, только не смейся =)
Помощь — это хорошо, но нужно набивать свои шишки самостоятельно.
Посмеюсь тихо в сторонке (: Вообще советую сразу изучить стандарт написания кода pep8, все сразу станет проще и намного легче читать код будет. Плюс посмотреть в сторону готовых решений и стандартных библиотек, все можно сделать гораздо проще (:
Эммм… Ну мне тут PyCharm подсказывает, что моё творчество вполне похоже на PEP-8. Есть некоторые «continuation line over-indented for hanging indent», но я ваще не понимаю, как от них избавиться — он на них ругается всегда (может, глюк?).
Да и модули помогает импортировать. Другое дело, что пока неясно что именно нужно импортировать из огромной коллекции готового, но это только методом проб и ошибок.
Python-daemon для 3й версии нет, поэтому использую найденный скрипт. А всё остальное — родными модулями: logging, socketserver и т.д.
Да и модули помогает импортировать. Другое дело, что пока неясно что именно нужно импортировать из огромной коллекции готового, но это только методом проб и ошибок.
Python-daemon для 3й версии нет, поэтому использую найденный скрипт. А всё остальное — родными модулями: logging, socketserver и т.д.
Ну это мелких огрех, небольшая ошибка форматирования. В pep8 есть еще нормы импорта модулей, особенно важно выбирать абсолютный или относительный путь для импорта, чтобы не было проблем при установки модулей из pip
Склонировал репозиторий, у тебя какой то треш из смеси пробелов и табуляций. Для исправлений можешь нажимать CMD+ALT+L исправит все явные ошибки, только часто ошибается в форматировании списков, словарей и кортежев по pep8
У меня все табами, пробелов нигде нет.
Возможно, это git что-то наисправлял при коммите.
Возможно, это git что-то наисправлял при коммите.
Переделал на пробелы — всё-таки в Python их черным по белому просят использовать.
Я вот думаю есть ли необходимость делать пакеты как vapor, или оставить все в своем формате и управлять посредством командной строки? То с php вообще связываться не хочется
Я планирую бэкапить и восстанавливать без php.
Я написал простенькую прогу, сейчас тестирую как работает.
Сейчас работает так: программа запускается от пользователя и имеет две функции создать образ или запилить на сайт, при создании парсит конфиги MODX, копирует бд, вычищает служебные таблицы, копирует пакеты и статику и все закидывает в архив. При распаковке имеет дополнительные настройки в виде пути до образа, если его нет смотрит директорию на предмет наличия образа (если их несколько предлагает выбрать один из них), дальше берет конфиги все заливает на свои места и чистит кеш
Сейчас работает так: программа запускается от пользователя и имеет две функции создать образ или запилить на сайт, при создании парсит конфиги MODX, копирует бд, вычищает служебные таблицы, копирует пакеты и статику и все закидывает в архив. При распаковке имеет дополнительные настройки в виде пути до образа, если его нет смотрит директорию на предмет наличия образа (если их несколько предлагает выбрать один из них), дальше берет конфиги все заливает на свои места и чистит кеш
Выложил первую часть для дампа базы github
Что-то дофига всяких обвязок, мне пока такое рано.
Но посмотреть интересно, в целом похоже, что я двигаюсь в верном направлении.
Но посмотреть интересно, в целом похоже, что я двигаюсь в верном направлении.
Основные обвязки для установки через pip, то просто файлы не интересно (:
Осталось файлы в архив закидывать и тесты написать и будет готово решение для бекапов и создания образов
Осталось файлы в архив закидывать и тесты написать и будет готово решение для бекапов и создания образов
Вот на тесты я бы тоже посмотрел — как оно вообще делается?
Пора уже себя приучать к порядку.
Пора уже себя приучать к порядку.
Пишется проверка всех доступных действий, в данном случаи алгоритм простой, буде создаваться сай на modx и будут проводится миграции, если проблем не обнаруженно то тесты пройдены. Писать их можно через стандартные библиотеки. В общем на выходных сделаю посмотришь
Чувствую себя ребенком, который стоит у двери в темном коридоре и подслушивает разговор взрослых о подарках к Новому году. :)
Под какую версию ajenti написаны скрипты? задумал обновиться до последнего ajenti — хочется попробовать что-то новенькое
Доброго дня!
Подниму эту тему.
Получилось в результате написать/переписать/выложить дополнение под Ajenti?
Подниму эту тему.
Получилось в результате написать/переписать/выложить дополнение под Ajenti?
Если честно уже не помню что было в результате, но сейчас это бессмысленно, есть modhost для этих задач или даже проще использовать docker и docker-machine для деплоя на vscale или DO
А в чем сложность бекапов?
На Ansible элементарно делается.
На 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'
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.