首页 文章

Vagrant:获取主机操作系统的名称

提问于
浏览
8

我们有一个Vagrant设置运行Ubuntu 12.04作为我们团队中的客户操作系统,主机操作系统是Windows 7或8.我希望能够获得Windows主机的主机名和在安装过程中将其附加到Vagrant主机名,例如

config.vm.hostname = <windows hostname>-web

这是因为我们有几个开发人员从他们的本地开发机器连接到外部服务,如果我们都设置了相同的主机名(因为Vagrant文件是源控制的,并且每个人都一样),那么在这些外部服务的日志中我们可以区分谁向服务提出了什么要求 . 我想如果我们能够从主机操作系统动态获取主机名,那么识别在每台开发人员机器上运行的各个客户操作系统是一种好方法 .

这是可能的,如果是这样,实现它的最佳方法是什么?

2 回答

  • 3

    在Windows中,环境变量COMPUTERNAME保存主机名 . 由于Vagrantfile实际上是一个Ruby脚本,您可以像这样设置主机名:

    config.vm.hostname = "#{ENV['COMPUTERNAME']}-web"
    

    在OSX上 ENV['COMPUTERNAME'] 将评估为 nil ,因此您可以使用它在任何Windows / * nix系统上设置主机名:

    config.vm.hostname = "#{ENV['COMPUTERNAME'] || `hostname`[0..-2]}-web"
    

    Update: 我从未意识到Windows有一个 hostname 命令 . 至少Windows 7可以 . 我不知道它会走多远 . 因此,您可以在所有系统上使用以下内容:

    config.vm.hostname = "#{`hostname`[0..-2]}-web"
    
  • 12

    我使用了这种技术,但我不得不稍微修改一下表达式 . 如果hostname像在Mac上那样返回FQDN,则原始功能不起作用 .

    下面是适用于Mac和Windows的工作解决方案 .

    config.vm.hostname = "#{`hostname`[0..-2]}".sub(/\..*$/,'')+"-web"
    

相关问题