Fedor
закрытая сеть без доступа в интернеты
bebebe
опишите свою задачу, кокнернто с ntp например
Fedor
хочется как можно более универсального результата достичь
Fedor
ок, нтп. надо жёстко засинхронить машины с сервером времени, который может иметь различающиеся адреса. если нтп сервер в конфигурируемой машине не прописан, но прописан в конфигурирующей, возможно ли это выдернуть как нибудь? нтп тут всего лишь частный случай.
bebebe
да, можно выдернуть
вы можете написать кастомные факты и собирать их перед запуском плейбука gather_facts: true
Fedor
это собирает удалённые факты же? не локальные?
bebebe
исходя из тех фактов что собрали, выбирать какие таски запускать
bebebe
собирает факты о системе против которой запущен плейбук
Fedor
вот локальные бы собрать, но не натравливая ансибл на локалхост
bebebe
вы можете отдельно собрать факты для локальной машины
---
hosts: localhost
gather_facts: true
Fedor
если это очень кривой метод, тогда буду думать что нибудь еще :)
Fedor
хех.
bebebe
ладно, у вас видимо особый взгляд на мир
bebebe
недавно с ансиблом?
Fedor
относительно недавно
bebebe
вы начните делать, потом все равно переделывать, появится опыт и критерии
Fedor
так и делаю :)
bebebe
советую натраливать с самого начала на свои плейбуки ansible-lint
Fedor
линт проходит нормально
Fedor
ошибок при написании нет
Nklya
ansible-lint это больше не про ошибки, а про говнокод
Fedor
и при говнокоде ошибки выдает?)
bebebe
bebebe
есть рекомендации по каким событиям запускать таски
Fedor
спорные таски либо нотифаями, либо на основании gather_facts делаю
Fedor
это правильно?
Udjin
Парни, простите за нубский вопрос:
я вот с ансиблом год уже работаю. Но так и не вкурил, как и для чего нотифаи использовать. Документацией обмазывался несколько раз, но так и не понял, зачем они нужны. Объясните пожалуйста, кому не жалко)
Fedor
я использую нотифай, например, на рестарт сервиса при изменении конфига
Udjin
на живом примере простеньком - было бы круто
Fedor
вот пример хороший
Fedor
https://natenka.gitbooks.io/ansible-dlya-setevih-inzhenerov/content/book/4_playbooks/handlers.html
Udjin
ну вот у меня nginx - мне его в плейбуке надо несколько раз рестартовать. Плюс в другой роли, у меня теги, по запуску которого он тоже должен рестартануться
Fedor
кривоватый, конеяно, но механизм нотифая объясняет
Fedor
чтоб не надо было во все плейбуки один и тот же код писать
Fedor
пихаешь рестарт в хендлер, и нотифаем его вызываешь. если changed=yes, нотифай срабатывает
Vadim
а ни у кого нет инструмента для анализа логов? Что-то вроде ara, только сделаное не рептилоидами?
Fedor
хандлерс можно хранить в таске, а можно в папке handlers
Udjin
Handlers - это специальные задачи. Они вызываются из других задач ключевым словом notify.
Эти задачи срабатывают после выполнения всех задач в сценарии (play). При этом, если несколько задач вызвали одну и ту же задачу через notify, она выполниться только один раз.
то есть если я в середине плейбука напишу рестарт nginx через notify - он у меня рестартанётся один раз в конце плея?
Fedor
хм, нюанс :))) не знал, спасибо
Fedor
видимо, да.
Udjin
вот я ж об этом)
Fedor
это, кстати, очень хороший нюанс, чтоб лишний раз сервис не дергать тот же
Udjin
у меня есть плей, я там серез certbot получаю сертификаты - в плее 3 раза nginx надо релоадить, последовательно.
Notify тут видимо не поможет
Fedor
а три то зачем...
Udjin
1 - заливка конфига nginx с location для certbot
2 - рестарт nginx
3 - получение сертификата certbot
4 - заливка конфига приложения
5 - рестарт nginx
6. Заливка самого приложения на сервер (руби-рельсы-пума)
7. Рестарт nginx для подхвата PID пумы
Udjin
за этим)))
Fedor
жесткач)
Fedor
https://stackoverflow.com/questions/33931610/ansible-handler-notify-vs-register
Fedor
очень хорошее объяснение
Fedor
особенно, второй абзац может быть полезным
Sergey
Udjin
Udjin
лень переделывать, роли лопатить
bebebe
Denis
Vadim
elk, graylog?
Мне скорее "спрятать skipped" и выделить логи релевантные части для упавших хостов
Vadim
Хочу странного, в общем
bebebe
в этом нет ничего странного, логи можно завернуть в logstash, который распарсит и закинет в elk только то чно нужно,или куда-нибудь еще
Vadim
Способ хранения и заливки - это мелочи, нужна визуализация
bebebe
я про неё и говорю
Vadim
Вряд ли кибана поможет, слишком много энсибловской специфики. Буду костылять значит
bebebe
и селектить оттуда
Vadim
Хммм, стоит попробовать
bebebe
вплоть до, плейбука такая-то группа серверов такой-то, таск такой-то
Vadim
Чего только не сделаешь чтобы vuejs не учить
bebebe
ненадо учить vuejs
bebebe
пожалуйста, я в него могу, и он это 10-20% от того что нужно сделать в этой задаче
Vadim
Да меня уже во дворе дразнят и смузи обливают
bebebe
+ нужно гуглить в сторону javascript dashboard framework.
но я бы сильно не советовал, если только времени ОЧЕНЬ много и хочется почувствовать удивительный мир javascript флоры и фауны ( не советую )
потратье пару дней на elk, graylog
bebebe
что бы окончательно отбить желание, загляните в любой javascript чатик в телеграмме, там вся популяция мартышек
bebebe
https://docs.ansible.com/ansible/2.6/plugins/callback/logstash.html
bebebe
из коробочки
Udjin
вставлю свои пять копеек:
если логи - то только ELK + к нему - Grafana или Kibana. Мы для клиентов по всему миру юзаем этот стек, собираем логи с платформ, кластер поднят. Проблем не возникало никогда, на железо тратим 1к$ ежемесячно, все потребности бизнеса покрывает с лихвой.
niko
а правда можно по фразе "1k$ на железо ежемесячно" сделать какие-то выводы?
Udjin
не понял)
Udjin
это просто FYI
Udjin
ну я написал про стоимость железа, чтобы было понятно, что нам дешевле свою систему мониторинга поднять для 200+ машин клиентов, чем платить сервисам типа LogDna и прочим.
Udjin
дешевле своё
Sergey