Fork me on GitHub
#clojure-russia
<
2015-07-17
>
niquola06:07:14

А админы закрыли <!group>

niquola06:07:13

@shinych давайте просто считать, что понедельник через понедельник по умолчанию хэнгаут есть ;)

maxp07:07:10

уважаемые, а что за хэнгауты у вас по понедельникам?

maxp07:07:37

каков формат?

lowl4tency07:07:09

maxp: собираемся, выбираем тему и говорим

lowl4tency07:07:15

потом на ютубе запись

maxp07:07:40

что-то там пигшут "video removed by user"

maxp07:07:56

по понедельникам в какой время?

maxp07:07:16

как там продакшен конфиг принято задавать?

maxp07:07:33

все через env ?

maxp07:07:21

интрересно, это я один не люблю в resources всякую статику складывать, наряду с 500.html и 404.html

maxp08:07:38

кто как вообще деплоймент сlojure-app

maxp08:07:45

делает?

lowl4tency08:07:52

maxp: codedeploy

maxp08:07:24

это как бы большое про Амазон

maxp08:07:28

== больше

maxp08:07:20

я имел ввиду более простой случай, то есть скажем есть у меня приложеньице

maxp08:07:29

оно собирается в uberjar

maxp08:07:48

приложеньице может запускаться локально для девелопмента

maxp08:07:56

не тестовом сервере

maxp08:07:05

и на продакшен сервере

lowl4tency08:07:13

maxp: это уже up to you

lowl4tency08:07:27

maxp: можешь доставлять хоть ансиблом, хоть башскриптом

lowl4tency08:07:50

Пора запилить CLojureDevops!

maxp08:07:51

для каждого случая есть некий набор параметров

maxp08:07:30

причем, этот набор на продакшене контролирую не я.

lowl4tency08:07:00

maxp: у вас там кто занимается деплоем в прод?

maxp08:07:02

я понимаю, что есть тысяча способов, как это можно сделать, но хотелось бы узнать у уважаемой публики, кто как на деле с этим обходится

maxp08:07:32

у меня, например, есть хардкорно заданный дир, откуда приложение подчитывает .edn файлы

lowl4tency08:07:48

maxp: мое личное мнение что здесь нужно сесть и посмотреть как оно сделано в проде и либо менять весь процесс либо делать как в проде. Либо забить и ничего не делать simple_smile

maxp08:07:52

админ на продакшене в состоянии его править без моего участия.

lowl4tency08:07:06

maxp: а вот это вообще плохо

lowl4tency08:07:22

причем очень плохо

maxp08:07:30

что плохо? что админ отвечающий за сервер имеет возможнсть править конфиги?

lowl4tency08:07:14

То что во-первых на проде что-то правится

lowl4tency08:07:19

второе что это делает человек

lowl4tency08:07:24

третье что хардкод

maxp08:07:12

что плохого в хардкоде? к ~/.ssh/ например все привыкли?

maxp08:07:25

вот у меня так же

maxp08:07:59

в любом случае что-то придется захардкодить, как минимум названия конфигурационных переменных

lowl4tency08:07:56

~/.ssh не хардкод simple_smile

maxp08:07:24

а что это? simple_smile

maxp08:07:35

или web.xml

lowl4tency08:07:39

хардкод /home/vasya/.ssh

maxp08:07:40

или context.xml

maxp08:07:05

ну так скажем, это хардкод с относительными путями

ponimas08:07:37

~ - не хардкод, переменная же

maxp08:07:58

на самом деле / - тоже далеко не всегда постоянная величина

maxp08:07:04

если на то пошло

ponimas08:07:59

~ - никогда не постоянная

ponimas08:07:17

в этом и разница

maxp08:07:16

не знаю, у меня в приложениях никогда не меняется с момента старта simple_smile

maxp08:07:35

какой-то терминологический спор получается...

maxp08:07:27

так, все-таки, кто-нибудь использует способ передачи параметорв в clojure приложение, отличный от evn ?

delaguardo08:07:37

запустить на проде nrepl вместе с приложением и править все удаленно на живом процессе

maxp08:07:51

это прикольно, конечно simple_smile

lowl4tency08:07:52

maxp: ты проигнорил мои остальные пункты

maxp09:07:13

