Egor
А кстати про идемпотентность, а когда есть случаи которые не описаны в модулях. То есть идет использование или command или shell на крайняк, как в данном случае вы соблюдаете? Пишете свои модули или перед выполнение данных команд делаете проверку и выводите в register?
Egor
Ну просто к примеру из недавнего это автоматизация поднятие mongo replication. Модуля я не нашел и там получается я использовал написанный скрипт на js и command. И вот только через register я так понимаю можно соблюсти идемпотентность или полностью описать в скрипте.
Max
модуль, если нужно завернуть портянку команд с логикой в 20+ башсибл тасков, по моему имеет смысл завернуть в модуль. особенно, если уже есть драйвер на питоне.
Timur
В 95% случаев, как показывает опыт, это возможно
Max
у меня статистика пониже. в "большинстве" случаев :)
niko
костыли на любой вкус!
Egor
Так а в целом, если вы попали в ваши 5% как вы соблюдаете идемпотентность? register?
niko
не бывает идеальных костылей)
Timur
Так а в целом, если вы попали в ваши 5% как вы соблюдаете идемпотентность? register?
По ситуации. Где register, где флаги creates/removes, где просто блоки с условием
Timur
Бывает вообще block/rescue
Max
По ситуации. Где register, где флаги creates/removes, где просто блоки с условием
иногда, если есть сервис конфигурации (etcd, consul, zk), можно хранить state в сервисе.
Timur
Ну, и да - надо не стесняться писать свои модули, либо контрибьютать в уже написанные
Timur
Включая сам ансибл
Max
ибо опен сорс.
Timur
Мы так регулярно делаем
Yuf
Обьявите весь список пожалуйста
Yuf
Интересно стало какие вы модули написали
Timur
Если нам чего-то очень сильно не хватает в ансибле/молекуле/линте и т.п. - дописываем, делаем PR и пробиваем свои правки через review
Yuf
Я хочу написать модуль для master master mariadb/mysql replication сделать
Timur
Я хочу написать модуль для master master mariadb/mysql replication сделать
Вы уверены, что для этого отдельный модуль нужен?
Yuf
Вы уверены, что для этого отдельный модуль нужен?
Чем чёрт не шутит ... Там злоебучие стейджи ...
Timur
Чем чёрт не шутит ... Там злоебучие стейджи ...
Чем этот модуль вам не годится? https://docs.ansible.com/ansible/latest/modules/mysql_replication_module.html
Yuf
Он больше заточен для master/slave
Yuf
А мне нужно для master/master
Timur
Он больше заточен для master/slave
Он все параметры поддерживает вроде как
Yuf
А стоп
Yuf
Сорри
Yuf
Я это как раз модуль и использовал
Yuf
Я имел ввиду модул который делает эти все моменты типа гасит слейв переключает мастер етс
Timur
И что имеется в виду под гасит?
Yuf
Stopslave, startslave
Yuf
Я имел ввиду процедуру поднятие репликации спрятать в модуль .. Довести до коробчного решения
Yuf
Или я опять какие то законы галактики ансибл нарушаю
Max
Или я опять какие то законы галактики ансибл нарушаю
нет. делаешь прорыв в велосипедостроение.
Yuf
)))))
Sergei
Используй оркестратор, не придется заниматься ерестью типа мастер-мастер
Yuf
Вы про galera
Yuf
?
Sergei
Вы про galera
https://github.com/github/orchestrator, правда это не про ансибл, но пофиг %]
Sergey
Вы про galera
галера не оркестратор
Max
кстати о птичках: существует какой-то contrib-ный модуль работы с dropbox? послать файйл, найти файл, скачать и т.д.?
Sergey
или к ансиблу
Max
не пойдет в данном случае, но спасибо за наводку 👍
Max
(мне нужно делать поиск, из найденного скачивать)
Max
т.е. rclone не подходит (он делает фьюз, т.е. начинает тянуть ненужное)
Sergey
а, пнятна
Sergei
Подойдёт для двух хостов
вы про ссылку или свой кейс?
Yuf
Свой кейс где использую master master replication
Yuf
Mysql/mariadb
Ohh
А как запихнуть '^\[' вот такую штуку в переменную, чтобы не терялись одинарные ковычки? Чет пол часа пытаюсь решить, но не заходит
Ohh
В двойные впихнуть стринг?
Ты имеешь ввиду по бокам двойные поставить?
Alex
Ты имеешь ввиду по бокам двойные поставить?
Попробуй на питоне пару скриптов накидать, поймёшь почему ансибл нетипизированные переменные обрабатывает так как обрабатывает
Alex
'\'\[\''
Ему нельзя такого показывать, запутается. Не баш конечно, но всё равно экранирование пиздец, а если предподготовка для регулярки, там каша та ещё будет
Eduard
😄
Vladislav 👻
'\'\[\''
В одинарных же нет экранирования, в двойные же надо обернуть
Eduard
вай?
Отделение Bereke Bank
Подскажите, а папка group_vars работает если inventory файл в yaml-формате? Или group-переменные в таком случае нужно писать только в inventory?
Отделение Bereke Bank
А понял, не туда папку положил. надо было в папку со всеми inventory а не в корневую репы
Sergey
А понял, не туда папку положил. надо было в папку со всеми inventory а не в корневую репы
Хм, у тебя тогда будет странное: группы общие 😊 inventory стоит делать из каталогов, а не файлов.
Отделение Bereke Bank
Sergey
Имя инвентори может указывать на файл (inventory.yml), а может и на каталог: inventory/main.yml
Sergey
Впрямую нет. Однако ты можешь просто несколько файлов положить, они будут считаны в общую кучу.
Отделение Bereke Bank
Спасибо! попробую
Sergey
Там вроде алгоритм достаточно простой: всё, что можно испольнить в каталоге (+x), будет запущено и исполнено, выхлоп по возможности прочитан как JSON и загружен в список хостов, всё ,что текстовое - просто прочитано и загружено. Так работают все динамические инвентори.
Alex
Какая задача решается?
Инвентори в Гите , на каждый проект своя репа.