2016-01-06 71 views
4

可以打开端口,网络文件,并且有一些插件允许在Vagrant供应过程中运行guest或host [shell]命令。Vagrant:如何通过guest虚拟机shell中的命令在主机上运行脚本?

我想要做的就是能够(也许通过bash别名)在Vagrant guest/VM中运行一个命令,并让它在主机上执行一个命令,理想情况下在一个变量上传递命令行。

示例:在我的主机上运行Atom编辑器(同样适用于TextMate,无论如何)。如果我想在虚拟机中使用共享文件,则必须在主机中通过直接在编辑器中打开该文件或运行'atom filename'shell命令来手动打开该文件。

我想要奇偶校验,因此在虚拟机内部,我可以运行'atom filename',这会将文件名传递给虚拟机外的'atom $ 1'脚本,并在主机中打开它编辑(Atom)。


注意:我们使用Salt for Vagrant Provisioning和NFS进行安装,以了解它的价值。当然,用钥匙ssh。

奖金问题:使用.gitconfig作为它的合并冲突编辑器(如果前者可行,就应该工作吧?)。

回答

1

这是一个非常有趣的用例,我以前没有听说过。在Vagrant中没有处理这种方法的本地方法,但是此功能以local shell provisioner的形式添加到Packer。您可以在Vagrant project上打开GitHub问题,并提出相同的功能。不过,请仔细检查当前问题列表,因为可能有人殴打你。

在此期间,虽然,你有一个解决办法,如果你决心做到这一点...

  1. 在主机上创建SSH密钥对。
  2. 使用Salt在箱子上添加/home/vagrant/.ssh的私钥。
  3. 使用shell配置程序在来宾的主机上运行远程ssh命令。

这些命令将采取的形式...

ssh [email protected] "ls -l ~" 

在我的经验中,192.168.0.1 IP总是指向回主机,但您的里程可能会有所不同。我不是任何网络专家。

我希望这对你有效,我认为一个适合Vagrant的本地shell提供程序将是一个合理的功能。

相关问题