非 Puppet 系统的 Puppet sshkey 集合

非 Puppet 系统的 Puppet sshkey 集合

在我的系统上我使用导出资源和资源集合来管理 /etc/ssh/known_hosts ref我的系统。这对于我所有通过 puppet 管理的 SSH 主机都非常有用。但我也有一些不是由 puppet 管理的系统(交换机、路由器等),而且我目前还没有开始管理它们的计划。

有没有优雅的方法将这些非托管系统的主机密钥放入 Puppet?目前,我将它们全部放在一个丑陋的大类中,但一定有更好的方法。我曾想过以某种方式尝试将这些主机的密钥移到 hiera 或其他地方,但我还没有找到不丑陋的解决方案。

有人有我可以遵循的好方法/模式吗?

答案1

我曾经想过以某种方式尝试将这些主机的密钥移到 hiera 或其他地方,但我还没有找到一个不错的解决方案。

有多种方法可以实现这一点。我尝试保持类的通用性,并将所有配置数据放在 hiera 中。当我处理数据集合时,我尝试使用 hiera 哈希,这样我就不必更改类或定义代码。

1:使用 hiera 哈希存储密钥集合。

hiera_key_hash:
    key-1:
        name: cisco500
        type: router
        key: xxx
    key-2:
        name: cisco100
        type: switch
        key: xxx

2:创建类为每个键调用一个 create_resource(它将调用定义“键”)。

class keys {
  create_resources( "key", hiera('hiera_key_hash') )
}

3:创建一个定义它为每个键完成工作。

define key($name, $type, $key) {
  // code goes here
}

注意:在某个阶段,您可能会将敏感信息存储在 hiera 中。您可能需要考虑加密一些 hiera 敏感值。

答案2

嗯...也许在 Hiera 中,通过hiera_array收集数据,将该数组通过定义的类型输入到资源中?由于您需要主机名和密钥,因此您要么需要将它们都放在字符串中,并将split()其放在定义的类型中,要么让数组中包含一些更复杂的东西(可能是哈希)。

管理填充和保持其更新仍然很令人头痛;也许是一个小脚本,其中包含要连接的节点列表,从中收集密钥并生成层次数据?

相关内容