Vagrant 如何判断我是否在一个流浪的主人里面?
用什么防弹方法来确定我是否在一台流浪机器内运行Vagrant 如何判断我是否在一个流浪的主人里面?,vagrant,environment,Vagrant,Environment,用什么防弹方法来确定我是否在一台流浪机器内运行 来宾操作系统是Debian Linux,不过如果每个操作系统都有指标,最好也有文档记录。AFAIK,除了您自己的定制之外,没有其他方法。想到的一个想法是触摸一个文件,然后从应用程序中引用该文件。在vagrant文件的底部添加类似于config.vm.provision“shell”的内容,内联:“touch/etc/is\u vagrant\u vm”,并以该文件的存在为基础设置条件。我不知道是否有任何防弹方法,但我经常做的一件事是将我的vagra
来宾操作系统是Debian Linux,不过如果每个操作系统都有指标,最好也有文档记录。AFAIK,除了您自己的定制之外,没有其他方法。想到的一个想法是触摸一个文件,然后从应用程序中引用该文件。在vagrant文件的底部添加类似于config.vm.provision“shell”的内容,内联:“touch/etc/is\u vagrant\u vm”,并以该文件的存在为基础设置条件。我不知道是否有任何防弹方法,但我经常做的一件事是将我的vagrant环境的shell UI配置为不同于主机的shell UI。这样一来,我一眼就能看出区别。如果您想区分多个流浪环境,它也很有帮助
若要自定义shell UI,将派上用场。假设您没有在vagrant实例中运行vagrant实例:
if which vagrant > /dev/null 2>&1; then
echo "This is most likely the host"
fi
您可以使用
facter
facter | grep vagrant
设置一个可以检查其存在的文件似乎是最可靠的处理方法 如果您不想将文件写入框中,另一个选项是检查是否存在
vagrant
用户本身:
grep -q '^vagrant:' /etc/passwd && echo 'Vagrant environment: true'
这并不是像其他人所指出的那样万无一失,而且有可能(尽管不常见)有一个使用不同用户进行连接的“漫游”框
如果您的环境中有一个名为vagrant的用户帐户,而该帐户实际上不是vagrant Box,那么检查用户的存在性也不会可靠地工作,但这也是相当罕见的。这就是为什么我能够用一小段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”上测试,在“vagrant”中,您可以控制运行的IP,因此您可以将其更改为例如192.168.0.10 然后:
注意:/health假定为spring引导,但您也可以使用自己的/health端点实现什么是“流浪机器”?只是通过vagrant启动的虚拟机?我怀疑有什么办法,b/c即使磁盘上有流浪者的证据,也可能它已经打包,现在通过虚拟盒运行。让“流浪者机器”引用vagrant根据初始的
vagrant up
命令创建的任何虚拟机。@ThorCaller我想添加这个作为其他任何人的答案,直到有更聪明的人通过:)是的,我正在考虑为自己设置一个环境变量,但我只是希望soemthing可以预先使用。如果你在来宾操作系统中安装了vagrant,你可以更巧妙地使用“vagrant status”。检查用户名可能非常可靠,或者检查/vagrant文件夹。这些并不能保证存在,但它们在我今天使用的每台流浪机器上都有。(这只是Ubuntu的股票)16.04 LTS版本上没有流浪用户。不过有一个/vagrant
目录。
curl localhost:8080/health => in local e.g spring-boot
curl 192.168.0.10:8080/health => in vagrant