我目前正在将大量EC2实例转换为一系列puppet脚本,然后使用Vagrant虚拟化本地开发的钻井平台。如何在流浪者和傀儡之间共享hosts文件
我已经陷入了管理流浪者的网络并将其映射到生产上。
首先,我有这样的事情:
# Main Web Server
config.vm.define :app do |app_config|
app_config.vm.host_name = "web1"
app_config.vm.network :hostonly, "10.0.0.2"
app_config.vm.box = "precise64"
...etc
puppet.manifest_file = "persist/web.pp"
end
# First DB server
config.vm.define :db1 do |db1_config|
db1_config.vm.host_name = "db1"
db1_config.vm.network :hostonly, "10.0.0.3"
db1_config.vm.box = "precise64"
...etc
puppet.manifest_file = "persist/db.pp"
end
etc.
在这种情况下web.pp和db.pp
然后是相当简单的,他们只是建立蟒蛇,uwsgi,nginx的时,MySQL等
所以问题:我需要里面例如puppet/modules/hosts/files/hosts
必须指定类似:
10.0.0.3 db1.X.com
10.0.0.4 db2.X.com
etc.
在生产中我们使用我们网站的DNS和EC2实例的DNS记录组合(我不能放入主机)。通常,我们的haproxy主机具有公共DNS记录,并且它们在其配置中保存EC2名称(这使得不能使用主机文件)。
那么,如何可以建立两个傀儡,流浪汉可以导入和使用全局映射,如文件:
hosts = {
web => 10.0.0.2,
db1 => 10.0.0.3,
db2 => 10.0.0.4,
}
,我可以从例如haproxy.cfg
木偶模板中访问,但也从内流浪访问文件,所以我可以设置vm.network
。
限制:
- 不能是IP而已,一定是象征性的名称或者IP或者DNS
- 不能用一个木偶大师(不幸的是在这一个不灵活)。
- 将DNS服务器虚拟化似乎也很麻烦,所以id不是。
而且我真的新红宝石,如果你提供的例子(这将是巨大的),请形容它足以让我能够通过红宝石文档找到我的路。