Sergey
Дык ls > filelist, а потом его в таск - не? Или если имена неважны - в .tar.gz.
Vladislav 👻
файлы локальные, которые лежат в папке files в роли
Sergey
Ну в общем звёздочку копировать - такая себе модель.
Vladislav 👻
Vladislav 👻
а все, понял, это отдельный модуль
Timur
Timur
Самый тру способ - это find с нужным паттерном, а потом по полученному списку делается луп с модулем copy
Timur
Если что-то совсем навороченное и большое, то synchronize
Timur
Если просто директорию целиком, то модуль copy это и сам умеет
Timur
Александр
Sergey
Потому что твой деплой начинает деплоить абы что, а не только то, что в нём написано.
Dok
Александр
Dok
ls в for, чтоб потом проверить правильность и записать с файлик
Александр
Dok
Я про test. И for может и без ls
Александр
Так удобнее. Можно потом туда списком конкретные имена файлов засунуть.
Andrey
Делаете ли вы роли в роли?
Делаем версии ролей: role_name/role_version - в плейбук подключаем конкретную версию. Внутри роль может импортировать yml файлы с тасками с отдельными тегами. но эти теги role_name тоже в себя включают. В итоге можно переключаться между версиями ролей и можно внутри роли вызывать только часть задач, при необходимости.
Timur
Timur
Зачем пытаться сделать из роли аналог гитовой репы?
Andrey
Danis
Вопрос.
Есть dict вида:
{
b1: [v0, v1, v2, v3],
b2: [v4, v5]
}
Все, что есть в этом дикте, сформировано предыдущими тасками и я не знаю настоящее название b 'эшок и v'эшок.
Как мне для каждой b проитерировать v'эшки из соотв списка?
Timur
С любого гита
Timur
Timur
Выкачиваете нужные версии ролей с помощью galaxy и ставите
Timur
А вы пытаетесь контроль версий в роли засунуть
Aleksei
Timur
Не надо так
Александр
Danis
keys()
Спасибо, а можно чуть подробнее?
Александр
Спасибо, а можно чуть подробнее?
keys -ключи. Словарь характеризуется записями ключ-значение. А значит keys вытаскивает весь список ключей. Другими словами ключи становятся известными когда приезжает словарь
Andrey
Гит и ansible-galaxy для этого есть
Это уже вопрос о вкусах. Лежит и так в git, но да вместо бранчей или тегов, это лежит в разных папках. В вашем варианте будет работать один и тот же плейбук с разными версиями ролей для разных груп хостов? Как он будет между коммитами переключаться?
Danis
Andrey
Александр
Danis
👍
Вот только как мне проитерироваться теперь? Ключи есть, а что использовать? subelements вроде как немного по-другому работает.
Александр
Timur
Timur
Микроскопом при желании тоже гвозди можно забивать, но здравомыслящие люди так не делают
Timur
Danis
with_dict
А как список из value перебирать?
Timur
А что именно нужно делать в процессе перебора?
Andrey
Danis
Timur
Timur
Сами плейбуки и роли называются совершенно одинаково
Timur
Разница только в версии, указанной в requirements
Timur
Ну вот как в debug например вывести?
Ну, в простейшем варианте вызвать инклуд в цикле with_dict, а в тасках из включенного файла сделать простой луп по item.value, в котором будут элементы каждого ключа словаря
Danis
Danis
Инклуд например.
Timur
Это гуглится в две секунды
Timur
Ключевые слова: ansible include loop
Timur
В каком смысле одновременно?
Danis
Timur
На один хост одновременно две версии одной и той же роли? 😳
Andrey
В каком смысле одновременно?
В плейбук одновременно для разных хостов могут использоваться разные версии ролей (у нас правда все еще несколько сложнее - версия роли задается в group_vars) Ваш вариант это позволяет?
Andrey
Timur
И git pull недостаточно в вашем случае. Вам приходится ещё делать крайне сложную структуру роли с лишней логикой
Timur
В итоге версиями вам приходится управлять в двух местах (минимум) вместо одного
Timur
Матчасть тут:
https://docs.ansible.com/ansible/2.5/reference_appendices/galaxy.html#installing-roles
Sergey
Sergey
Хотя это моё личное мнение, разумеется.
Timur
Использование ансибла в качестве гита - это заколачивание гвоздей микроскопом
Timur
При этом без гита обойтись все равно не получается
Sergey
Да. Процесс, видимо, так себе.
Timur
Получается каша из топора
Timur
Сама ситуация, когда на разный набор хостов накатываются разные версии ролей - это как раз не фу, а вполне норм. Особенно, если учитывать перекрестные зависимости
Timur
Просто инструмент для выполнения данной задачи выбран совершенно негодный
Павел П.
Вечер добрый.
Задался вопросом защиты от дурака в AWX.
Допустим настроен template, инвентори. Хотим запустить его только на одном указанном хосте, логично спрашивать limit, туда указать. А вдруг в лимит ничего не укажем - тогда пойдёт по всему инвентори (или по группе хостов если внутри плейбука ограничить).
Так вот, как запускать темплейт в awx, но не выполнять если не указан limit?
Ну или подход не тот?)
Anonymous
Anonymous
На этапе выполнения таска