я вопрос задал, ты на него ничего толком не ответил

maxp09:07:34

спорить про названия конфиг файлов нет желания.

lowl4tency09:07:50

maxp: я ответил

lowl4tency09:07:04

lowl4tency [11:28 AM] maxp: мое личное мнение что здесь нужно сесть и посмотреть как оно сделано в проде и либо менять весь процесс либо делать как в проде. Либо забить и ничего не делать simple_smile maxp [11:28 AM] админ на продакшене в состоянии его править без моего участия. lowl4tency [11:29 AM] maxp: а вот это вообще плохо

maxp09:07:26

так, все-таки, кто-нибудь использует способ передачи параметорв в clojure приложение, отличный от env ?

maxp09:07:00

или командной строки

maxp09:07:34

к примеру, джангисты используют settings.py, settings-local.py и подобное

maxp09:07:50

ноджсники любят пакет config,

maxp09:07:21

который собирает конфигурационные параметры откуда только может (evn, yaml, xml ,...)

maxp09:07:58

в clojure чем принято решать подобную задачу?

delaguardo09:07:02

https://github.com/jarohen/nomad вот это решает проблему серверо-зависимых конфигов

delaguardo09:07:29

немного перегруженое решение, но работает

maxp09:07:44

спасибо

maxp09:07:35

я сейчас по-простому гружу .edn поверх него подгружаю другой с хоста, причем с обычным merge, без deep-merge

maxp09:07:57

и я не понял, nomad берет один глобальный конфиг, а потом из него вытаскивает свой хост?

delaguardo09:07:56

да, один конфиг в котором расписано что делать на каждом хосте

delaguardo09:07:10

я же говорю - перегруженое решение

delaguardo09:07:36

профит в нем только в том что конфиги спокойно в VCS можно хранить

delaguardo09:07:13

ну и можно раздергать на несколько файлов, что слегка упрощает поддержку этого добра

lowl4tency09:07:06

а не проще разрулить просто по каталогам?

lowl4tency09:07:14

staging/config/app

lowl4tency09:07:21

prod/config/app2

delaguardo09:07:28

так тоже никто не запрещает делать)

lowl4tency09:07:35

Я так делаю ._.

lowl4tency09:07:00

resources/staging/files/app

delaguardo09:07:20

от того же человека - https://github.com/jarohen/phoenix

maxp09:07:23

@lowl4tency: а на продакшен эти файлы в каком виде попадают? в jar'е?

lowl4tency09:07:03

дистрибутится это через клоудформейшен из s3

maxp09:07:05

ну то есть рядом где-то лежит

maxp09:07:11

грубо говоря

lowl4tency09:07:21

оно лежит в репе которая отвечает за деплой

lowl4tency09:07:28

в которой лежат темплейты стеков

lowl4tency09:07:34

и весь прочий шит

maxp09:07:46

понятно

lowl4tency09:07:49

дистрибутится в s3 самописным скриптом на питоне

lowl4tency09:07:59

через boto3 библиотечку

maxp09:07:19

у меня все проще - тачка локальная и там админ-балбес

lowl4tency09:07:37

maxp: я девопс таки

maxp09:07:58

но поправить некоторые параметры, глядя на другой файл в состоянии

lowl4tency10:07:16

Это противоречит моей религии

maxp10:07:31

в смысле, потому что ты сам админ? simple_smile

maxp10:07:10

когда сам админ можно мого что иначе сделать

maxp10:07:12

с другой стороны всю жизнь админить уже немного подзадалбывает, хочется переложить всю эту мутотень на кого-нибудь

maxp10:07:49

а вот еще схожий вопрос -

maxp10:07:30

использует ли кто инкрементальный номер билда в uberjar и как именно?

delaguardo10:07:07

на semantic versioning ссылку кинуть?

delaguardo10:07:23

там же все есть)

maxp10:07:37

нет, интересуне именно номер билда и как его запихать в uberjar

maxp10:07:56

видел даже где-то плагин такой

maxp10:07:11

для lein, но там была какая-то проблема, не помню уже

maxp10:07:25

то есть я могу состряпать некий шел скрипт, который вписывал бы номер в сорцы,

maxp10:07:44

но может кто-то это сделал уже более элегантно?

delaguardo10:07:06

