@pro_ansible

Страница 515 из 625
Vladimir
18.07.2018
05:39:02
я про значения переменных через varname=1

Рекомендуют делать всё ямллайк

ShadoWalkeR
18.07.2018
05:40:28
Нужен. Сейчас мне приходится пилить такую конструкцию зачастую: - name: Generate {{ daemon }} template: .. - name: Reload systemd systemd: .. Помоему это проще: - name: Generate {{ daemon }} template: .. handler: restart_systemd {{ daemon}}

Vladimir
18.07.2018
05:41:29
Ну так раскатка миллиона юнитов не частое дело.

Google
Vladimir
18.07.2018
05:41:54
Юнит как и юзер и директории в пакете должен быть

ShadoWalkeR
18.07.2018
05:42:19
Огромнейшее "спасибо" за то что на блок нельзя повесить loop - 2-3 шага выкидывать в отдельную таску изза позиции разрабов "Мы считаем что этого делать не нужно" просто идиотизм

Gleb
18.07.2018
05:42:45
Юнит как и юзер и директории в пакете должен быть
В каком пакете? Аля собирать рпм каждый раз под такую задачу?

Vladimir
18.07.2018
05:43:26
у тебя код поменялся продукта собирай рпмку.

ShadoWalkeR
18.07.2018
05:44:14
Я при раскатывании сервера не генерирую только 1 вещь - скопировать скрипты из гита. Все остальное - запихать в systemd, добавить на мониторинг, запустить/перезапустить у меня сделано шаблонами, генерацией и тд

И слышать что ансибл не для этого очень странно - а для чего он тогда нужен?

Vladimir
18.07.2018
05:47:35
Ансибл для этого но и использовать его нужно так как он задумывался

ShadoWalkeR
18.07.2018
05:48:06
Никаких шаблонов - херачим портянки аналогичные башу?

Vladimir
18.07.2018
05:49:05
ну так класть миллион юнитов в одной роли это странный путь.

педалить киллометровые лупы тоже так себе затея. Это как регекспы на пол экрана

ShadoWalkeR
18.07.2018
05:51:08
А у меня микросервис - не слышали о таком? Когда программа состоит из нескольних независимых модулей. И с точки зрения интеграции в systemd они отличаются только именем запускаемого скрипта

Vladimir
18.07.2018
05:51:22
Ты для проверки нехернюлиясделал давай другим свои роли почитать. Если человек с ходу не понял как оно работает значит чтото не так

Google
Vladimir
18.07.2018
05:51:49
Ну так не крути микросервисы на одной ноде

Это как бы не путь микросервисов

и если всё таки очень надо собирай рпмки или дебки а ансиблом их ставь.

ShadoWalkeR
18.07.2018
05:54:26
Путь путь. Просто они являются разными интерфейсами - каждый для своей задачи. Вторая половина накатывается на другие сервера.

Vladimir
18.07.2018
05:56:18
Тогда пакеты. у всех сейчас есть плагины для сборки. Собираются если спеки не кривые быстро

Получаем версионирование из коробки и быстрый откат

Nklya
18.07.2018
05:57:07
Или докер

Vladimir
18.07.2018
05:57:43
Ну докер это отдельная инфраструктура к которой надо прийти

ShadoWalkeR
18.07.2018
06:00:00
Получаем версионирование из коробки и быстрый откат
У нас для этого есть гит и тестовый стенд.

Vladimir
18.07.2018
06:00:49
вот только нативные средства системы ничего про твой гит не знают.

а на чём у тебя микросервисы?

ShadoWalkeR
18.07.2018
06:01:13
Руби

Gleb
18.07.2018
06:01:36
Это как бы не путь микросервисов
пошёл писать ишшую в гит кубернетеса, а то вон чё придумали демоны

ShadoWalkeR
18.07.2018
06:01:56
вот только нативные средства системы ничего про твой гит не знают.
А в чем смысл ансибла тогда? Подключить репы и накатить пакеты тогда можно простым баш скриптом

