
bebebe
20.08.2018
21:29:11

cent
20.08.2018
21:29:21
клон чего? Код разрабов? И они держат у себя ключ в гите?)

bebebe
20.08.2018
21:29:30
единственное, что я бы собирал контейнер с уже ansible плейбукой
и подкладывал бы только inventory

Google

inqfen
20.08.2018
21:30:21

bebebe
20.08.2018
21:30:44
это будет гарантировать что плейбука и inventory совместимы.

inqfen
20.08.2018
21:30:57
Там не один плейбук, а под каждый репозиторий + инфраструктурные

bebebe
20.08.2018
21:31:20
и? будет много контейнеров
либо один с кучей репозиториев.

inqfen
20.08.2018
21:32:00
Один образ с кучей репозиториев, которые ещё и изменяются
И например разработчик переменную изменил, он пересобирает этот образ?

⚓D
20.08.2018
21:33:45

bebebe
20.08.2018
21:34:09
разработчик изменяет переменную, и делает git push, дальше работает CI/CD, которые тестируют изменения, и если они валидны выкадвыает докер образ
с :stable

inqfen
20.08.2018
21:36:55
Потому что там на сервере деплойного пользователя ещё нет

bebebe
20.08.2018
21:37:38
основная цель этих телодвижений - это деливерить контейнер (рабочее окружение)
который протестирован, и ready to use, а не отдельные плейбуки. не отдельные докер окружения где они могут запускаться, и не отдельные инвентори в которых вомзонжо есть конфлиткты в структуре и то как эту структуру использует плейбука

inqfen
20.08.2018
21:40:24

Google

inqfen
20.08.2018
21:41:31

bebebe
20.08.2018
21:41:40
б-г в помощь
основная идея - вы можете делать больше количество телодвижений решая определенную задачу
вопрос что вы деливерите на выходе? в моем случае деливерится контейнер которые запускатся и делает свое дело, в нем уже находится необходимый inventory, плейбуки-роли которые прошли тестирование в связке между собой


inqfen
20.08.2018
21:49:08
На выходе вообще запуск контейнера/ов с кодом на инстансе. Есть кучка проектов с сервисами и инфраструктурных проектов, при чем плейбуки в них могут быть и не связаны между собой никак. В текущей схеме условно говоря я могу отдать какой-то сервис в другой проект при чем и вместе с тем, как он и билдится и деплоится, этот процесс на другие сервисы может быть вообще не завязан (а в идеале и не должен, если у меня есть 20 сервисов например, то каждый должен разворачиваться вполне себе независимо). А в случае с образом, получается, что я как минимум билд и деплой всех сервисов должен хранить вместе
Хотя из общего у них собственно только роли, которые лежат отдельно

bebebe
20.08.2018
21:51:33
кул стори.
я так понял, исторически сложилось?

inqfen
20.08.2018
21:53:25
Подход разработки и доставки кода
Все в IaC

bebebe
20.08.2018
21:54:22
? давайте поговорим с какими проблемами вы сталкиваетесь ?
с таким подходом

inqfen
20.08.2018
21:56:20
Да в принципе особо ни с какими на самом деле, то что выше с ключами - тоже собственно не проблема, хотел уменьшить количество действий
В другой конторе работал как раз с подходом деплой отдельно, код отдельно
И своих подводных камней тоже хватало

bebebe
20.08.2018
21:57:57
очень рад за вас
вы какую переменную имели в виду, которая привязана к плейбуке/роли или к инветори?

inqfen
20.08.2018
22:03:24
Может быть и так и так
Как пример, изменил существующую переменную - изменил инвентори, добавил новую - изменил шаблон

bebebe
20.08.2018
22:04:11
не совсем понятно, а разрве разработчик может править inventory которое описывает окружение. разве это не делает deployment инженер?

Google

inqfen
20.08.2018
22:05:42

bebebe
20.08.2018
22:06:15
т.е. у вас inventory окружений лежат рядом с плейбуками в одном репозитории?

