Vladislav 👻
Бывает
Aleksey
ок. у тя предположим есть * идемпотентные роли * молекула на все случаи использования твоих ролей * хосты которые живут 100500 лет и очень надежны однако, не покрытыми остаются * плейбуки * связи между ролями * реальный мир. вот тут помогает госс, ты переливаешь хост и можешь быть хоть как то уверен что после того как ты ввел в роли ключ some_service_start_after_install: true у тебя реально всё доехало до прода в состоянии когда сервис запущен.
Aleksey
реальный мир в целом закрывается мониторингом, но не всегда тривиально бывает сделать что бы падаение хоста по какой либо причине приводило к тому что на него не маршрутизировался трафик. особенно когда у тя сервис на всяких graphql и прочей чертовщине отдающей ошибки 200ками
Vladislav 👻
хм, интересный пример, спасибо!
Aleksey
жить без него вполне себе можно и даже не чувствовать что больно. но реально удобно вместо деланья десятки команд после логина на хост в попытках дебага просто запустить одну команду goss validate и получить сразу ответ на то "знаем ли мы что тутт у нас и было ли у нас такое уже". для этого конечно надо научится добавлять тесты после аварий. ну и хелс ендпоинт позволяет вообще не заходить на хост.
Aleksey
и да. время прогона анисибла более минуты, а goss 70 тестов запускает за менее чем секунду
rus
потому что goss решает больше задач чем ансибл и тестинфра
Мне goss тоже показался "более лучшим", хотя в реальной жизни он у меня применения не нашёл пока ещё =)
hackru
мужчины, вопрос про паппет 😉 кто-нибудь знает аналог changed_when: false для паппета?
Отделение Bereke Bank
Надо попробовать
Отделение Bereke Bank
Хотя о чем я...я ухожу в лагерь солта
Отделение Bereke Bank
Лучше чем ансибл? :)
пока сложно сказать) на новом месте просто солт 😒
Aleksey
Хотя о чем я...я ухожу в лагерь солта
а какая разница какой провиженер то.
Lamobot
а какая разница какой провиженер то.
Если нет никакой разницы, то зачем их так много? :)
Lamobot
Всё IT такое :)
Aleksey
Всё IT такое :)
ты даже не представляешь сколько раз я присылал эту гифку
Игорь
Понял как правильно поставить вопрос - как при создании каталогов исключить переменные которые прописаны в vars ?
Aleksey
нет. так тоже не правильно
Aleksey
какие каталоги. при чем тут варс
Игорь
Да ля
Aleksey
если надо создать диреткории возмьмите список и создайте
Aleksey
в списке должны быть только полезные эелменты
Aleksey
если вам нужно отфилтровать список так и задавайте вопрос. как имея на входе список сделать список меньшего размера убрать от туда элементы начинающиеся на букву u
Aleksey
что бы фильтровать списки есть вот такая дока https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#combining-and-selecting-data
Grek 🇺🇦
Да ля
Дружище - опиши алгоритмически, что именно у тебя есть, и что ты хочешь получить, потому-что все выглядит вырванным из контекста
George
Мы не тестируем роли. Это глупо. Вот плейбуки надо тестировать, и очень тщательно.
George
Ну расскажи.
Aleksey
я читал твои похождения. и считаю что ты не прав.
Aleksey
хотя лучше сформулирую так. у тя окружение которое допускает малое переиспользование в этом случае твои рассуждения верны
George
Хотя все сводится к вопросу о reusable roles. До тех пор, пока не будет контролируемого интерфейса между ролью и окружением, не будет reusable roles.
Aleksey
есть другие окружения которые допускают подход роль как функция. тогда ее надо юниттестить
George
А когда она не reusable, то нет разницы, tasks это или roles, все равно пачкой тестировать.
Aleksey
госс заполняет пустоту тестирования плейбука
Aleksey
ибо делает верификацию плейбука тупо черным ящиком
George
Мы плейбуки тестируем molecule + testinfra.
Aleksey
у тестинфры сильно задалбывает что ты не можешь сделать curl с целевой машины.
George
Роль как функция будет, когда у нее будет privacy. А сейчас роль - это как go sub в бейсике.
Aleksey
тоесть я хочу осмотреться в окружении машины. и вот это геморой
Aleksey
Что за privacy?
неееееееет. что ты наделал
George
Чтобы если у меня в роли вычисляется 'listen_port', то никакая другая сущность за пределами роли не могла бы её случайно 'поправить'
Aleksey
от этого чата на два часа можно уходить. тут будет срач якодзун
George
Вот иметь питон на целевой машине - это хорошо. Я думаю давно написать модуль testinfra, который будет запускать тест на целевой машине. Есть фикстура host, и это localhost.
Aleksey
——- cut here——
Pit
ибо делает верификацию плейбука тупо черным ящиком
а вот расскажи мне, сенсей. как тестировать плейбуки в связке с энвами и ролями? У меня есть плейбук который управляет кластером из 20 машин и я очень хочу его тестить, srsly. Но путь мне неведом.
Timur
У переменных роли (которые в vars) приоритет выше, чем у переменных инвентаря или плейбука. Вполне достаточно, чтобы их «случайно» не перезаписать.
George
Если роль пишет один человек, а плейбуку другой, то им надо договариваться о том, как не ломать друг другу переменные. Ансибл не даёт возможности сделать это автоматически. Современные языки программирования - дают. Интерфейсы, функции, модули, неймспейсы, etc.
Pit
тем более что к ластеру нужна обвязка из s3, балансира и баз.
Pit
(
Pit
дев-контур то у меня есть. Но я хочу именно плебук тестить
Aleksey
я в такой же ситуации. у менй есть стейдж среда которую я запускаю тераформом. прогоняю плейбуки. и потом госс
Timur
Если роль пишет один человек, а плейбуку другой, то им надо договариваться о том, как не ломать друг другу переменные. Ансибл не даёт возможности сделать это автоматически. Современные языки программирования - дают. Интерфейсы, функции, модули, неймспейсы, etc.
Очень просто. Все переменные, которые могут меняться юзером, описаны в defaults роли. Все прочее - внутренняя кухня роли, в которую просто так случайно не влезешь без доп. усилий.
Aleksey
стейдж среда имеет очень малый трафик в отличии от прода. и часть нагрузок всплввает только в продах
Timur
Aleksey
много букв. читать ничо не понятно. сделай хорошо
Ivan
вовремя я зашёл спросить, да у вас бывает в плейбуках yum: state: latest ?
Aleksey
в других случаях не бывает
Ivan
ага и name: *
коммит-пуш-мердж
Aleksey
коммит-пуш-мердж
форспуш. сквиз ту инит
George
Очень просто. Все переменные, которые могут меняться юзером, описаны в defaults роли. Все прочее - внутренняя кухня роли, в которую просто так случайно не влезешь без доп. усилий.
Не совсем понял. Вот у меня в vars у роли вычисляется переменная user. Хорошая такая роль, с 100500 инклюдами, которая поддерживает windows 12.04 и macos 6, а так же freebsd buster. Человек, пищущий плейбуку берёт роль и радуется - как хорошо всё работает. А потом он устанавливает ещё одну роль, в которой написано: - name: get user register: userбум. Сломалось. Не там, где ожидалось. Кто виноват? Никто. Кто это жрёт? автор плейбуки.
Ivan
bsd buster, отличный ник
Aleksey
хнык.
Aleksey
щас будет 500раз по кругу
George
А какой из авторов роли виноват? Который сделал register или который в var написал?