matt
женкинс если очень утрированно тот же самый крон, только продвинутей
Sander
я jenkins месяца так 3-4 назад пробывал, play framework какой-то ставил, но уже не очень помню как там и что
matt
там yum install jenkins, создал жобу, настроил расписание и отчеты, и все
Sander
да не хочу я пока что ничего лишнего еще учить, да и времени нет.
Sander
если надо будет jenkins, я заюзаю
Sander
но что оно мне даст?
matt
значит крон
Sander
запуск ansible по расписаню, это может сделать cron.
Sander
что еще? мне надо чтоб была отправка письма с логами, если в ansible случилась ошибка, например не смог приконектиться к серверу
Sander
---
все остальные ошибки, которые могут случиться во время бекапа, будет отправлять мне на почту, сам контейнер с prod сервера.
matt
у ansible есть модуль mail, который умеет слать письма
Sander
а как ansible, сказать отправить notify : "mail_error"
если случилась ошибка
Sander
🤔
matt
регистрируешь вывод через register, отдаешь его в следующей итерации через модуль mail
matt
но я бы слал в обоих случаях подробный вывод, при успехе и фейле
matt
ну и условия в ansible тоже есть
Sander
ошибку то да в register, а если вообще не приконектилось
Sander
где мне делать register ошибки
matt
если сам ansible вернет ошибку, это упадет в крон, и он тоже умеет слать почту, только нужно локальный mta настроить
Sander
блин
Sander
то есть через крон надо что -то делать =/
Sander
какой-то геморой
Sander
что такое mta?
matt
так а как еще запустить что-то по расписанию, без планировщика?
matt
mail transfer agent, postfix там или exim
Sander
ну крон то я запустить могу по плану
Sander
проблема с обработкой ошибок
Sander
если прямо во время коннекта случилась ошибка в ansible
matt
так она упадет в лог крона
Sander
и как мне из логов определить что там ошибка, это просто файл с текстом, без какого либо формата. ни json, ни yml
Sander
1) ansible запустил таски для запуска backups на prod серверах.
2) на 20 сервере, случилась ошибка соединения, и 20 сервер остался без бекапа.
3) ошибка упала в log file.
4) как мне отправить уведомление об ошибке?
a) Единственный вариант что приходит в голову, чтоб он запускал после ansible, еще какой-нибудь python скрипт, который будет проверять пустой или не пустой log file, если не пустой отправит письмо, после отправки письма удалит log file.
b) если нет лог файла, отправит сообщение, что все прошло на ура.
===================
Albert
exit code
Sander
вот только что идея появилась, кто что думает?
только надо запустить это все последовательно, скорей создать придется баш скрипт типо.
ansible-playbook backup.yml
python deploy_status.py
Albert
Слышал о таком?
Sander
ты про stdout stdin stderr?
matt
не-не, там не так
matt
там обычное письмо
matt
Sander
но ansible же еще никаких тасков еще не успел запустить, я не смогу ему notify выдать.
matt
у меня есть крон-джоба которая курлом дергает определенный сервис, и шлет локально письма
matt
вот на скрине можно видеть что оно не законектилось
Sander
-----------------------------
так как в итоге делать то, я расписал то как я вижу, по шагам.
застрял я на логах, когда не произошел коннект к серверу.
matt
пиши плейбук, делай джобу в кроне с командой ansible-playbook и все
Sander
так это без проблем
Sander
ошибку то надо тоже как-то обрабатывать
matt
в кронтабе укажи адрес куда слать письма
Sander
вот про крон уже не понял, как он письмо отправлять будет.
Sander
если он запускает ansible playbook
Sander
и как он поймет когда что делать и что отправлять
Alf 🙀
погодите, вы базу бэкапите да? у 20 сайтов? и на каждый сайт у вас свой отдельный дб-серв?
matt
если хочешь заморочиться - напиши скрипт, который будет обрабатывать ошибку и разруливать условия. если не хочешь - проста забирай все письма от крона после отработки
Sander
нет сайтов не 20, сайтов ну допустим 50, на 20 случилась ошибка не коннектится к 20.
matt
ну это встроенный функционал крона, слать отчеты о выполнении
Sander
значит я не знаю cron, я умею только запускать программу через крон
Sander
окай крон будет слать письма, вы отдельную почту для этого делаете себе или как?
Sander
просто там будет свалка
matt
делаешь crontab -e, пишешь MAILTO=som@mail.com, на второй строке пишешь джобу 45 9 * * * somecommand
Sander
и какую-то систему алертов делаете, если ошибка?
чтоб я каждый день не проверял письма, что там пришло. Чтоб мне приходили алерты куда-то об ошибках
Alf 🙀
а как вы себе представляете причину по которой ансибл может не подключиться к хосту?
Sander
проблема у хостера например
matt
вот если уже обрабоку ошибок нужно, то это надо в умный скрипт оборачивать
Sander
да всякое бывает, вот может быть просто что -то повисло и только ребут у сервера помочь может
matt
но можно поколхозить, если лень
Alf 🙀
если проблема у хостера у вас должен быть алерт и он никак не должен быть связан с ансиблон или крон таской
matt
+1
Sander
ну у хостера проблема с серавком, и поэтому не коннекится он к нему
Alf 🙀
я о чем и говорю. для этого люди делают мониторинг
Sander
...
Alf 🙀
и это не задача ансибла
Dmitry
https://newrelic.com
Dmitry
бесплатно мониторинг, держи
Dmitry
не благодари)
Alf 🙀
вот например да
Sander
я знаю про new relic
Alf 🙀
и можно в викторопс отправлять нотификейшены оттуда
matt
о, это облачный или self-hosted?
Alf 🙀
облачный
Alf 🙀
saas
Sander
это все для мониторинга сервера
Sander
----