Amazon ec2 流浪汉与警察之间的傀儡条件检查;ec2
我已经看了文档,似乎无法理解如何将其应用于以下情况:Amazon ec2 流浪汉与警察之间的傀儡条件检查;ec2,amazon-ec2,puppet,vagrant,Amazon Ec2,Puppet,Vagrant,我已经看了文档,似乎无法理解如何将其应用于以下情况: if vagrant (local machine) phpfpm::nginx::vhost { 'vhost_name': server_name => 'dev.demo.com', root => '/vagrant/public', } else if aws ec2 (remote machine) phpfpm::nginx::vhost { 'vhost_name': s
if vagrant (local machine)
phpfpm::nginx::vhost { 'vhost_name':
server_name => 'dev.demo.com',
root => '/vagrant/public',
}
else if aws ec2 (remote machine)
phpfpm::nginx::vhost { 'vhost_name':
server_name => 'demo.com',
root => '/home/ubuntu/demo.com/public',
}
谢谢尝试在您的vagrant主机和EC2实例上运行facter,并查找差异。我怀疑两台主机之间的“facter virtual”可能不同,或者EC2可能会返回一组EC2事实,这些事实不会出现在流浪主机上 然后您可以使用这个事实作为顶级变量,如下所示。我也切换到case语句,因为维护IMHO稍微容易一点,而且可以使用默认块进行错误检查
case $::virtual {
'whatever vagrant returns' : {
<vagrant specific provisionin>
}
'whatever the EC2 instance returns' : {
<EC2 specific provisioning>
}
default : {
fail("Unexpected virtual value of $::virtual")
}
}
case$::虚拟{
“不管流浪汉回来了什么”:{
}
'无论EC2实例返回什么':{
}
默认值:{
失败(“意外的虚拟值$::virtual”)
}
}
注意:在该回复发布后的三年中,Vagrant引入了facter
散列选项。有关更多详细信息,请参见下面的@thomas'答案。我相信这是正确的方法,并且使我提出的内核命令行技巧变得非常过时。然而,使用事实的理由并没有改变,只是得到了加强(例如,Vagrant目前支持AWS提供商)
原始回复:小心-您假设您只将virtualbox用于vagrant,反之亦然,但vagrant正在致力于支持其他虚拟化技术(例如kvm),并且您可能有一天在不使用vagrant的情况下使用virtualbox(例如用于生产)
相反,我使用的技巧是在构建basebox时向内核传递一个“vagrant=yes”参数,然后可以通过/proc/cmdline访问该参数。然后,您可以基于此创建一个新事实(例如/etc/vagrant文件,并在后续的facter运行中检查它)。vagrant有一个:
因子(散列)-设置为可用因子变量的数据散列
在木偶奔跑中
例如,下面是我的Vagrant文件中的一个片段,其中包含Puppet设置:
config.vm.provision "puppet", :options => ["--fileserverconfig=/vagrant/fileserver.conf"] do |puppet|
puppet.manifests_path = "./"
puppet.module_path = "~/projects/puppet/modules"
puppet.manifest_file = "./vplan-host.pp"
puppet.facter = {
"vagrant_puppet_run" => "true"
}
end
然后我们利用这个事实,例如:
$unbound_conf = $::vagrant_puppet_run ? {
'true' => 'puppet:///modules/unbound_dns/etc/unbound/unbound.conf.vagrant',
default => 'puppet:///modules/unbound_dns/etc/unbound/unbound.conf',
}
file { '/etc/unbound/unbound.conf':
owner => root,
group => root,
notify => Service['unbound'],
source => $unbound_conf,
}
请注意,该事实仅在
傀儡供应期间可用。非常感谢,是的,对于流浪者,虚拟回复virtualbox,对于ec2:)