Denis
всем привет
Denis
ребята нужна помощь
Denis
как запустить таску от другого пользователя?
Sergey
как запустить таску от другого пользователя?
become: yes become_user: user https://docs.ansible.com/ansible/latest/user_guide/become.html#directives
Timur
Что за задачу ты хочешь решить?
Timur
Нужно из этого вложенного списка достать в отдельный список keyname и key? Или что-то другое?
Timur
Да, именно так
Сделал для примера вот такой массивчик: system_accounts: - login: LOGINT publickeys: - keyname: KEYNAMET key: "AAA" keytype: RSA - keyname: KYNAEDD key: "CCC" keytype: RSA - keyname: KEYMAES key: "DDD" keytype: RSA - login: AAAAEES publickeys: - keyname: KEYNAMETRE key: "BBB" keytype: RSA
Timur
Вот так: - name: List keyname debug: msg: '{{ system_accounts | sum(attribute="publickeys", start=[]) | map(attribute="keyname") | list }}' - name: List keys debug: msg: '{{ system_accounts | sum(attribute="publickeys", start=[]) | map(attribute="key") | list }}' все работает
Timur
Если в более читабельном виде, то будет вот так: - name: List keyname debug: msg: >- {{ system_accounts | sum(attribute="publickeys", start=[]) | map(attribute="keyname") | list }} - name: List keys debug: msg: >- {{ system_accounts | sum(attribute="publickeys", start=[]) | map(attribute="key") | list }}
Timur
Схема понятна?
John
Схема понятна?
очень сложно. Но работает.
Никита
fatal: [10.0.0.219]: FAILED! => {"msg": "'inventory_host' is undefined"}
Никита
поймал на ровном месте, куда смотреть?
Sergey
Dmitrii такие вещи по согласованию, здесь не чат с вакансиями
Terry
@tnt4brain Dmitrii Semenov - спамер вакансий, можно банить я думаю + он и в гитлабе есть
Sergey
Ну там я его предупредить успел, а тут просто удалил, ибо нефиг.
Sergey
Ладно, здесь просто выкинул. Тоже норм.
Anonymous
не совсем по теме, но bareos та еще наркомания
E_zombie
а есть какой нибудь пример как можно импортировать ролей по шаблону имени директорий где они лежат?
Timur
Что значит "импортировать ролей по шаблону имени директорий где они лежат"?
E_zombie
мне надо выполнить только определённые роли по шаблону имени
E_zombie
additional_roles]# ls custom ha-clickhouse ha-nginx
E_zombie
например толькто те которые начинаются с ha-
Timur
Вы хотите странного
Timur
Список ролей в плейбуке подразумевается фиксированный
Timur
Иначе какой смысл в ролях
Timur
Плейбуки теоретически можно генерить динамически, но юзкейс я себе слабо представляю
E_zombie
жизнь такая что эти роли могут быть а могут и не быть у пользователя. вот не надо ему виртуалки формировать. а кому то надо. он кастомную роль и подгружает.
George
Типа install_xxx: false
Timur
Зачем по шаблону роли подключать - все равно не понимаю
Igor
Плейбуки теоретически можно генерить динамически, но юзкейс я себе слабо представляю
вполне себе ок юзкейс. представь себе энв под ключ, 10 серверов, 3 из них - кластер монго например. надо развернуть новый энв, на них на всех базовая хуйня типа prometheus node-exporter, nginx и ssl и чо нибудь еще. зачем на монго ставить Nginx? делаешь таску, где хост не матчится с паттерном, профит
George
Либо ставится, либо нет
Igor
Лолшто?
што "лолшто"
Timur
Если на хосте не нужна роль, не нужно просто ее ставить
Igor
будь ленивым
Timur
Зачем тут какая-то таска?
Igor
человек хочеть скипать части плейбука по хостам - хули нет
Timur
Если таска скипается по определенному условию - это ок. Но опять же - не понимаю, при чем тут накат ролей по шаблону имени
Igor
один плейбук to rule them all
Timur
один плейбук to rule them all
Это без проблем
Timur
Один плейбук - несколько плеев с разными группами. На каждую группу - свой набор ролей
Timur
И вперед
E_zombie
1. список ролей выбирается пользователем. 2. часть ролей должна быть выполнена ДО остальных. если со вторым все понятно то вопрос в первом.
George
Выбирай пользователем
George
Он же может плейбук редактировать ?
Timur
1. список ролей выбирается пользователем. 2. часть ролей должна быть выполнена ДО остальных. если со вторым все понятно то вопрос в первом.
Если выбирается пользователем - просто вписываются нужные роли в плейбук самим пользователем
E_zombie
у пользователя вебморда и он не может править плейбуки
Igor
а. человек хочет cloudfoundry из ансибла сделать
E_zombie
он может только нажать - деплой
Igor
можно захерачить плейбук из доступных ролей
Igor
но придется руками поработать
Igor
чтобы сделать морду
George
Пользователь их через веб морду может определять флажками true / false
George
В плейбуке, очевидно, условие when
E_zombie
https://code.getnoc.com/noc/tower
Timur
Если хочется динамики по ролям, можно использовать include_role
Timur
И список ролей через переменную передавать
E_zombie
я порылся в доке. но не понял как ему подсунуть список
E_zombie
пример работающий есть ?
Timur
- name: Use role in loop include_role: name: '{{ roleinputvar }}' loop: '{{ roles_list }}' loop_control: loop_var: roleinputvar
E_zombie
спасибо. буду пробовать.
Timur
Ну, или генерить плейбуку через jinja темплейт
Timur
Типа такого: - hosts: localhost roles: {% for name in role_vars -%} - {{ name }} {% endfor %}
Timur
Но это все #странное