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

Adr*_*lls 8 virtualbox host puppet vagrant vagrantfile

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

config.vm.hostname = <windows hostname>-web
Run Code Online (Sandbox Code Playgroud)

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

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

Fer*_*cio 13

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

config.vm.hostname = "#{ENV['COMPUTERNAME']}-web"
Run Code Online (Sandbox Code Playgroud)

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

config.vm.hostname = "#{ENV['COMPUTERNAME'] || `hostname`[0..-2]}-web"
Run Code Online (Sandbox Code Playgroud)

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

config.vm.hostname = "#{`hostname`[0..-2]}-web"
Run Code Online (Sandbox Code Playgroud)