我需要创建一堆ssh_authorized_keys
资源。资源期望它的key
属性是公钥本身——没有办法引用文件包含密钥。
因为密钥很长,而且我已经将它们保存在文件中,所以我宁愿让 Puppet 从文件中读取它们,而不是在清单中引用它们。
我还可以想象一些其他用例。
是否已有一个函数可以读取指定的文件逐字,而不试图像那样解释它们template()
?
对于公钥,我实际上可以侥幸逃脱template()
,但这会带来解析尝试的开销。此外,在其他一些情况下,根据文件的内容,解析实际上可能会“失败”,或者更糟的是,不会失败,但会悄悄地更改内容……
答案1
是否已有一个函数可以逐字读取指定文件,而无需像 template() 那样尝试解释它们?
该file()
函数将读取并返回 Puppet master(或目录编译的任何位置)上的文件内容,类似于template()
您描述的那样。
使用路径调用它,例如在模块路径中ssh_keys/foo.key
加载文件。ssh_keys/files/foo.key
请注意,此功能需要 Puppet 3.7 或更高版本才能以与 相同的方式从 modulepath 加载template()
。在此之前,它仅适用于绝对路径,尽管在每个主要版本中都有。
答案2
使用资源类型file
具有定义的属性source
。我的 puppet 环境用于管理 ssh 密钥,实际上只是将 ~/.ssh/authorized_keys 文件作为文件导入。