Pavel
Можно делать это ансиблом, солтом, и еще 100500 способов
Pavel
По маске сервера пинговать..
Vitalii
сейчас про swarm читаю
Vitalii
я думаю в докере предусмотрено то, что мне надо только надо это найти
Pavel
Я слышал что он глючный
Vitalii
я слышал что докер дырявый )
Pavel
ага
Pavel
докер не для слабаков
Vladimir
в докере предусмотрен только докер
Sergei
ssh - это руками
ssh root@remote.host 'uptime; df -h' твоя ci такую команду может запустить? вместо uptime, как ты понял, можно запускать нужные тебе команды или скормить shell скрипт, который лежит локально. ну и авторизацию настроить по ключам
Sergei
когда появится кластер - тогда можно и усложнить
Vitalii
когда появится кластер - тогда можно и усложнить
Да, это хорошее решение. Я не понимал как авторизоваться по ssh в ci. Вчера ссылку кинули, там вроде расписано :)
Vitalii
Коллеги, кто знает в чем может быть причина? ----- $ eval $(ssh-agent -s) Agent pid 23 $ ssh-add < (echo "$SSH_PRIVATE_KEY") /bin/sh: eval: line 60: syntax error: unexpected "(" ERROR: Build failed: exit code 2
Vitalii
запускаю в alpine linux через /bin/sh
Evgeny
BusyBox sh != Bash
Aleksey
не?
Vitalii
BusyBox sh != Bash
это понятно) как решать-то*
Vitalii
не?
сек
Vlad
Убери пробел перед скобкой. https://docs.gitlab.com/ce/ci/ssh_keys/README.html
Vitalii
я уже как угодно пробовал и с ним и без него
Vitalii
/var/www/html # ssh-add <(echo "key") sh: syntax error: unexpected "("
Vitalii
и я думаю что не в пробеле дело
Vitalii
я сейчас в файл загоню текст, а потом из файла читать буду
Vlad
echo "$SSH_PRIVATE_KEY" | ssh-add
Vitalii
$ eval $(ssh-agent -s) Agent pid 23 $ mkdir -p ~/.ssh $ echo "${SSH_PRIVATE_KEY}" | ssh-add ERROR: Build failed: exit code 1
Vitalii
:)
Vitalii
такой вариант решил проблему - mkdir -p ~/.ssh - echo "${SSH_PRIVATE_KEY}" > ~/.ssh/id_rsa - chmod 0600 ~/.ssh/id_rsa - ssh-add -k ~/.ssh/id_rsa
Vlad
А зачем ssh-add если уже записал в id_rsa?
Vitalii
фак, точно
Vitalii
Привычка
Vitalii
я вот только не понял, почему гитлаб рекомендовал в доке читать из переменной и добавлять через ssh-add, если можно создать файл. Может что-то связанное с безопасностью?
Vitalii
С файлом не нужно ставить ssh-agent и запускать его и прочее.
Vlad
и на диске ничего не хранится
Vitalii
ну вот не получилось у меня читать с переменной
Vitalii
тонкостей sh не познал еще:(
Vitalii
гугление не помогло
Vladimir
Молодой человек, простите конечно, но вам по-моему в другое окошко.
Aleksey
вот читаю я https://blog.docker.com/2017/01/docker-storage-infinit-faq/ и вижу там такой вот слайд
Aleksey
Aleksey
и понимаю докер опять сломает всю логику.
Aleksey
сейчас по контейнеру на каждый процесс. а потом внутри процесса будь добр разбей всё по механике хранения
Evgeny
Может в контейнере это будет склеиваются?
Aleksey
А опиши подробнее
фил ну картинка же
Aleksey
Может в контейнере это будет склеиваются?
то что оно будет склеиваться не означает что это будет проще эксплуатировать...
🏳️ Phil
фил ну картинка же
я не понимаю как она относится к докеру. хорошая картинка
Aleksey
ну infinit же
Aleksey
новый софтваре сторадж купленный докером
Sergei
ну а ломает-то где?
Sergei
у меня просто похожая схема с Ceph вместо infinit.sh вполне работает.
Aleksey
А ломает потому что либо abandonware либо infinit
Sergei
А ломает потому что либо abandonware либо infinit
сомнительно. все возможности от докера, которые появились со старта проекта, вполне отключаемые. можно отключить их сеть и использовать свои плагины. можно отключить их swarm и использовать свои оркестраторы. точно так же можно будет отключить их сторадж, вангую.
Sergei
есть, правда, серьезное подозрение, что infinit.sh до взрослого стораджа еще лет пять развиваться. ceph все-таки не идиоты пишут и он не зря непростой получается.
Sergei
а сколько ceph пишут и когда он наконец заработает кстати?
ceph работает уже года три точно, с пробуждением. пишут 9 лет.
🏳️ Phil
ceph работает уже года три точно, с пробуждением. пишут 9 лет.
странно, а мне казалось дримхост тут неделю изза цефа лежал буквально осенью
Sergei
где-то есть постмортем, чтобы увидеть, где именно было их "сдуру"?
🏳️ Phil
я хз. но я не слышал, чтобы цеф ктото в здравом уме рекомендовал в прод
Sergei
https://cds.cern.ch/record/2015206/files/CephScaleTestMarch2015.pdf например, полтора года назад.
CC-BY-SA-4.0/Docker-ce30.0
journalctl
denis
Хочу деплоить каждый бранч на отдельный сабдомен. Сейчас есть мультиконтейнерное приложение, все это деплоится на aws Elastic Beanstalk. Можно конечно создавать Elastic Beanstalk enviroment на каждый бранч, но это ОЧЕНЬ долго. Может кто делал подобное?
Slava
берешь Jenkins, берешь docker compose, готово
denis
jenkins + registry это все есть. Как разворачивать то?
Slava
у вас docker-compose.yml тоже в репозитории?
Slava
или вы как-то иначе все деплоите?
Slava
лучше деплоить так же, как вы это делаете на прод, чтобы флоу сам тестить заодно
denis
Elastic Beanstalk во первых не работает с docker-compose, ему нужен свой конфинг. Но суть в том, что на один энваремент задеплоить можно только одно мультиконтейнерное приложение, и на каждый бранч разворачивать энваремент совсем дело. Вот и ищу другие способы
Slava
хм, понятно. Не знал про Beanstalk. У нас для разработки у нас выделенный сервак, мы там просто Jenkins подняли и в Job'е на баше просто прописали все необходимое для поднятия
Slava
без docker-compose, но с ним вышло бы так же (разве что префикс потребовался бы для веток)
denis
получается, на каждую ветку свой docker-compose, потом все дело деплоится на сервере и подставляется домен, грубо говоря на одном сервере много версий приложения крутится, правильно понимаю?
Slava
примерно так, да. В docker-compose можно переменные окружения передавать, которые можно заюзать в самом docker-compose.yml ( https://docs.docker.com/compose/environment-variables/ ). Возможно, с ними получится 1 docker-compose.yml иметь на все ветки. Но имхо лучше этот файл закинуть в какой-нибудь репозиторий, чтобы разработчики могли для своей ветки изолированно добавлять/удалять сервисы
Slava
тут еще есть такая проблема. К примеру, у нас 3 образа. У них дофига версий. Как понять, какие версии для этих образов поднимать. Мы у себя такой вопрос конвенциями решили. Конкретно в этом случае можно: 1. теги именовать так же как ветки 2. решить, какой тег будет по умолчанию 3. когда деплоим ветку XXX, поднимаем контейнеры с тегом XXX, либо дефолтные Как сделать 3 пункт в docker-compose.yml я хз. Возможно, перед всей этой петрушкой проверять, есть ли контейнер A с тегом XXX. Если нет - то тегировать дефолтный. Тогда 2 пункт не нужен. Получается несколько кустарно, но должно работать :) Возможно, кто-то из присутствующих по-лучше способ придумал
denis
А как порты выдаете приложениям?