Vladimir
18.07.2018
06:02:40
пошёл писать ишшую в гит кубернетеса, а то вон чё придумали демоны
из контекста не вырывай. много микросервисов на одной ноде. Не путь микросервисов.

но как правило нужно ещё конфиги положить чтото в системе поднастроить. И тд

ShadoWalkeR
18.07.2018
06:04:08
из контекста не вырывай. много микросервисов на одной ноде. Не путь микросервисов.
Еще раз повторяю - каждый микросервис на ноде - интерфейс для своей задачи.

Vladimir
18.07.2018
06:04:32
Нода упала нет твоих микросервисов

целой пачки

Google
ShadoWalkeR
18.07.2018
06:05:03
Горизонтальное масштабирование - не не слышали?

Vladimir
18.07.2018
06:05:59
деградация сервиса - не не слышали?

ShadoWalkeR
18.07.2018
06:06:11
Резервирование там. Распределенные системы?

Vladimir
18.07.2018
06:07:17
если у тебя при выходе из строя одной ноды пропадает больше одного сервиса это говорит о том что что-то нетак

И не важно работает прод при этом или нет.

ShadoWalkeR
18.07.2018
06:07:47
То что у меня упадет эта нода означает только то, что прекратят обрабатываться задачи которые на ней крутились. Просто возрастет нагрузка на другие ноды

Vladimir
18.07.2018
06:08:07
Для микросервисов специально кубернетис придумали

Который решает все выше тобой заданные вопросы.

ShadoWalkeR
18.07.2018
06:08:34
Вы даже не можете понять что у меня интерфейс от основной логики отделен за счет микросервисности

А пытаетесь рассказывать что я делаю все неправильно

Nklya
18.07.2018
06:09:04
В общем, это называется кубернетис на ансибле и костылях

ShadoWalkeR
18.07.2018
06:09:48
Еще один аналитик от бога

Gleb
18.07.2018
06:10:05
из контекста не вырывай. много микросервисов на одной ноде. Не путь микросервисов.
вообще связи нет между архитектору монолит\микросервис и количеством нод. А юнихвей тоже видимо не путь линуха

Vladimir
18.07.2018
06:11:26
Ну какбы линукс уже давно на юниксвей плевать хотел.

ShadoWalkeR
18.07.2018
06:11:42
Пойду лучше поработаю

Vladimir
18.07.2018
06:11:46
Тот же системд прям юниксвей,

Nklya
18.07.2018
06:11:55
Кстати, если у тебя все что нужно - сгенерировать шаблон и рестартануть, нафига тебе вообще хендлеры? Делай просто рестарт по changed

Vladimir
18.07.2018
06:13:45
Об этом выше писали. Там типо кода больше.

И не красиво получается

Nklya
18.07.2018
06:14:46
Не, он там лепил какую-то дичь с динамической генерацией хендлеров

Google
Nklya
18.07.2018
06:15:37
Я такое делал для деплоя war'ников в томкат, нормально выглядит

Евгений
18.07.2018
07:02:21
https://stackoverflow.com/questions/25694249/ansible-using-with-items-with-notify-handler

Нужен. Сейчас мне приходится пилить такую конструкцию зачастую: - name: Generate {{ daemon }} template: .. - name: Reload systemd systemd: .. Помоему это проще: - name: Generate {{ daemon }} template: .. handler: restart_systemd {{ daemon}}

не то?

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

я так понял ансибл читает из yaml или json

а нужно из простого файлика txt, который правит юзер

можно, конечно генерировать его в yaml или json или т.д. но может подскажите, что удобнее?

я не прошу кода, достаточно лишь ключевых слов, куда копать)

Admin
ERROR: S client not available

Ievgen
18.07.2018
07:14:30
Yaml хорошо читаем и достаточно прост, совсем не вариант научить юзера делать в тхт файлике что то типа: variable: value ?

Евгений
18.07.2018
07:27:33
думаю, так и буду делать, нормальный вариант а если будут задачи брать на удаленной машине - то конвертировать в json\yaml каким-нибудь скриптом...

