Anonymous
🤷🏼♂️
Vladislav 👻
Если делаешь асинк, то очевидно, что у тебя последовательность может быть любая
Denis 災 nobody
На параллельном запуске возможно что не будет строго последовательно, но это фича
Ivan
как решать, всё на листы переводить?
Vladislav 👻
Если асинк, то тут надо копать именно в параллельность, в питоне был механизм регулирования параллельных выполнений, но сходу не отвечу
Vladislav 👻
Да нет там такого, если нет асинка
Vladislav 👻
Смешно, окей
Ivan
что там, ансибловые функции запрещены да?
Timur
У нас есть такие приборы
Но мы вам про них не расскажем!
(c) Манго-Манго
Vladislav 👻
Сделай отдельный пример
Vladislav 👻
Vladislav 👻
Ну ок, пойду тогда в выходной
Timur
Anonymous
https://t.me/ansible_dev
Антон
коллеги, подскажите пожалуйста, кто что пользует для статического анализа плейбуков и для контроля за code style?
inqfen
Yaml lint, ansible lint
Антон
ага, спасибо
Alex
А в sublime/atom оно интегрируется?
Антон
коллеги, помогите пожалуйста разобраться с массивами
есть yaml с переменными вида:
domains-scoupe:
alfa:
domain_names:
- '*.xxx'
- '*.yyy'
- 'zzz.com'
beta:
domain_names:
- '*.mmm.com'
gamma:
domain_names:
- '*.nnn.org'
- 'vvv.eee.info'
есть переменных хостов, где указываются имена областей alfa, beta и так далее (в любой комбинации)
и у меня задава пройтись по этим областям
прочитал про subelements, получил вот такое:
tasks:
- name: test
local_action:
module: debug
msg: '{{ item.0.ltfs-sd }}'
loop: '{{ domains["beta"] | subelements ("domain_names", "skip_missing=True") }}'
ругается что переменная не определена
как правильно это сделать?
inqfen
ну потому что domains["beta"] нет
inqfen
вообще переменной domains нет
inqfen
там переменная наверное таки domains-scoupe должна быть
Антон
tasks:
- name: test
local_action:
module: debug
msg: '{{ item.0.beta }}'
loop: '{{ domains-scoupe["beta"] | subelements ("domain_names", "skip_missing=True") }}'
Антон
поправил вот так
inqfen
кстати пишется scope)
Антон
ругается что "msg": "obj must be a list of dicts or a nested dict"
Антон
так, у меня вопрос более любопытный
Антон
и более концептуальный
Антон
у меня есть поименнованный массив, могу ли я в ансибле обращаться к его эменетам используя значения из другого массива?
Антон
применительно к данному случаю я в переменных хоста пишу:
host_domains_scope:
- beta
Антон
и смогу ли я написать что-то вроде {{ domains-scope["{{ host_domains_scope }} "]
inqfen
loop: '{{ domains["beta"] | subelements ("domain_names", "skip_missing=True") }}'
тебе видимо так надо
loop: "{{ domains["beta"]['domain_names'] }}"
Антон
Антон
inqfen
В смысле вложенность циклов? Ты по листу итерируешься
Антон
аааа
Антон
просто сделать новую переменную, так понимаю?
inqfen
Так и так при итерации по листу у тебя будет эта переменная, которая каждую итерацию принимает следующее значение
inqfen
set fact для примера просто
Антон
попробую обяснить по другому.
Антон
Антон
можно ли как-то сделать чтобы в этом месте
loop: "{{ domains["beta"]['domain_names'] }}"
тоже был цикл?
что-то вроде
loop: "{{ domains["item"]['domain_names'] }}"
loop "{{ variable_list }}}"
Антон
хотя возможно я хочу дичи )
Антон
при этом variable_list может иметь разный набор в зависимости от хоста
inqfen
https://docs.ansible.com/ansible/2.4/playbooks_loops.html#nested-loops
Антон
ага
Антон
похоже на правду
Антон
а 0 - это первое или последнее?
inqfen
0,1,2,....
inqfen
а вообще выглядит как то, что ты какую-то проблему себе наусложнял и сейчас героически решаешь
Антон
значит первое - 0
Антон
Антон
про Nested Loops уже для общего развития решил спросить
Антон
итить... тут даже такое есть - Looping over Parallel Sets of Data
Антон
хотя может быть крайне полезно...
Lev
Lev
Vladislav 👻
Макос 😬
Lev
Макос 😬
Да, на макос будет норм с агсиб лини
Timur
Timur
Timur
Timur
А есть отдельные плагины с аналогичными функциями
Lev
Timur
Не знаю про саблайм, т.к. не пользуюсь. Для VS Code есть
Антон
Alena
Привет, подскажите пожалуйста, как правильно составить patterns модуля find, чтобы результат поиска не содержал пути, в которых есть определенные названия папок (/directory1/ и /directory2/), т.е их исключить из поиска, папки могут быть на любом уровне.
Lev
Lev
Антон
И вот
угу, я вчера как раз почитав это и задумался об этом
Lev
угу, я вчера как раз почитав это и задумался об этом
Как нибудь разрожусь на статейку/митап, но вкратце так:
1. Есть jenkins
2. Есть гит репа, где лежат:
* все роли
* jenkinsfile
3. В jenkinsfile описан билд:
* чекаутим репу
* вычитываем список ролей и плйбуков
* генерируем динамически стэйджи, размазывая между слэйвами:
* слинтовать плэйбуки
* слинтовать роли
* проверить синтаксис ролей
* прогнать тесты на индемпоиентность и иже с ними
* запустить «е2е» тесты которые на существующие сервера катят хардкоженные сервера гонят плэйбук
* если упали письмо в почту
4. Стараемся делать green build master
Ессно есть прлбоемы, то как моно репо, создание вм, е2е тесты, не все индепотентно. Нет дженкинс шаред библиотек. Особо весело внедрять на существующий проект.
Vladimir ⚪️🔵⚪️
Привет
Vladimir ⚪️🔵⚪️
А можно как-то из ansible сгенерировать набор shell комманд?