inqfen
20.08.2018
22:06:38
Да

bebebe
20.08.2018
22:07:06
спасибо, теперь все стало понятно, вопросов боьше нет

inqfen
20.08.2018
22:07:36
И при подходе gitlab ci оно должно быть именно так, остальное будет криво
Я уже пробовал)

bebebe
20.08.2018
22:09:53
inqfen я вам безусловно верю, но считаю что подход, где описание окружения соседствуют с плейбуками идеологически не верен.
видимо я не прав, если у вас нет проблем

inqfen
20.08.2018
22:10:42
Есть неудобства я бы сказал, но они есть при любом подходе, но разные

bebebe
20.08.2018
22:11:31
какие неудобства?

inqfen
20.08.2018
22:12:20
Ну как пример копипаста в разных проектах
Я использую один aws аккаунт, а реквизиты прописаны одни и те же в 5 местах

bebebe
20.08.2018
22:13:41
а почему не в одном?

inqfen
20.08.2018
22:14:13
С другой стороны, я могу просто отдать этот проект в другое подразделение и там есть все, что нужно чтобы его развернуть, он вполне самодостаточен

bebebe
20.08.2018
22:17:46
у меня это решено так:
1. есть контейнер с ansible и нужными модулями anbible:stable
2. от него наследуются контейнеры с описанием окружения FROM ansible:stable, назовем его env1:stable
3. от контейнера env1:stable наследуются все контейнеры которые будут запущены против окружения env1 FROM env1:stable
какие минусы вы видите в таком подходе?

inqfen
20.08.2018
22:18:36
Эти контейнеры служат для деплоя?

bebebe
20.08.2018
22:19:38
из пункта 3 - да
все остаьные - нет

inqfen
20.08.2018
22:25:53
Как минимум 2 минуса
1 - я не могу прочитать в одном месте все, что мне нужно для развёртывания (к примеру я только пришёл к вам и не знаю что в каком образе и как это доставляется в итоге на сервер)
2 - я не могу развернуть ПО без этих образов, к примеру к себе на виртуалку. А я как разработчик хочу поднять все окружение из своих веток и посмотреть как это работает и на ходу что-то изменять. Ну или банально у меня нет доступа к registry, а такое уже вполне случалось как раз на предыдущем месте благодаря ркн

Google

bebebe
20.08.2018
22:28:46
1. почему не можете прочитать? запустим контейнер из п.3 вы получите все что нужно (плейбуки, python модули, inventory)
2. тоже не понятно, вы можете запустить контейнер, изменять в нем плейбуки и далее комитить изменения.
вопрос с registry совсем не понятен, что мешает хранить в нескольких?

inqfen
20.08.2018
22:30:47
А, ну и ещё я что-то меняю в деплое сервисов, например всем пригорело с php переехать на go. 1 сервис я уже поменял, остальные нет. Всё в окружении production. Для каждого сервиса нужно сначала менять код, а потом пересобирать образ? Причём может быть ещё придётся и вариативность продумывать, сейчас ведь какая-то часть окружения деплоится совсем по-другому и надо отслеживать, чтобы эти изменения были совместимы с сервисами которые деплоятся по старому

bebebe
20.08.2018
22:33:13
этим и занимается CI, из примера выше, у нас остаются контейнеры
ansible:stable
env1:stable
от них наследуются php web:php, и web:go, но это уже вкусовщина


inqfen
20.08.2018
22:40:22
1. почему не можете прочитать? запустим контейнер из п.3 вы получите все что нужно (плейбуки, python модули, inventory)
2. тоже не понятно, вы можете запустить контейнер, изменять в нем плейбуки и далее комитить изменения.
вопрос с registry совсем не понятен, что мешает хранить в нескольких?
1. А где это все описано? Только в фс контейнера? Если да, то это крайне неудобно, репозиторий гораздо лучше. И код нередко важен для понимания работы или сборки сервиса, значит я смотрю то в контейнер, то в git
2. Мне необходимы лишние действия. Вместо того, чтобы мне просто склонировать код определённой ветки и запустить плейбук мне ещё дополнительно нужно качать контейнер под определённое окружение и думать как это разворачивается. Кстати подтягивается код с фс? Я например сделал изменения в коде, мне нужно пересобрать код и залить на свой же локалхост например.
3. Например нам не повезло и все наши registry забанил ркн. Как быстро восстановить эти образы и куда-то залить так, чтобы деплой не вставал?
ПО то разное, которое разворачивается в идеале одним контейнером
И билдится