нужно будет просить юзера заполнить var, а затем проверить еще эти значения, видимо внешним скриптом... ай, ладно как-нибудь сделаю)

Евгений
18.07.2018
07:45:56
как я понял, он все переменные отдаст как контент, а переменные разные и их около 10, а не 1

ShadoWalkeR
18.07.2018
07:57:19
А зачем жестко прописывать зависимости? Просто если чтото заставит рестартануть target (например кривые руки эксплуатации), от которого жестко зависят все сервисы, то они тоже рестартанут.

А друг от друга сервисы не зависят

Vladimir
18.07.2018
08:08:14
а почему ты массивом то не хочешь сделать список

ShadoWalkeR
18.07.2018
08:08:49
А почему вы уверенны что у меня не так?

Google
Vladimir
18.07.2018
08:09:09
- name: Generate {{ item }} template: .. with_items: ....

и не нужны никакие хендлеры.

ShadoWalkeR
18.07.2018
08:11:14
У меня для разных типов сервисов разные правила генерации - гдето достаточно только имени, гдето нужно описать дополнительные параметры - и список слов превращается в список списков. Хэндлер хотел использовать чтобы уйти от block/include_tasks - вместо двух шагов выполнять 1

Вообще самое позорное что могли разрабы ансибла придумать - директиву block. Loop на нее повесить нельзя (потому что это не нужно по словам разрабов), name, на который блок вешается, в лог не выводится. Поэтому его выполнение в логе выглядит не как: block: Generate daemon {{name}} -> template -> systemd А просто template -> systemd

Хочешь пояснений? Вешай на каждое действие в блоке name

И в итоге вместо аккуратной группировки получается эталонная херня

Nklya
18.07.2018
08:18:52
каждый таск должен быть с name, вот и все

тебе даже ansible-lint об этом скажет

Евгений
18.07.2018
08:22:32
И в итоге вместо аккуратной группировки получается эталонная херня
я так понял чтобы использовать ansible в programming-style нужно копать в сторону jinga и использовать всякие макросы, ты не изучал в эту сторону? Правильно я понял или нет?

ShadoWalkeR
18.07.2018
08:24:35
каждый таск должен быть с name, вот и все
Зачем? Что если я хочу несколько таск сгруппировать логически? Просто пример: - name: Generate monitoring target template: src=etc/systemd/monitoringLLD.target.j2 dest=/etc/systemd/system/{{ SYSTEMD_ZABBIX_MAIN_KEY|default("monitoringLLD") }}.target - name: Generate monitoring failure service template: src=etc/systemd/onfailureLLD@.service.j2 dest=/etc/systemd/system/{{ SYSTEMD_ONFAILURE|default("onfailureLLD") }}@.service - name: Generate monitoring probe template: src=etc/systemd/probeLLD@.service.j2 dest=/etc/systemd/system/{{ SYSTEMD_PROBE|default("probeLLD") }}@.service

Nklya
18.07.2018
08:25:22
ну вот и группируй их в блок, если очень надо

ShadoWalkeR
18.07.2018
08:25:30
Казалось бы логично что я могу их объединить через block в одну таску: - name: Generate monitoring infrastructure. block: - template: src=etc/systemd/monitoringLLD.target.j2 dest=/etc/systemd/system/{{ SYSTEMD_ZABBIX_MAIN_KEY|default("monitoringLLD") }}.target - template: src=etc/systemd/onfailureLLD@.service.j2 dest=/etc/systemd/system/{{ SYSTEMD_ONFAILURE|default("onfailureLLD") }}@.service - template: src=etc/systemd/probeLLD@.service.j2 dest=/etc/systemd/system/{{ SYSTEMD_PROBE|default("probeLLD") }}@.service

