我们正在使用puppet为虚拟图像配置我们的产品。我们使用/ etc / hosts列出集群中的节点,如下所示:
127.0.0.1 localhost
x.x.x.x node-1
y.y.y.y node-2
z.z.z.z node-3
x.x.x.x this_node_ip
此文件在所有节点上都是相同的,除了this_node_ip对于所有节点都是唯一的(必须具有通用配置的应用程序所需)
我们的问题在于扩展,我们希望在新节点启动并连接到puppet master时,/ etc / hosts在所有机器上自动分配新节点。
我们的想法是为/ etc / hosts设置一个木偶模板,使其与this_node_ip的事实保持同步,但我们如何在模板中添加新节点?
在某种程度上,是否有人列出所有连接到master的代理? 那么我们可以使用基于连接代理的每个循环填充/ etc / hosts? 在这种情况下,模板会像:
<% @list_of_nodes.split(',').each |ip, hostname| %>
<%= ip %> <%= hostname%>
<% end -%>
<%= ipadress_eth0 %> this_node_ip
目前我们唯一的想法就是让新节点scp为puppetmaster节点创建一个新模板,所有节点都硬编码以更新旧节点的/ etc / hosts文件。
答案 0 :(得分:1)
哦,请不要; - )
您的每台计算机都可以动态导出自己的节点条目。
@@host { $fqdn: ip => $ipaddress, tag => 'my-tag-foobar' }
...并收集所有同行的出口
Host<<| tag == 'my-tag-foobar' |>>
在主服务器上设置PuppetDB以使其正常工作。
您不应将/etc/hosts
作为完整文件进行管理,因为您会失去Puppet的host
资源提供的灵活性。