Admin
ERROR: S client not available

inqfen
20.08.2018
22:43:17
Банально, нода, 3 проекта - 3 версии
Один проект остался as is и там нода 8 и всегда останется

bebebe
20.08.2018
22:43:48
я к сожалению потерял суть этого диалога, навсякий случай отвечу:
1. есть две точки входа, /etc/ansible и /opt/playbook
2. вы так же можете делать git clone изменения кода и запускать котнейрех с подмаунченым volume:
docker run --rm -it -v`pwd`:/opt/playbook ...
, в /opt/playbook будет прокинута директория с хост системы
3. вы не знаете как решить эту проблему?
еще раз, иерархия наследования трехуровневая, ansible, окружения, playbook-роли

inqfen
20.08.2018
22:44:00
Другие развиваются и версия обновляется

bebebe
20.08.2018
22:44:05
прощу прощения, я пожалуй сольюсь из этой бесседы

inqfen
20.08.2018
22:44:38
Хорошо, тоже спать уже надо

Максим
21.08.2018
08:44:46
Всем привет. Не подскажите с чем может быть связано?
TASK [Gathering Facts] *********************************************************
fatal: [VV10888-TEST]: UNREACHABLE! => {"changed": false, "msg": "argument must be an int, or have a fileno() method.", "unreachable": true}
Гугл ничего не подсказал

Nklya
21.08.2018
08:47:56
Гадать где ошибка без кода такое себе занятие

Максим
21.08.2018
09:20:45
уже разобрался, спасибо

Andrey
21.08.2018
09:21:32

Евгений
21.08.2018
09:41:52
Добры день. Как Вы решаете задачи, если нет специального модуля?
У меня из одной строки, генерирующей список пользователей на bash:
users=($( for NAME in `cut -d: -f1 /etc/passwd`; do uid=`id -u $NAME` ; if [ $uid -ge 1000 ]; then echo $NAME ; fi; done ))
echo ${users[@]}
получилось 4 таска:
https://pastebin.com/bs6MRcVZ
Есть идеи, как сделать лучше?

Sergey
21.08.2018
09:42:46

Google

Евгений
21.08.2018
09:45:28

Artem
21.08.2018
09:46:04
"дешевле" модуль напитонить)

Sergey
21.08.2018
09:52:05

Евгений
21.08.2018
09:55:21

Максим
21.08.2018
10:00:22
Подскажите, какой-нибудь "мусор" остаётся после отработки playbook'а, который может привести к каким-нибудь недобствам? Retry файлы отключены. Может Ansible ещё что-то куда-то писать, например, в скрытые каталоги?

Sergey
21.08.2018
10:01:32

Евгений
21.08.2018
10:02:38

Sergey
21.08.2018
10:03:22
Прошу извинить, мой парсер русского вывалился с ошибкой - не могу понять смысл фразы.

Максим
21.08.2018
10:05:40

Евгений
21.08.2018
10:06:48

Nklya
21.08.2018
10:14:52
Тут больше вопрос в том, что ты решаешь странную задачу.
Логичнее было бы менеджить пользователей ансиблом и не было бы этих приседаний
А если уж не получается, тогда да, приходится делать страшные конструкции, в несколько раз больше кода на баше
Или писать свой модуль

Евгений
21.08.2018
10:21:26

Nklya
21.08.2018
10:27:54
Там есть expires, которым мне кажется можно примерно то же сделать

bebebe
21.08.2018
10:36:49