Pavel
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
Коллеги, кто знает в чем может быть причина?
-----
$ 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
Aleksey
Evgeny
BusyBox sh != Bash
Aleksey
не?
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
фак, точно
Vlad
Vitalii
Привычка
Vitalii
я вот только не понял, почему гитлаб рекомендовал в доке читать из переменной и добавлять через ssh-add, если можно создать файл. Может что-то связанное с безопасностью?
Vitalii
С файлом не нужно ставить ssh-agent и запускать его и прочее.
Vlad
Vlad
и на диске ничего не хранится
Vitalii
ну вот не получилось у меня читать с переменной
Vitalii
тонкостей sh не познал еще:(
Vitalii
гугление не помогло
Vladimir
Молодой человек, простите конечно, но вам по-моему в другое окошко.
Vitalii
Aleksey
вот читаю я https://blog.docker.com/2017/01/docker-storage-infinit-faq/
и вижу там такой вот слайд
Aleksey
Aleksey
и понимаю докер опять сломает всю логику.
Aleksey
сейчас по контейнеру на каждый процесс. а потом внутри процесса будь добр разбей всё по механике хранения
Evgeny
Может в контейнере это будет склеиваются?
🏳️ Phil
Aleksey
ну infinit же
Aleksey
новый софтваре сторадж купленный докером
Sergei
ну а ломает-то где?
Sergei
у меня просто похожая схема с Ceph вместо infinit.sh вполне работает.
Aleksey
А ломает потому что либо abandonware либо infinit
Sergei
А ломает потому что либо abandonware либо infinit
сомнительно.
все возможности от докера, которые появились со старта проекта, вполне отключаемые.
можно отключить их сеть и использовать свои плагины.
можно отключить их swarm и использовать свои оркестраторы.
точно так же можно будет отключить их сторадж, вангую.
Sergei
есть, правда, серьезное подозрение, что infinit.sh до взрослого стораджа еще лет пять развиваться.
ceph все-таки не идиоты пишут и он не зря непростой получается.
🏳️ Phil
Sergei
Sergei
где-то есть постмортем, чтобы увидеть, где именно было их "сдуру"?
🏳️ Phil
я хз. но я не слышал, чтобы цеф ктото в здравом уме рекомендовал в прод
Sergei
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
А как порты выдаете приложениям?