а в чем проблема поменять версию в project.clj? или не о том речь?

maxp10:07:39

ну то есть bash/sed так или иначе?

maxp10:07:11

а вот еще вопрос, за одно, какой самый идеологически правильный способ получить во время компиляции номер версии из project.clj?

maxp10:07:04

грубо говоря, чтобы печаталось "Hello, wordl! project ... version ..."

maxp10:07:22

положить в ресурсы? создать отдельный файл.clj с константой? или как

maxp10:07:27

к примеру, для nodejs проекта есть project.json и все, что там написано, доступно

maxp10:07:57

здесь как быть? перед сборкой перекладывать project.clj в ресурсы и оттуда потом вытаскивать, что надо?

maxp10:07:38

юзкейс очень простой - хочется поключаясь к приложению иметь взоможность узнать какая именно версия/билд там отвечает

maxp10:07:05

то есть приложение должно это где-то в себе помнить.

a.espolov11:07:54

жаль для cljs это не работает

batsuev14:07:42

@maxp >> так, все-таки, кто-нибудь использует способ передачи параметорв в clojure приложение, отличный от env ? (edited) у меня вшиты в апп конфиги системы (stuartsierra/component) и параметры переключают конфиги

maxp14:07:28

компонент - это прикольно

maxp14:07:40

но я не о тех параметрах немного

maxp14:07:45

к примеру, админы решили, что с понедельника базаданных будет на другом хосте

maxp14:07:59

или меняются параметры для смс сервиса - их там несколько

maxp14:07:39

то есть таскать через шелл все это довольно не удобно, а запихивать в jar не получается

ponimas14:07:49

юзать консул/етцд?

maxp14:07:56

кстати, тоже вариант

maxp14:07:56

но, наверно, не для случая с парой десятков параметров

shinych14:07:44

а чего не реплом?

maxp14:07:58

в смысле реплом?

shinych14:07:44

ну, параметры заправить в систему

maxp14:07:17

тут как раз основной смысл в том, чтобы меня не было рядом, когда эти параметры заправляются simple_smile

shinych14:07:32

сделать простой язычок для конфигурации, админам объяснить? или там безнадёжно? )

maxp14:07:27

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

maxp14:07:52

но export VAR1=bla-bla уже надоело

maxp14:07:28

поэтому неподалеку от uberjar'а есть место, где лежат два файла .edn

maxp14:07:43

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

maxp14:07:57

другой который мерджится на базовый

maxp14:07:07

и где админ прописывает то, что надо

maxp14:07:43

при запуске уберджару в параметрах говорится имя этого host-конфига

maxp14:07:25

если там что-то нераспарсилось в этом .edn'е

maxp14:07:42

то приложение с громкими криками умирает на старте

batsuev16:07:55

>> или меняются параметры для смс сервиса - их там несколько ну и редеплой через ci чо

batsuev16:07:15

базы конфиг там же в настройках системы

lowl4tency16:07:18

>сделать простой язычок для конфигурации, админам объяснить? или там безнадёжно? ) ну не делайте так

lowl4tency16:07:16

shinych: это подойдет только в одном случае, если этот язычок ямл или джейсон и может заправляться снаружи автоматом

shinych17:07:46

так есть же .edn уже? админ его правит, запускает скрипт, который валидирует новую конфу и накатывает её

delaguardo18:07:56

"админ решил что с понедельника база на другом хосте” - вы серьезно?

delaguardo18:07:45

даже если админы решают без ведома прогеров перенести базу - то они сами в состоянии сделать так чтобы все работало как надо, зачем тут изменения конфигов?

delaguardo18:07:03

или их гнать надо из профессии

kxepal19:07:38

прогеров, которые используют инопланетные форматы конфигов и сервисы, которые чуть тронешь и сразу рассыпаются? да, надо (:

delaguardo19:07:55

)) таких тоже) но речь же про админов)

niquola22:07:10

Закончился 3 дневный марафон - pgday в Питере. 5 коре комитеров - отличная конфа. Говорили с Валентином из Zalando - они во всю уже clojure адаптируют. Я рассказал доклад про js в postgresql и осознал, что clojure-script в pg - вполне реален simple_smile

niquola22:07:47

Как минимум just for fun сделаю пруф концепт.