Но изза ебанутой реализации блока приходится делать так: - name: Generate/Re-Generate monitoring infrastructure. block: - debug: msg: Generate/Re-Generate monitoring infrastructure. - template: src=etc/systemd/monitoringLLD.target.j2 dest=/etc/systemd/system/{{ SYSTEMD_ZABBIX_MAIN_KEY|default("monitoringLLD") }}.target - template: src=etc/systemd/onfailureLLD@.service.j2 dest=/etc/systemd/system/{{ SYSTEMD_ONFAILURE|default("onfailureLLD") }}@.service - template: src=etc/systemd/probeLLD@.service.j2 dest=/etc/systemd/system/{{ SYSTEMD_PROBE|default("probeLLD") }}@.service

Vadim
18.07.2018
08:26:27
а чем with_items \ lookup не походит?

Nklya
18.07.2018
08:26:32
логично-не логично, код открытый, идешь и смотришь, можно ли творить такую дичь

ShadoWalkeR
18.07.2018
08:31:24
Не знаю для какой версии тот пример со stack overflow но в 2.6 хэндлер дергается 1 раз после отыгрывания всего плейбука. И если один и тот же хэндлер вызывается для разных переменных, то он выполнится только для самой последней. Если бы у меня был просто один список сервисов это бы полностью устраивало, но этого нет.

я так понял чтобы использовать ansible в programming-style нужно копать в сторону jinga и использовать всякие макросы, ты не изучал в эту сторону? Правильно я понял или нет?
Я пробовал в имя хэндлера макрос подпихнуть, но сходу не завелось - дальше не стал разбираться - и так на это времени много потратил

Евгений
18.07.2018
08:42:08
Не знаю для какой версии тот пример со stack overflow но в 2.6 хэндлер дергается 1 раз после отыгрывания всего плейбука. И если один и тот же хэндлер вызывается для разных переменных, то он выполнится только для самой последней. Если бы у меня был просто один список сервисов это бы полностью устраивало, но этого нет.
печально, спасибо что проверил, у меня руки еще не дошли, учусь пока что да и вообще я сделал выводы, что ансибл скорее всего буду использовать связкой: питон поверх ансибла, там и проверить пользовательские переменные введенные можно и самому сгенерировать хендлеры и все таски похожие генерировать функциями. Роли мне не понравились... если будут нерешаемые корявости - вообще буду чисто питон использовать с его родными модулями для тех же задач, что и ансибл хотя, возможно, сказывается малый опыт использования этого инструмента у меня и непонимание многого, роли вообще не понял зачем нужны... У меня конкретные задачи: 1 раскатать ПО из набора сервисов на хост, подменить переменные в конфиге на пользовательские. Хосты разные и не связаны с друг другом. Это виделось мне одним плейбуком. 2. Точно также, что выше- но связанные хосты с сервисами (в первом случае однонодовая инсталяция, во втором- многонодовая)

Nklya
18.07.2018
08:42:55
ну так и делаешь блин одну роль и вызываешь ее для разных хостов потом с разными именами

нахера это лепить одной сраной простыней на ямле?

ShadoWalkeR
18.07.2018
08:43:48
печально, спасибо что проверил, у меня руки еще не дошли, учусь пока что да и вообще я сделал выводы, что ансибл скорее всего буду использовать связкой: питон поверх ансибла, там и проверить пользовательские переменные введенные можно и самому сгенерировать хендлеры и все таски похожие генерировать функциями. Роли мне не понравились... если будут нерешаемые корявости - вообще буду чисто питон использовать с его родными модулями для тех же задач, что и ансибл хотя, возможно, сказывается малый опыт использования этого инструмента у меня и непонимание многого, роли вообще не понял зачем нужны... У меня конкретные задачи: 1 раскатать ПО из набора сервисов на хост, подменить переменные в конфиге на пользовательские. Хосты разные и не связаны с друг другом. Это виделось мне одним плейбуком. 2. Точно также, что выше- но связанные хосты с сервисами (в первом случае однонодовая инсталяция, во втором- многонодовая)
Лучше на логические блоки разбить и из них собирать таски, а в main оставить только какую таску вызвать

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