George
combine: https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#combining-hashes-dictionaries
чтение файла как yaml: https://docs.ansible.com/ansible/latest/plugins/lookup/file.html
Vitaliy
Спасибо
Aleksey
Vitaliy
Aleksey
Гляну, спасибо
я с гиганским удовольствием перестал пользовать blockinfile/lininfile и перешел на эту штуку
Full
George
Угу, но это в доке описано.
Всё равно подлость. Не люблю делать вещи, в которых грабли и wtf by design. И так хватает wtf by accident в жизни.
Full
Воздержусь от комментария в этом чате, а то выгонят...
Как вариант, можно нужную переменную в плейбуках обвязать фильтром | default, и где нужно, там и задавать, а так пусть по-умолчанию будет.
Или вычисление этого финального значения в /vars перенести.
George
Ну, это всё большие выкрутасы, чем role/defaults. Зачем? Просто повтор defaults это нарушение DRY, а места, где можно было бы один раз написать, нету. Увы.
George
В #ansible-dev в целом все согласны, что такая схема с переменными как сейчас, не самая удачная. Но, уже сделали, т.е. классическое влияние размера лошадиной задницы на размер сопла ракетного двигателя.
Full
> места, где можно было бы один раз написать, нету
Ну, как бы есть - инвентори. Просто в твоем случае оно не подходит. Разве что может генератор инвентори можно научить класть переменную в нужное место.
Oleg
а есть в ansible возможность парсить строку? например есть сервис, который пишет свой статус в лог, и необходимо натравить ансибл после запуска сервиса парсить этот лог и ждать ответа.
Alex
Timur
Oleg
просто в логе сервиса, если статус об успещном запуске уже есть где то ранее, то wait_for сразу говорит об успехе, хотя ему надо ждать запуска сервиса и только последняя строка будет говорит об этом, а не те, что уже ранее в логе есть
Timur
Timur
Oleg
как вар
Aleksey
Ребят, направьте на верный путь, должен ли CI/CD процесс настраивать инфраструктуру?
Timur
Timur
Лучше вот сюда с таким:
https://t.me/devops_ru
Timur
Aleksey
Ну вот я и прошу помочь выбрать правильное направление, для себя не могу понять, стоит ли оно того.
Timur
Если процессы такого требуют, то да - ансиблом в рамках CI/CD можно и инфраструктуру настраивать
Timur
Но общий вопрос на тему «стоит ли» явно за пределами тематики чата
Timur
Ссылочка на более подходящий чат выше
Aleksey
ладно, спасибо
YuraS
коллеги, можете подсказать по Ansible. В плейбуке есть таска которая тупо копирует директорию. Директория весит 17Мб, кол-во файлов 5к. Выполнение таски занимает минут 10. Плейбук применяется на виртуалку которая крутится на этом же хосте. В чем может быть причина такой длительности в копировании? Это у меня какая-то бага, либо особенность копирования большого кол-ва мелких файлов?
Artem
YuraS
по scp?
YuraS
scp скопировал за 3 сек
YuraS
модуль copy
YuraS
YuraS
нужно юзать synchronize модель\
YuraS
Note
The “copy” module recursively copy facility does not scale to lots (>hundreds) of files. For alternative, see synchronize module, which is a wrapper around rsync.
Anonymous
При всем уважении mitoget будет шустрей
Антон
Aleksey
Антон
Вопрос не понятен
Антон
Как минимум в части «динамического формирования этапов»
Aleksey
Pavel
link me up
LINK ME UP INSIDE
Pavel
простите.
Антон
Антон
возможно я ошибаюсь, но в ответах я читаю агрессию. вы пришли за помощью, но не описали вашу задачу. вы описали проблему в реализации вашего видения решения задачи. а частенько случается что выбранное решение идет в разрез с общепринятыми практиками и идеологией продукта.
Антон
поэтому я бы вас попросил описать кейс, ибо в том формате что вы написали очень похоже что вы пошли просто не в ту степь
Антон
момент первый - если это одно и тоже действие просто с разными переменными - то в чем проблема? ансибл умеет брать переменные откуда угодно. просто готовьте переменные и запускайте плейбук
Антон
момент второй - зачем вам враппер?
Антон
момент третий - мне все равно не понятно как связаны в вашем кейсе динамические шаги и ансибл
Антон
опишите пожалуйста предметно кейс. пока звучит... звучит как #яхочустранного
Антон
есть два варианта:
1. средствами ci тимсити - это никак не относиться к ансиблу
2. сформировать лист из ролей в ансибле - и дальше в loop
Антон
вы можете влиять на формат файла?
Антон
вы можете сделать так, чтобы последовательность ролей вам отдавалась массивом в yaml?
Антон
loop_control это задание имени массива с переменными =)
Антон
если вы можете заранее подготовить файл с шагами и файлы с переменными то дальше вы просто инклудите роли в цикле
Антон
а при условии что лист выполняется последовательно - вы можете таким образом выполнять нужные вам роли в нужной вам последовательности
Антон
- name: VMWare | Base Vm setup
include: base_vm_setup.yml
loop:
- base/vmware/delete_vm/
- base/ipam/remove_ip
- base/ipam/new_ip/
- base/ipam/get_ip/
- base/vmware/create_vm/
- base/vmware/management_disk/
- base/secrets/change_password/
delegate_to: localhost
tags:
- base_vm_setup
- never
как-то так
Антон
не помню чтобы что-то вам сдавал чтобы говорить о зачтении/не зачтении...
Aleksey
Антон
внутри base_vm_setup.yml
Aleksey
внутри base_vm_setup.yml
если в цикле роли, то не понятно зачем их куда-то передавать, если переменные, то зачем их передавать неявно... инструмент можно использовать по всякому. вы вольны. но странно
Антон
я вам дал два варианта исходя из той информации что из вас удалось вытянуть. оба вам варианта не нравятся без каких-либо объяснений. ну ок, значит вам не нужна помощь
Антон
Антон
злиться? XDDDDDDDD поржал. нет, просто когда люди хотят помощи они обычно максимально подробно расписывают кейсы. и тут помогают. в вашем случае... это не так )
Aleksey
я не проверял. скорее всего из инклюда item можно подхватить, хотя в одном плейбуке система сразу не приветствует пары дефолтных переменных. и лично я при вервой же возможности все переназначаю на предметные имена. и ошибки области действия самые заморочные
Aleksey
да тут просто море возможностей. вот на счет рандомности: это нужно, или это вредная ситуация? у меня из практики вредная. у вас так?
Aleksey
роли независимые, в метах нет ссылок?
Aleksey
я правильно понял, что список ролей вам дается сверху и не вами задается порядок?
Aleksey
есть правило сортировки? если да, то надо их ранжировать и вызвать таску уже с правильным списком
Aleksey
да. и надо описать правила сортировки. роли же не могут быть произвольные? это всяко из заранее известного множества. значит куда-то выкладывается приоритезация в каком-то виде. и сначала список скачивается, потом сортируется, потом вызывается. причем сортировку можно сделать внешним скриптом - он всяко без changed
Aleksey
параметры в том же файле-задании? это yaml?
Sergey
Та система, которая формирует этот файл, и пишет тутда нормальный плейбук.
Aleksey
вот тут по порядку. что в динамическом файле. только имена ролей