什么是确定我是否在流浪汉机器内跑步的防弹方法?
客户操作系统是Debian Linux,但如果有指标per-os也很好记录。
答案 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端点实现