Вагрант: Как вы можете запускать скрипты на хосте с помощью команд в гостевой оболочке?
Можно открывать порты, сетевые файлы, и есть плагины, которые позволяют запускать команды guest или host [shell] во время процесса обеспечения Vagrant.
Я хотел бы иметь возможность (возможно, через псевдоним bash) выполнить команду в гостевой / виртуальной машине Vagrant и заставить ее выполнить команду на хосте, в идеале с переменной, передаваемой в командной строке.
Пример: на моем хосте я запускаю редактор Atom (то же самое относится и к TextMate). Если я хочу работать с общим файлом в ВМ, мне нужно вручную открыть этот файл сверху на хосте, открыв его непосредственно в редакторе или выполнив команду оболочки "имя файла для атома".
Я хочу четности, поэтому, находясь внутри виртуальной машины, я могу запустить "имя файла atom", и это передаст имя файла сценарию "atom $1" вне виртуальной машины на хосте и откроет его в редакторе хоста (Atom).,
Примечание. Мы используем Salt для Vagrant Provisioning и NFS для монтирования, чего бы это ни стоило. И конечно же ssh с ключом.
Дополнительный вопрос: заставить это работать с.gitconfig в качестве редактора конфликта слияния (должен просто работать, если первое возможно, верно?).
1 ответ
Это очень интересный случай использования, которого я раньше не слышал. В Vagrant нет собственного метода обработки этого, но эта функциональность была добавлена в Packer в форме локального поставщика оболочки. Вы можете открыть вопрос GitHub в проекте Vagrant и предложить ту же функцию. Дважды проверьте текущий список проблем, потому что, возможно, кто-то избил вас.
Тем временем, тем не менее, у вас есть обходной путь, если вы полны решимости сделать это...
- Создайте пару ключей ssh на вашем хосте.
- Используйте соль, чтобы добавить закрытый ключ в
/home/vagrant/.ssh
на коробке. - Используйте поставщика оболочки для запуска удаленных команд ssh на хосте от гостя.
Эти команды будут принимать форму...
ssh username@192.168.0.1 "ls -l ~"
По моему опыту, 192.168.0.1
IP всегда указывает на хост, но ваш пробег может отличаться. Я ни в коем случае не эксперт по сетевым технологиям.
Я надеюсь, что это работает для вас, и я думаю, что локальный поставщик оболочки для Vagrant был бы разумной возможностью.