我们出于各种原因托管我们自己的DNS服务器(BIND),包括我们经常部署和杀死机器的事实,以及我们有时需要通过DNS非常快速地进行负载平衡.
但是,现在我们有一台好的60台服务器,我们很难跟踪所有记录,在编辑区域文件时我们往往会犯错误.没有什么太糟糕的(我们使用其他DNS提供商作为备份),但我正在寻找一种比手动编辑文件更好的方法.
此外,由于我们使用臭名昭着的chef轻松部署新实例,因此手动执行此操作需要花费最多时间!如果我们能够实现自动化,那将会很感兴趣.
谁知道这件事?编辑和维护此区域文件的好习惯是什么?
解决方法
您可以使用Chef搜索使用发现的主机名/ fqdn和节点的ipaddress动态构建区域文件作为模板.
hosts = search(:node,"*:*") template '/path/to/zonefile' do source 'zonefile.erb' variables(:hosts => hosts) owner 'root' group 'root' mode 0644 end
模板将遍历传递的hosts变量,使用搜索中每个结果的hostname,fqdn和ipaddress.举例:
<% @hosts.each do |h| -%> <%= h['fqdn'] %>. IN A <%= h['ipaddress'] %> <% end -%>