Vagrant:如何通过来宾shell中的命令在主机上运行脚本?

时间:2016-01-06 18:08:48

标签: bash shell vagrant atom-editor vagrant-plugin

可以打开端口,网络文件,并且有插件可以在Vagrant的配置过程中运行guest虚拟机或主机[shell]命令。

我想做的是能够(可能通过bash别名)在Vagrant guest虚拟机/ VM中运行命令,并在主机上执行命令,理想情况下在命令上传递变量线。

示例:在我的主机中,我运行Atom编辑器(同样适用于TextMate,无论如何)。如果我想处理VM中的共享文件,我必须在主机中手动打开该文件,方法是直接在编辑器中打开它,或者运行'atom filename'shell命令。

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

注意:我们使用Salt进行流氓配置,使用NFS进行安装,以获得它的价值。当然,还是带有密钥的ssh。

奖金问题:使用.gitconfig作为其合并冲突编辑器(如果前者可行,应该正常工作,对吗?)。

1 个答案:

答案 0 :(得分:2)

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

与此同时,如果你决定这样做,你确实有一个解决方法......

  1. 在您的主机上创建一个ssh密钥对。
  2. 使用Salt在框中的/home/vagrant/.ssh添加私钥。
  3. 使用shell配置程序从guest虚拟机在主机上运行远程ssh命令。
  4. 这些命令将采用......

    的形式
    ssh username@192.168.0.1 "ls -l ~"
    

    根据我的经验,192.168.0.1 IP始终指向主持人,但您的里程可能会有所不同。我无论如何都不是网络专家。

    我希望这对你有用,我认为Vagrant的本地shell配置程序是一个合理的功能。