@pro_ansible

Страница 557 из 625
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
единственное, что я бы собирал контейнер с уже ansible плейбукой
И зачем мне в раннере все держать и пересобирать его при каждом изменении?

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
Один образ с кучей репозиториев, которые ещё и изменяются

И например разработчик переменную изменил, он пересобирает этот образ?

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

inqfen
20.08.2018
21:36:55
ключ в переменеую окружения + ссх агент https://docs.gitlab.com/ee/ci/ssh_keys/ Зачем ключ репозитории хранить?
Ещё раз, не сканает, потому что например в инфраструктурном проекте для окружения production будет один ключ для уже используемого сервера и дугой для только раскатанного инстанса aws

Потому что там на сервере деплойного пользователя ещё нет

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

inqfen
20.08.2018
21:40:24
основная цель этих телодвижений - это деливерить контейнер (рабочее окружение) который протестирован, и ready to use, а не отдельные плейбуки. не отдельные докер окружения где они могут запускаться, и не отдельные инвентори в которых вомзонжо есть конфлиткты в структуре и то как эту структуру использует плейбука
Не очень себе IaC, как раз по моему мнению все, что необходимо для деплоя должно жить в коде и быть декларативно описано, а не жить в образе. Разве что нужно делать ещё и отдельно делать проект, где у меня будет образ собираться, который будет тянуть и все другие проекты

Google
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
не совсем понятно, а разрве разработчик может править inventory которое описывает окружение. разве это не делает deployment инженер?
В group vars лежат ещё например переменные для .env, которые как раз таки при одинаковом шаблоне отличаются для каждого окружения

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 забанил ркн. Как быстро восстановить эти образы и куда-то залить так, чтобы деплой не вставал?

этим и занимается CI, из примера выше, у нас остаются контейнеры ansible:stable env1:stable от них наследуются php web:php, и web:go, но это уже вкусовщина
А потом у нас в окружениях рано или поздно появляются несовместимые изменения, хотя бы просто в процессе изменения деплоя и мы имеем php:v2 php:v3 go:v2 go:v5 и уже непонятно что откуда наследуется и зачем их столько

ПО то разное, которое разворачивается в идеале одним контейнером

И билдится

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 Есть идеи, как сделать лучше?

Google
Евгений
21.08.2018
09:45:28
Artem
21.08.2018
09:46:04
"дешевле" модуль напитонить)

Sergey
21.08.2018
09:52:05
Зато можно накопировать и запустить сразу)
С pastebin тоже можно накопировать, и при этом не будет простыни - подумай о тех, кому придётся прокручивать несколько экранов на телефоне.

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

Евгений
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
Прошу извинить, мой парсер русского вывалился с ошибкой - не могу понять смысл фразы.
Программа chage изменяет количество дней между датой смены пароля...

а на хосте с самим ансиблом может что-то оставаться?
Почему бы нет. Я для другой задачи генерировал файл на нем с помощью delegate_to

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

А если уж не получается, тогда да, приходится делать страшные конструкции, в несколько раз больше кода на баше

Или писать свой модуль

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

Страница 557 из 625