Дмитрий Харитонов
mount
исчерпывающе)
username
исчерпывающе)
Ок, mount и grep -v
username
Этого достаточно
Дмитрий Харитонов
ну шелом это слишком просто)
k
ну шелом это слишком просто)
Тут недавно спрашивали это Положите скрипт в facts.d и отдавайте полученное json-ом Эти данные будут доступны без отдельного шага с command/shell
Yuriy
всем привет. есть вопрос по ансиблу. ансибл может запускать процессы НЕ в фоновом режиме - так чтобы на рабочем столе их было видно?
Yuriy
Виндовс 10. Идея в том чтобы Дженкинс на убунте запустил пайплайн который запустит автотесты на виндовом тест-агенте
Yuriy
сейчас это реализовано через freestyle job (Дженкинс на Винде) + bat-files + psexec/
Yuriy
хочу сделать через pipeline (Дженкинс Убунта)...
Dmytro
Я так понимаю е2е тесты?
Yuriy
да. ГУЕвые
Dmytro
Не понимаю какая роль здесь ансибла.. сам пайплайн может запустить что угодно.
Dmytro
Все зависит чем тестить, для таких тестов иногда окружение винды нужно подкрутить. Сейчас найду старые наработки. Но ансибл тут не нужен.
Yuriy
на данный момент я конекчусь убунто-дженкинсом по ssh и потом запускаю бат через psexec.
Yuriy
если запускать просто maven (через бат-файл) то все работает в фоновом режиме.
Yuriy
то есть отладить или задебажить будет проблематично.
Dmytro
Немного не по теме чата уже говорим ;(
Lamobot
на данный момент я конекчусь убунто-дженкинсом по ssh и потом запускаю бат через psexec.
И он открывает gui у юзера? Я пробовал запускать через ansible приложеньку на windows чтобы окошко открылось у пользователя. После чтения интернетов забил - сделал через ансибл как сервис. Но опять же, вопрос возможности удаленно через консоль запустить запустить приложение с gui не относится к ансиблу, а лишь к windows и его консольным возможностям.
Denis 災 nobody
Немного не по теме чата уже говорим ;(
обсуждение из дженкинса приехало. Разрешаю )
Maksim
Интересно, а почему он так работает?
Denis 災 nobody
но у меня дикое дежавю, что про запуск в фореграунде уже обсуждали, и решили что в 10 это специально порезали, надо через VNC подключаться
Maksim
Вопрос снят, регулярки
Denis 災 nobody
Я не эксперт, но я не думаю что это возможно, так как в новых версиях Windows отключена возможность доступа к рабочему столу из сервисов в принципе, поэтому даже если раньше это работало, то сейчас уже нет
Denis 災 nobody
Я обошел это запускам bat и созданием там mstsc.exe сессии, грепанье активной сессии, а потом через psexec указанием ID сессии и что запускать
Дмитрий Харитонов
Другой вопрос. есть такая конструкция в темплейте {% for mounts in ansible_mounts %} Mountpoint: {{ mounts.mount }} {% endfor %} как бы туда добавить исключения на /boot и / ?
Alex
Другой вопрос. есть такая конструкция в темплейте {% for mounts in ansible_mounts %} Mountpoint: {{ mounts.mount }} {% endfor %} как бы туда добавить исключения на /boot и / ?
{% for mounts in ansible_mounts %} {% if mounts.mount not in ['/', '/boot'] %}Mountpoint: {{ mounts.mount }}{% endif %} {% endfor %} как то так
Дмитрий Харитонов
логично)
Дмитрий Харитонов
спс
Michael
уже поправил
Спасибо :) Мне тоже пригодится :)
Дмитрий Харитонов
так работает {% for mounts in ansible_mounts %} {% if mounts.mount in ['/', '/boot'] %} {% else %} Mountpoint: {{ mounts.mount }} {% endif %} {% endfor %}
Дмитрий Харитонов
ну да
Дмитрий Харитонов
только там опечатка ещё, boot без слеша в начале
Yuriy
По простому, Ансибл не позволяет это делать. И он не для этого предназначен. Вам придётся городить костыли, как в сообщении выше :)
Да . я єто сообщение уже видел. у меня в принципе почти так и сделано уже. идея біла в том чтобы стало лучше.... то есть отказаться от psexec. но если отказаться от него нельзя, действительно ансибл не нужен.
Дмитрий Харитонов
Без if-а чуть элегантней ansible_mounts | difference(['/', '/boot'])
нет, так не работает, там же нужно по mount проверку делать а не по всему что в ansible_mounts
k
нет, так не работает, там же нужно по mount проверку делать а не по всему что в ansible_mounts
А, действительно. Тогда что-то такое: ansible_mounts | rejectattr('mount', 'in', ['/', '/boot']) | list
k
rejectattr
Спасибо, поправил
Alexander
Привет всем
Alexander
Такой вопрос, раньше в плейбуке были инклюды такого вида: - include: install-images.yml sandbox_hostname: "{{ansible_hostname}}" when: inventory_hostname in groups['group_name']
Alexander
В данном случае sandbox_hostname это произвольная переменная, которая потом использовалась в тасках включенного ямла
Alexander
И это преспокойно работало. Сейчас ансибл стал ругаться onflicting action statements: include, sandbox_hostname
Alexander
Думает, что это не переменная, а два экшна в одной таске
Alexander
Вопрос: синтакс сменился с версией? Как сейчас правильно задать переменную, которая используется при инклюде? Что вроде такого? ``` - include: install-images.yml vars: sandbox_hostname: "{{ansible_hostname}}" when: inventory_hostname in groups['group_name'] ```
Alexander
Гуглить вопрос сложновато, т.к. при запросах с ansible, include и variables находится сами понимаете что (include_vars)
Alexander
А, вспомнил, тут использовался емнип include вместо include_tasks как раз потому, что с последним он не хотел раньше жрать переменные. А теперь видно может
Alexander
Спасибо )
Alexander
А может быть и потому, что include_tasks не работал с delegate_to, а include работал. Эх, придется все-таки проверять, какой вариант теперь прокатит, прежде чем коммитить
Alexander
А как лучше?
Alexander
А, понял вопрос. Там все сложно, это работа с кубами
Alexander
На самом деле там перечислены несколько групп в разных тасках с and и or
Alexander
Просто задать через hosts нельзя. В общем так надо
Timur
А, понял вопрос. Там все сложно, это работа с кубами
Это неважно. Такая конструкция - антипаттерн, плюющий на все встроенные механизмы распределения задач по хостам
Alexander
Ну давай попробуем
Timur
Ну давай попробуем
Ну, так расскажи, что мешает сделать отдельный плей на group_name с тасками из инклуда?
Alexander
Этот плейбук динамически инклюдит другой плейбук, в котором есть таски, выполняющиеся только на мастер-ноде кубов
Alexander
Такие таски работают через delegate_to
Alexander
В зависимости от того, является ли искомая нода либо кубовым мастером, либо кубовым воркером, нужно делегировать таску на мастер, либо выполнять ее прямо на той же ноде, что и весь плейбук
Timur
Почему я не удивлен?
Alexander
И как это надо сделать по-твоему? Писать кучу отдельных плейбуков? )
Timur
И правильно прописанными группами
Timur
И не лохматить бабушку с программированием на ямле
Alexander
А какой второй антипаттерн-то? Использование delegate_to в принципе?
Timur
А какой второй антипаттерн-то? Использование delegate_to в принципе?
Динамический инклюд плейбук с разными группами