在我的系统上,我使用导出的资源和资源集合来pipe理系统的/ etc / ssh / known_hosts引用 。 这对我所有通过木偶pipe理的SSH主机都很有效。 但是我也有系统不是由木偶(交换机,路由器等)pipe理,我没有任何立即计划开始pipe理它们。
有没有什么优雅的方式来获得这些非托pipe系统的主机密钥到puppet? 现在我只把他们全部放在一个丑陋的class级里,但是一定有更好的办法。 我曾经想过要把这些主机的密钥移到hiera或其他东西上,但是我还没有find一个不难看的解决scheme。
有没有人有一个很好的方法/模式,我可以在这里遵循?
我曾经想过要把这些主机的密钥移到hiera或其他东西上,但是我还没有find一个不难看的解决scheme。
有很多方法可以做到这一点。 我尝试保持我的类通用,与我所有的configuration数据hiera。 当我处理数据集合时,我尝试使用hiera散列,这样我就不必更改我的类或定义代码。
1: 使用hiera hash来存储一组密钥。
hiera_key_hash: key-1: name: cisco500 type: router key: xxx key-2: name: cisco100 type: switch key: xxx
2: 创build一个为每个键调用create_resource 的类 (它将调用define'键')。
class keys { create_resources( "key", hiera('hiera_key_hash') ) }
3: 创build一个定义来完成每个键的工作。
define key($name, $type, $key) { // code goes here }
注意:在某个阶段,您最终可能会在敏感信息中存储敏感信息。 你可能要考虑encryption一些你的hiera敏感值。
嗯…也许在hiera_array
,用hiera_array
收集数据,通过一个定义的types提供该数组到资源? 既然你需要主机名和密钥,你可能需要把它们都放在一个string中,然后split()
它split()
成定义的types,或者让数组有更复杂的东西(可能是散列)。
仍然很头疼pipe理和保持最新; 也许是一个脚本与一个节点列表连接,从中收集密钥,并生成hiera数据?