如何判断我是否在Vagrant主持人中?

时间:2015-03-05 20:25:08

标签: vagrant environment

什么是确定我是否在流浪汉机器内跑步的防弹方法?

客户操作系统是Debian Linux,但如果有指标per-os也很好记录。

7 个答案:

答案 0 :(得分:5)

AFAIK,除了您自己的自定义之外,还有其他方法。想到的一个想法是触摸您随后从应用程序引用的文件。在{Vagrantfile>的底部添加config.vm.provision "shell", inline: "touch /etc/is_vagrant_vm"之类的内容,并根据该文件的存在来建立条件。

答案 1 :(得分:5)

配置一个可以检查存在的文件似乎是处理此问题的最可靠方法。

如果您不想将文件写入包装盒,另一个选择是检查vagrant用户本身是否存在:

grep -q '^vagrant:' /etc/passwd && echo 'Vagrant environment: true'

这并非像其他人所指出的那样万无一失,并且有可能(尽管不常见)有一个使用不同用户连接的流浪盒。

如果您的环境中的计算机上有一个名为vagrant的用户帐户并非实际流浪盒,那么检查用户的存在也无法可靠地运行,但这也是相当不常见的

答案 2 :(得分:1)

我不知道是否有任何防弹方式,但我经常做的一件事是将我的流浪者环境的shell UI配置为与我的主机的shell UI不同。这样我乍一看就可以区分出来。如果您想区分多个流浪者环境,它也会有所帮助。

要自定义shell UI,oh-my-zsh将派上用场。

答案 3 :(得分:0)

假设您不在流浪者实例中运行流浪汉实例:

$i=1;
while($x= mysqli_fetch_array($y)) { 
$bh = $row['Bulkhead"'.$it.'"'];
}
$i++;

答案 4 :(得分:0)

您可以使用facter

facter | grep vagrant

答案 5 :(得分:0)

这就是我用一小块bash来回答这个问题的方法。 -e标志检查文件是否存在。将provision更改为对您的构建有意义的文件路径。

#!/usr/bin/env bash

user=$USER

provision=/vagrant/Vagrantfile
if [ -e $provision ]
then
  echo "Vagrantfile found..."
  echo "Setting $user to vagrant..."
  user=vagrant
fi

# Example usage
cd /home/$user

测试了“centos / 7”

答案 6 :(得分:0)

在vagrant中,您可以控制正在运行的IP,因此您可以将其更改为例如192.168.0.10

然后:

curl localhost:8080/health => in local e.g spring-boot

curl 192.168.0.10:8080/health => in vagrant

注意:/ health假定是spring-boot,但您也可以使用自己的/ health端点实现