Как стать автором
Обновить

Комментарии 23

Все классно и уверен, что gui нужен, но вот пары моментов в install.sh меня содрогнуло:
apt-get install… apache2…
и ниже установка maria-db
Эээээ зачем вы так сразу с горяча?
Предоставьте право выбора и установки пакетов админу, ну не используют я апачь и ради gui он мне не нужен, а вы тут сразу его ставите, и мария у меня может стоит уже, причем из оф. репозитария.

Гораздо правильней написать инструкцию как ставить ваш софт под ту или иную конфигурацию, чем писать инсталлятор. Инсталлятор в 99% случаев не заработает на сервере где уже куча зоопарка.

А еще лучше создать docker контенер со всем что нужно.

А так спасибо за gui.
согласен на счет докер образа.
Спасибо за все классно )

Docker образ есть, а инструкция спрашивает насчет выбора базы — предлагает на выбор sqlite и mariadb, если выбрать марию, то на выбор будет 2 пункта: установить или использовать уже имеющийся сервер. Так же есть инструкция по ручной установке для Apache, думаю не трудно будет ее применить для того же Nginx-a

Все это описано в Readme репозитория :)
Ох уж этот яблокофон у меня, Readme то он как раз по умолчанию и не показал, а там и вправду все есть. Прошу прощения.
а что делать, если туда надо постоянно лазить, править, ну и конечно же нет лога всех действий, не писать же каждый раз cp cfg cfg_back, со временем запутаешься и забьешь на это дело.

Конфиг Haproxy в Ansible, Ansible в гит. И никаких проблем с версионированием изменений. Плюс без проблем разливается на кучу серверов.
Для сбора статистики — экспортер в Prometheus, откуда можно вытягивать данные в Grafana и строить красивые графики.

Ваш подход без сомнения имеет право на жизнь, но по моему описанное выше больше соответствует UNIX-way, т.к. легче масштабируется до десятков-сотен серверов и очень легко умеет в автоматизацию. Накрутить дополнительной логике в Ansible дело нескольких минут, на крайний случай часов, и вот у вас уже есть например авто дискавери бэкендов или автоматическое указание веса бэкенда в зависимости от количества процессорных ядер на нем и все остальное, что вы только сможете придумать. ;)
В статье забыл указать еще одну причину написания веб интерфейса — чтобы меня реже дергали ) Чтобы некоторые программеры, которые совсем не админы могли сами периодически что-то делать, а на сервера их пускать не хотелось. Ну и как не крути, сейчас у веб морды больше возможностей чем у ansible

Но вообще спасибо за идею, можно избавится от скриптов и перейти на ansible
Я может что то упустил, но почему в статья ни слова о технической составляющей проекта? Ну например:
— почему питон? Php изначально был заточен под веб, а у вас вроде как вебморда
— использовали какой то Фреймворк? Если да, то почему этот. Делали какое то сравнение?
— с какими необычными проблемами столкнулись и как их в итоге решили

Ну и т.д.

P.S.
У вас очепятка в readme.md, user-frendly пропущена буква i

P.P.S
Bash скрипты без -eu, как минимум, это рано или поздно — выстрел себе в ногу
Я может что то упустил, но почему в статья ни слова о технической составляющей проекта?

Потому что это не техническая статья )
Но если вам интересно, то я с удовольствием расскажу

— я вроде описал почему он. PHP — да, был заточен под веб, но именно под веб, а питон под систему и так как много придется работать именно с системой, то мне подумалось, что он лучше подходит. К тому же сейчас кучу-кучную пишут на питоне для веба
— в начале только Python и JQuery, со временем прикрутил Jinja2, т.к. стало поддерживать «макаронный» код стало сложно. Надеюсь, что когда-нибудь перейду на Flask или Django, но это не точно )
— самая интересная, так это то, что я не могу заставить работать апач с пост, вообще ужас… поэтому в некоторых формах пришлось использовать ajax для большей «секурности», но пост был бы лучше. Раздражает, что браузеры кэшируют по разному: ФФ кэширует формы, а хром скрипты, пару раз были из-за этого проблемы )

P.S. спасибо, поправлю
P.P.S. в принципе согласен, но пока хромых не замечал, даже как-то мигрировал продуктивное облако openstack в другое облако с помощью скрипта )
Страшно представить, что бы у вас вышло если бы вы написали этот гуй специально…
Так держать! :)
В README.md есть описание как развернуть образ из aidaho/haproxy-wi, а можно ли увидеть Dockerfile?
Разве при скачке образа его нельзя посмотреть?

А так вот он:

FROM centos
MAINTAINER Pavel Loginov (https://github.com/Aidaho12/haproxy-wi)

ENV http_proxy ip:3128
ENV https_proxy ip:3128

COPY epel.repo /etc/yum.repos.d/epel.repo

RUN yum -y install git nmap-ncat python34 dos2unix python34-pip httpd yum-plugin-remove-with-leaves svn gcc-c++ gcc gcc-gfortran python34-devel

COPY haproxy-wi.conf /etc/httpd/conf.d/haproxy-wi.conf

RUN git clone https://github.com/Aidaho12/haproxy-wi.git /var/www/haproxy-wi

RUN mkdir /var/www/haproxy-wi/keys/
RUN mkdir /var/www/haproxy-wi/app/certs/
RUN chown -R apache:apache /var/www/haproxy-wi/
RUN pip3 install -r /var/www/haproxy-wi/requirements.txt --no-cache-dir
RUN chmod +x /var/www/haproxy-wi/app/*.py
RUN chmod +x /var/www/haproxy-wi/app/tools/*.py
WORKDIR /var/www/haproxy-wi/app
RUN ./update_db.py
RUN chown -R apache:apache /var/www/haproxy-wi/
RUN chown -R apache:apache /var/log/httpd/
RUN tools/checker_master.py &

RUN yum -y erase git python34-pip python34-devel gcc-c++  gcc-gfortran gcc --remove-leaves
RUN yum -y autoremove yum-plugin-remove-with-leaves
RUN yum clean all
RUN rm -rf /var/cache/yum
RUN rm -f /etc/yum.repos.d/*

EXPOSE 80
VOLUME /var/www/haproxy-wi/

CMD /usr/sbin/httpd -DFOREGROUND
Помните что каждая команда в докере — это слой? Однородные команды лучше в одну строку запиливать. Да, и по возможности, все эти update/install выносите в самый конец, чтобы остальные слои не затрагивать при обновлениях пакетов.
Вообще, вы молодец, много кто просто боится выложить свои наработки.
и сам себе отвечу, если вам сборка была нужна только чтобы получить бинарник или выполнить скрипт (ы), используйте мульти-стейдж сборку, в конечном образе не будет мусора. Ведь эти uninstall/purge уже не помогут, файлы останутся в низлежащих слоях образа.
Ну надеюсь не зря выложил )

Надо почитать, не сильно углублялся в сборку образов, спасибо за совет
Воспользовался вашим советом и объединил все в один слой, теперь образ стал на 107 МБ меньше, и dockerfile выглядит так:

FROM centos 
MAINTAINER Pavel Loginov (https://github.com/Aidaho12/haproxy-wi) 

COPY epel.repo /etc/yum.repos.d/epel.repo 

RUN yum -y install httpd

COPY haproxy-wi.conf /etc/httpd/conf.d/haproxy-wi.conf 

RUN yum -y install git nmap-ncat python34 dos2unix python34-pip yum-plugin-remove-with-leaves svn gcc-c++ gcc gcc-gfortran python34-devel && \ 
git clone https://github.com/Aidaho12/haproxy-wi.git /var/www/haproxy-wi && \ 
mkdir /var/www/haproxy-wi/keys/ && \ 
mkdir /var/www/haproxy-wi/app/certs/ && \
chown -R apache:apache /var/www/haproxy-wi/ && \ 
pip3 install -r /var/www/haproxy-wi/requirements.txt --no-cache-dir && \ 
chmod +x /var/www/haproxy-wi/app/*.py && \ 
chmod +x /var/www/haproxy-wi/app/tools/*.py && \ 
chown -R apache:apache /var/www/haproxy-wi/ && \ 
chown -R apache:apache /var/log/httpd/ && \ 
yum -y erase git python34-pip python34-devel gcc-c++ gcc-gfortran gcc --remove-leaves && \
yum -y autoremove yum-plugin-remove-with-leaves && \ 
yum clean all && \ rm -rf /var/cache/yum && \ 
rm -f /etc/yum.repos.d/* && \ 
cd /var/www/haproxy-wi/app && \ 
./update_db.py 

EXPOSE 80 VOLUME /var/www/haproxy-wi/ 

CMD /usr/sbin/httpd -DFOREGROUND
Спасибо, что показали Dockerfile. У Вас не automated build образ, посмотрите в эту сторону по возможности. И ещё бы рекомендовал делать на Alpine, но это из личных убеждений…
Читал, когда только создал репозиторий, но я понял так, что мне это не подходит
Получилось запустить, прям CI получился )

Как бы теперь сделать, чтобы не хранить мусор для образа в основной репе… Пока создал другой репозиторий

В софтварном маршрутизаторе pfsense пакет haproxy тоже как и все остальное в нем настраивается через gui.

Это да, но тут суть чуть-чуть другая. В pfsanse или snapt, ты можешь управлять только одним сервисом Haproxy, в случае pfsanse так еще и куча левого софта будет. А тут только хапрокси и огромное любое количество серверов… Ну и плюс плюшки, которых нет в pfasnse и snapt
ну как бы pfSense это шлюз, да его нет смысла держать ради HAproxy одного. HAproxy в pfSense это доп плюшка всеголишь, и он может работать в режиме Master и Slave если включить High Availability между 2мя pfSense.
HAProxy тоже умеет мастер/слэйв, достаточно добавить keepalived и данная веб морда может помочь вам это сделать ;)

ну как бы pfSense это шлюз, да его нет смысла держать ради HAproxy одного. HAproxy в pfSense это доп плюшка всеголишь

ну я вот собственно о том же…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории