使用puppet自动扩容集群

Automatic expansion of cluster using puppet

我们正在使用 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 对于所有节点都是唯一的(必须具有通用配置的应用程序需要)

我们的问题来自扩展,我们希望 /etc/hosts 在新节点启动并连接到 puppet master 时自动在所有机器上分配新节点。

我们的想法是为 /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 文件。

哦,请不要 ;-)

您的每台机器都可以动态导出自己的节点条目。

@@host { $fqdn: ip => $ipaddress, tag => 'my-tag-foobar' }

...并收集所有同行的出口

Host<<| tag == 'my-tag-foobar' |>>

请务必在您的主机上设置 PuppetDB 以使其正常工作。

您不应将 /etc/hosts 作为一个完整的文件来管理,因为您会失去 Puppet 的 host 资源提供的灵活性。