[英]How to tell if I am inside a Vagrant host?
什么是防弹方式来确定我是否在流浪汉机器内运行?
客户操作系统是Debian Linux,不过如果有指标per-os也很好记录。
AFAIK,除了您自己的自定义之外没有办法。 想到的一个想法是触摸您随后从应用程序引用的文件。 添加类似config.vm.provision "shell", inline: "touch /etc/is_vagrant_vm"
东西config.vm.provision "shell", inline: "touch /etc/is_vagrant_vm"
到你的Vagrantfile的底部,并根据该文件的存在来定位你的条件。
配置一个可以检查存在的文件似乎是处理此问题的最可靠方法。
如果您不想将文件写入框中,另一个选项是检查vagrant
用户本身是否存在:
grep -q '^vagrant:' /etc/passwd && echo 'Vagrant environment: true'
这并非像其他人所指出的那样万无一失,并且有可能(尽管不常见)有一个使用不同用户连接的流浪盒。
如果您的环境中的计算机上有一个名为vagrant的用户帐户实际上并不是流浪盒,那么检查用户的存在也无法可靠地工作,但这也是相当不常见的。
我不知道是否有任何防弹方式,但我经常做的一件事是将我的流浪者环境的shell UI配置为与我的主机的shell UI不同。 这样我乍一看就可以区分出来。 如果您想要区分多个流浪者环境,它也会有所帮助。
要自定义shell UI, oh-my-zsh会派上用场。
假设你没有在你的vagrant实例中运行vagrant实例:
if which vagrant > /dev/null 2>&1; then
echo "This is most likely the host"
fi
你可以使用facter
facter | grep vagrant
这就是我用一小块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
在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端点实现
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.