6

可以打开端口、网络文件,并且有插件允许在 Vagrant 的 Provisioning 过程中运行来宾或主机 [shell] 命令。

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

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

我想要奇偶校验,所以在虚拟机内部时,我可以运行“原子文件名”,这会将文件名传递给虚拟机外部的“原子 $1”脚本,在主机中,并在我的主机编辑器(Atom)中打开它.


注意:我们使用 Salt 进行 Vagrant Provisioning,并使用 NFS 进行挂载,这是值得的。当然,使用密钥 ssh。

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

4

1 回答 1

2

这是一个非常有趣的用例,我以前从未听说过。在 Vagrant 中没有处理这个的本地方法,但是这个功能以本地 shell 配置器的形式添加到 Packer 中。你可以在Vagrant 项目上打开一个 GitHub 问题并提出相同的功能。但是,请仔细检查当前的问题列表,因为可能有人已经打败了您。

不过,与此同时,如果您决心这样做,您确实有一个解决方法......

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

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

ssh username@192.168.0.1 "ls -l ~"

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

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

于 2016-01-06T18:26:08.790 回答