【问题标题】:Automatic expansion of cluster using puppet使用 puppet 自动扩展集群
【发布时间】:2015-03-12 09:53:23
【问题描述】:

我们正在使用 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 提供一个 puppet 模板,使其与 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 文件。

【问题讨论】:

    标签: puppet


    【解决方案1】:

    哦,请不要;-)

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

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

    ...并收集所有对等方的导出

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

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

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

    【讨论】:

    • 感谢您的回答,这很可能是正确的做法。但是,由于 db 要求,该解决方案似乎将被否决。一直在尝试对其进行测试,但是在 puppet 和 puppetdb 之间的连接正常工作时遇到了很多麻烦,当我尝试使用 puppetdb 的默认值时,我得到:无法检索节点 2 的事实:无法从 puppetdb 的 PuppetDB 中找到事实: 8081:服务器主机名“puppetdb”与服务器证书不匹配;期望 puppetmaster 之一,DNS:puppetmaster
    • @Sam 您是否使用puppetlabs-puppetdb 模块进行了设置?确保将正确的fqdn 作为参数传入。它应该匹配你的CN(“puppetmaster”?)。
    猜你喜欢
    • 2019-12-01
    • 2020-02-26
    • 1970-01-01
    • 2021-04-22
    • 2019-05-26
    • 1970-01-01
    • 2020-12-09
    • 2019-07-26
    • 2022-06-14
    相关资源
    最近更新 更多