Есть хост, на котором я запускаю ansible.Я хочу написать задачу в плейбуке, которая бы запускала команду локально, без подключения через SSH.
Говоря точнее, мне нужно сделать задачу, которая запускала бы виртуальные машины VirtualBox. И сделать это нужно в текущей сессии пользователя, под которым и запускается команда ansible-playbook.
Если делать через модуль local_action, вот так:
local_action: command cmd='cd {{vm_images_path}} ; cd ./arm1/ ; VBoxManage startvm "Debain Linux - arm1"'
то ansible все равно пытается подсоединиться через ssh, и выполнить команду в другой сессии. А мне надо выполнить команду в текущей сессии, чтобы я видел окна запущенных виртуальных машин.Как это сделать?
> Есть хост, на котором я запускаю ansible.
> Я хочу написать задачу в плейбуке, которая бы запускала команду локально, без
> подключения через SSH.Посмотрите https://lmgtfy.com/?q=run+ansible+playbook+locally+without+ssh
> Говоря точнее, мне нужно сделать задачу, которая запускала бы виртуальные машины VirtualBox.
> И сделать это нужно в текущей сессии пользователя, под которым и
> запускается команда ansible-playbook.
> ...
> А мне надо выполнить команду в текущей сессии, чтобы
> я видел окна запущенных виртуальных машин.Под сессией, очевидно, имеется в виду графический десктоп.
Обычно народ мучается, как бы сделать наоборот, запустить виртуалку не показывая её окно...Как выполнить команду в текущей сессии я вам не скажу, но позвольте предложить несколько советов.
Попрактикуйтесь на кошках. Вместо того, чтобы сразу вызывать VBoxManage из ansible, зовите какой-нибудь calc или xterm, таким образом ваши тесты будут гораздо легче и быстрее. Когда добьётесь необходимого поведения, можно будет просто изменить команду на что-то полезное.
Контролировать, на каком экране показывается графическое приложение, можно переменными окружения, например DISPLAY. Окружение можно задать для ansible, конкретно для команды, или в скрипте который будет запускать плейбук. Погуглите примеры, как люди вызывают графически еприложения из cron.
Прикиньте, нужно ли вам на самом деле "выполнять команду в текущей сессии" для того чтобы "видеть окна запущенных виртуальных машин". Может оказаться проще запускать виртуалку без головы (headless) и общаться с ней по RDP который VirtualBox же и предоставляет.
Вообще, headless режим позволяет показывать и скрывать окно виртуалки по желанию, кнопками Show и опцией Detach GUI. Но на них надо жмакать мышкой.
> Есть хост, на котором я запускаю ansible.
> Я хочу написать задачу в плейбуке, которая бы запускала команду локально, без
> подключения через SSH.
> Как это сделать?---
- name: Run local tasks
hosts: 127.0.0.1
connection: local
gather_facts: no
vars:
....
tasks:
- name: Local command
...