如何配置和使用 Puppet filebucket?
我想:
- 在单个服务器上存储文件存储桶数据
- 能够在必要时审核/解析/修剪文件存储桶
- 确保文件桶数据在客户端->主服务器之间安全传输
答案1
好吧,在我的所有节点都包含的类中,我得到了:
filebucket { puppet: server => "puppet.example.edu" }
File type 中默认备份到名为“puppet”的本地文件桶。通过将“puppet”文件桶更改为服务器文件桶,您将默认获得基于服务器的文件桶。
或者,如果您想保留覆盖一个特定文件以使用本地文件存储桶的选项,您可以执行以下操作:
filebucket { main: server => "puppet.example.edu"; }
File { backup => main }
看https://puppet.com/docs/puppet/latest/types/filebucket.html了解有关选项的更多详细信息。
这实现了第 1 项,因为它告诉所有节点都使用同一个服务器来存储文件桶。第 3 项是免费的,因为它仍然通过基于 SSL 的连接进行,并进行 SSL 证书验证。
Filebucket 最有用的情况是恢复,恢复很可能是同一天。在这种情况下,查看报告并使用“ filebucket
”或“ puppet filebucket
”命令根据报告中的 md5sum 检索原始内容。
第 2 项是事情变得棘手的地方......
我使用这样的脚本来修剪它:
find /var/lib/puppet/clientbucket/ -type f -mtime +45 -atime +45 -delete
这会删除超过 45 天且在此期间完全没有被访问过的所有数据。45 天是基于我们的备份和备份保留策略,因为这段时间足够进行长期保留的备份,并且理论上我们有 18 个月的恢复时间。
您要寻找哪种解析?服务器上的存储桶设置是按 md5sum 组织的层次结构,在与 md5sum 匹配的目录名称内,有“路径”告诉您哪个文件和“内容”是实际文件。您需要查看报告看看它来自哪个系统。
我不做任何审计。您要找哪种审计?这可能意味着很多事情。
答案2
一个建议是将文件添加到修订控制服务器 (svn、git)。我将与特定模块相关的所有文件存储在 /files 下的模块目录中。当文件被修改时,它会被签入 SVN 并通过钩子推送到主服务器。
例如,我有一个模块管理 postfix 并将 /etc/postfix/virtual 文件推送到客户端。该文件存储在 /etc/puppet/modules/postfix/files 下。
这使您可以重复使用在模块中创建的代码以及按模块组织文件。