Вагрант: Как вы можете запускать скрипты на хосте с помощью команд в гостевой оболочке?

Можно открывать порты, сетевые файлы, и есть плагины, которые позволяют запускать команды guest или host [shell] во время процесса обеспечения Vagrant.

Я хотел бы иметь возможность (возможно, через псевдоним bash) выполнить команду в гостевой / виртуальной машине Vagrant и заставить ее выполнить команду на хосте, в идеале с переменной, передаваемой в командной строке.

Пример: на моем хосте я запускаю редактор Atom (то же самое относится и к TextMate). Если я хочу работать с общим файлом в ВМ, мне нужно вручную открыть этот файл сверху на хосте, открыв его непосредственно в редакторе или выполнив команду оболочки "имя файла для атома".

Я хочу четности, поэтому, находясь внутри виртуальной машины, я могу запустить "имя файла atom", и это передаст имя файла сценарию "atom $1" вне виртуальной машины на хосте и откроет его в редакторе хоста (Atom).,


Примечание. Мы используем Salt для Vagrant Provisioning и NFS для монтирования, чего бы это ни стоило. И конечно же ssh с ключом.

Дополнительный вопрос: заставить это работать с.gitconfig в качестве редактора конфликта слияния (должен просто работать, если первое возможно, верно?).

1 ответ

Это очень интересный случай использования, которого я раньше не слышал. В Vagrant нет собственного метода обработки этого, но эта функциональность была добавлена ​​в Packer в форме локального поставщика оболочки. Вы можете открыть вопрос GitHub в проекте Vagrant и предложить ту же функцию. Дважды проверьте текущий список проблем, потому что, возможно, кто-то избил вас.

Тем временем, тем не менее, у вас есть обходной путь, если вы полны решимости сделать это...

  1. Создайте пару ключей ssh ​​на вашем хосте.
  2. Используйте соль, чтобы добавить закрытый ключ в /home/vagrant/.ssh на коробке.
  3. Используйте поставщика оболочки для запуска удаленных команд ssh на хосте от гостя.

Эти команды будут принимать форму...

ssh username@192.168.0.1 "ls -l ~"

По моему опыту, 192.168.0.1 IP всегда указывает на хост, но ваш пробег может отличаться. Я ни в коем случае не эксперт по сетевым технологиям.

Я надеюсь, что это работает для вас, и я думаю, что локальный поставщик оболочки для Vagrant был бы разумной возможностью.

Другие вопросы по тегам