【问题标题】:Vagrant: How can you run scripts on the host via commands in the guest shell?Vagrant:如何通过 guest shell 中的命令在主机上运行脚本?
【发布时间】:2016-01-07 02:26:08
【问题描述】:

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

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

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

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


注意:我们使用 Salt 进行 Vagrant Provisioning,并使用 NFS 进行挂载,这是物有所值的。当然,还可以使用密钥 ssh。

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    这些命令的形式是……

    ssh username@192.168.0.1 "ls -l ~"
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-18
      • 2021-03-20
      • 2011-06-17
      相关资源
      最近更新 更多