Павел П.
Там же есть возможность prompt limit сделать
Ага, я это и сделал) а то что в лимит можно ничего не писать..?))
Anonymous
Не пробовал такой бекдор)
Rodion
Ага, я это и сделал) а то что в лимит можно ничего не писать..?))
Limit вроде в отдельную переменную попадает https://stackoverflow.com/questions/44855892/how-to-get-value-of-limit-argument-inside-an-ansible-playbook Но я не проверял работает оно или нет)
Павел П.
ansible_play_hosts ещё в первом комменте. Завтра и попробую)
Andrey
И git pull недостаточно в вашем случае. Вам приходится ещё делать крайне сложную структуру роли с лишней логикой
Откуда такие далеко идущие выводы? Ставите диагноз по фотографии? )) Я вижу с вашей стороны желание представить себе картину оторванную от реальности - а потом ее критиковать. В последний раз попробую пояснить: в нашем случае версии ролей в директориях, это альтернатива использованию бранчей, т.е. если бы это было реализовано через git, то версия роли это не commit, а branch.
Timur
И только одним репозиторием
Timur
Если у вас версий ролей много, а обращаться к ним можно не только на уровне последней версии бранча, но и по тегу и вплоть до единичных коммитов, то ваша схема работать не будет
Timur
Если роли лежат больше, чем в одной репе - аналогично
Timur
В итоге вы просто дублируете функции гита с непонятной целью, попутно сильно усложняя структуру ролей
Sergey
Много хостов. накатанных одной ролью, но причём разными версиями O_o Люди упарываются, топят за однообразие, IaaC, servers as cattle, а тут... "..И поднимал он тяжёлые камни, и говорил с ними, вспоминая их имена." Какой тогда вообще смысл Ansible использовать? Скорее всего, из-за башсибла в ролях.
Vladislav 👻
Люди любят усложнять себе. Пока народ стремиться сделать одинаковые прод и дев стенды, другие делают разнообразие прод стендов...
Vladislav 👻
Andrey
Много хостов. накатанных одной ролью, но причём разными версиями O_o Люди упарываются, топят за однообразие, IaaC, servers as cattle, а тут... "..И поднимал он тяжёлые камни, и говорил с ними, вспоминая их имена." Какой тогда вообще смысл Ansible использовать? Скорее всего, из-за башсибла в ролях.
Во первых, разные проекты внутри компании могут использовать разные версии ролей, во вторых в моменте может быть две версии: текущая и ту на которую переходишь. В третьих возможность задать версию роли через group_vars позволяет не править лишний раз плейбук и переключаться через репу с inventory.
Vladislav 👻
первое без аргументов не заходит, второе решается не версиями ролей, а отдельными ролями
Vladislav 👻
ну а третье есть из коробки в ансибле, называется инвентори
Andrey
И только одним репозиторием
Так и есть, все роли в одной репе. Интересно было бы узнать use case при котором требуется собирать роли из разных реп. Кроме случая притащить какое-нибудь непроверенное г. из чужого репо, ничего не могу представить.
Vadim
Уф, монорепа с версиями ролей через переименование каталогов, я правильно понял?
Sergey
Во первых, разные проекты внутри компании могут использовать разные версии ролей, во вторых в моменте может быть две версии: текущая и ту на которую переходишь. В третьих возможность задать версию роли через group_vars позволяет не править лишний раз плейбук и переключаться через репу с inventory.
Ещё раз - это фу, и это - полное непонимание ролей. Роль - это самодостаточная единица, в best practices по Ansible этого что-то не видать, чтобы так над ролями издевались. Во-вторых, это, к сожалению, многое говорит о состоянии инфраструктуры. Здесь эта роль - вот такой версии, здесь - другой, а здесь - третьей. Второе фу. Ну и переизобрести гит в group_vars - это, конечно, сильно, повторюсь, но нет, you shall not pass. Третье фу.
Vadim
Ох, версия роли в groupvars?
Sergey
Ох, версия роли в groupvars?
Подаётся это под соусом "зашёл в груп_варс и выбрал версию".
Andrey
Уф, монорепа с версиями ролей через переименование каталогов, я правильно понял?
Да. Только не переименование, а подкаталоги для версии. Роли при этом простые и их много - типичная роль это принести файлы конфига и перезапустить сервис. Софт они не ставят, софт в идеале уже есть в образе.
Vadim
ну вот >разные проекты внутри компании могут использовать разные версии ролей
Vadim
вот дали rolesfile.yml, ну пользуйся же, нет?
Vadim
тут тебе и версии, и гарантированный чекаут вместо "ой, а тут версионность роли не сработала"
Vadim
О, это моя любимая часть
Vadim
"ага, вы тут все такие умные, тогда прочитайте мне тут документацию!"
Sergey
Хорошо. Расскажите свой способ перевода прода на новую роль? Всё и сразу? ))
Вообще-то да. А какие варианты есть? Либо новая роль по всему продакшну раскатана, либо надо написать петицию на change.org о профнепригодности ролеписца/опса.
Sergey
Круто, подход настоящего самурая...
А с вашим подходом, похоже, прям хромированные версии ролей тряпочкой с колой протирают. "... А ты 2.4.2 пробовал?.... - Не, не встала, не нашла чот-там. - Ну блин, ну тогда попробуй 2.5.0 хотя бы. - Да ладно, я уже 2.7.1 накатил [давит бычок в пепльнице] Пошли давай, до утра ещё сотню серверов обновить надо." (с)
Vadim
причем это пуллреквест с чем-то вроде https://github.com/ljozsa/ansible-raspi/commit/9d85c83ecf95dfcd4deca8b9f7a4c38a4cbbf13c + CI
Sergey
С тем что версий не должно быть много я соглашусь. Но напрасно вы отвергаете саму возможность версионирования.
Да с чего бы вдруг? Лично я всегда все роли храню в репе. А Вадим уже написал, как это стОит делать по-человечески, а не через странное.
Andrey
Да с чего бы вдруг? Лично я всегда все роли храню в репе. А Вадим уже написал, как это стОит делать по-человечески, а не через странное.
Вот вы поправили роль, протестили её, закомитили и выкатили сразу на всю вашу инфраструктуру, а потом может оказаться что не всё учли при тестах... А могли бы выкатить эту роль сначала для части хостов...
Sergey
Вот вы поправили роль, протестили её, закомитили и выкатили сразу на всю вашу инфраструктуру, а потом может оказаться что не всё учли при тестах... А могли бы выкатить эту роль сначала для части хостов...
Что значит "не всё"? Не всё учёл - вылезет на тесте либо на стейдже. А демагогию разводить - "часть хостов, не часть хостов" - это такое себе. Для запуска Ансибла на работу только с частью хостов - если уж хочется поблем себе запилить - можно использовать ключ "-l", но это уже в доки нужно..... 😉
Vladislav 👻
Я уж молчу про тестирование ролей через докеры те же например
Vladislav 👻
А зачем так делать?
Vladislav 👻
Точнее не так, если вам надо разные, то зачем сверять?
Vladislav 👻
А если одинаковые, то зачем делать разные?
Vadim
рядом с ними еще идут blue-green или вообще colorful
Vadim
казалось бы, причем тут роли?
Sergey
Ок. Допустим вылезло на стейдже. Так и как вы делаете что у вас на стейдже и проде разные версии ролей?
Всё просто - я не запускаю деплой на продакшн. Есть такая категория. как вебморды. В период тестов из мастера вебморда для продакшна отключается. Опять же - в репозитории с ролями могут существовать теги, и вообще ничто не мешает деплоить продакшн по тегу (как это можно делать, впрочем, с любым кодом, хранящимся в системе контроля версий). И ещё - если всё-таки изначально одними скриптами деплоить всё, то расхождений (кроме мощности самих хостов) не будет.
Andrey
казалось бы, причем тут роли?
Наверное при том что там могут завалятся темплейты конфигов... ) Всякие модные etcd и k8s пока сюда не будем приплетать... )
Vadim
не умеете собирать список создаваемых артефактов? Что ж, тогда так и живите
Sergey
В моей терминологии это load balancer и для него тоже кто-то должен через ansible конфиг принести...
Лоад балансер - это другое. Вебморда - Rundeck/AWX/Tower/polemarch/Foreman/<younameit>.
Andrey
Лоад балансер - это другое. Вебморда - Rundeck/AWX/Tower/polemarch/Foreman/<younameit>.
Не совсем понял. Вы при любом комите в репо с ролями, отключаете AWX от прода? Или как это выглядит?
Sergey
Не совсем понял. Вы при любом комите в репо с ролями, отключаете AWX от прода? Или как это выглядит?
Нет. При любом коммите в репо с ролями я чётко себе представляю, что именно я коммичу и для чего. Места для поедания кактусов находятся на тесте и стейдже.
Sergey
Но мы вообще-то в странную плоскость перешли, при чём тут вообще как именно сделано у меня?
Sergey
Ресь о том, что так, как сделано в вашей компании - не надо делать.
Andrey
Нет. При любом коммите в репо с ролями я чётко себе представляю, что именно я коммичу и для чего. Места для поедания кактусов находятся на тесте и стейдже.
Ну вот, а при нашем варианте, можно через group_vars разнести выкатку новой версии роли для стейджа и прода по времени.
Andrey
Ресь о том, что так, как сделано в вашей компании - не надо делать.
А я считаю что так как у вас не надо делать. Давайте исходить из того что нужны аргументы чтобы доказать оба тезиса...)
Sergey
Senior YaML developer 😊
Alex
Какой у вас тут лютый пиздец. У меня файл requirements.yaml и в нём роли с версиями и именем, а не чтобы именем роли, имя РЕПО делать. Хочу одну роль под разными именами скачаю и будет у меня 2 роли разных версий под ( но это странное)
Alex
А ещё то что назвал странный человек ролью, по сути ролью не является, а просто плейбуком
Vadim
Какой у вас тут лютый пиздец. У меня файл requirements.yaml и в нём роли с версиями и именем, а не чтобы именем роли, имя РЕПО делать. Хочу одну роль под разными именами скачаю и будет у меня 2 роли разных версий под ( но это странное)
да, но можешь ли ты одним коммитом "разнести выкатку версии роли для стейджа и прода" чтобы потом охреневать от того что коммит в другое место прода всё сломал?
Vadim
а, ну с тегами сфейлить слишком просто
Alex
а, ну с тегами сфейлить слишком просто
Тут и без них нафейлино дай божэ
✙ DarkKC ✙
Какой у вас тут лютый пиздец. У меня файл requirements.yaml и в нём роли с версиями и именем, а не чтобы именем роли, имя РЕПО делать. Хочу одну роль под разными именами скачаю и будет у меня 2 роли разных версий под ( но это странное)
два чаю этому реповоду, мы делали ещё типа метарепу под каждый проект, в ней в тегах выкатываемого окружения - в реквайрах теги нужных ролей, люто удобно однако
✙ DarkKC ✙
но у нас было несколько (довольно много) разных проектов, с разным набором унифицированных ролей
✙ DarkKC ✙
и все проекты в итоге могли иметь свой набор версий, как продовых, проверенных, так и стейджевых, и дев-вакханалией
GithubReleases
ansible/ansible was tagged: v2.7.5 Link: https://github.com/ansible/ansible/releases/tag/v2.7.5 Release notes: New release v2.7.5
ℭ𝔞𝔯𝔯𝔬𝔩
Например есть роль проекта, а он в свою очередь разбит на другие роли, т.к. проект разбит на микросервисы многочисленные.
Почему проект нельзя собирать на уровне одного плея или нескольких? Зачем роль в роль? Как эти вложенные роли переиспользовать потом?
Yerlan
День добрый! Ошибка тупая замучила блин. Подскажите. Есть таск файл с содержимым: --- - name: Script directory create file: path: "{{ pg_script_dir }}" owner: postgres group: postgres state: directory mode: 0775 и main, который его вызывает: --- - include: create_users.yml when: users_create Ошибка такая: TASK [barman : Script directory create] ******************************************************************************************************************************************** fatal: [ip_addr]: FAILED! => {"msg": "The conditional check 'users_create' failed. The error was: error while evaluating conditional (users_create): 'users_create' is undefined\n\nThe error appears to have been in '/home/barman/git_projects/barman/tasks/create_users.yml': line 3, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: Script directory create\n ^ here\n"} to retry, use: --limit @/home/barman/git_projects/barman_run.retry Возможно ошибка в отступах
Yerlan
версия ansible 2.7.4
Timur
Ошибка в другом таске же
Timur
Не в том, который вы показали