自定义事实,将所有 Puppet 客户端的 bar 文件复制到主 Puppet 服务器

自定义事实,将所有 Puppet 客户端的 bar 文件复制到主 Puppet 服务器

我知道 Facter 并非旨在执行此操作,但我很高兴知道如何编写自定义事实以将文件从 Puppet 客户端复制到主 Puppet 服务器。谢谢。

答案1

复印文件作为事实? 你为什么要这么做?你可以简单地将Exec文件移到其他地方scpftp

如果需要检查某个文件的内容是否属实,请看以下示例:

# etcgroup.rb

Facter.add("etcgroup") do
        setcode do
                File.read('/etc/group')
        end
end

然后,您可以使用正则表达式函数从其中提取信息。请注意,这是作为 GET 请求的 URL 的一部分发送的,通常字符数有限制。我LimitRequestLine 30000之所以这样做apache2.conf,就是因为这个原因。

如果你确实需要复制该文件,你可以执行以下操作:

# etcgroup.rb

Facter.add("etcgroup") do
        setcode do
                %{ scp -i /path/to/identity /etc/group user@puppet:/path && echo ok || echo not ok}.chomp
        end
end

它将通过 发送文件scp,使用身份来避免传递密码,然后返回oknot ok作为事实。

答案2

我认为更好的方法是使用远程文件存储桶进行审计(我相信您需要 2.6.5+ 版本)。

就像是:

filebucket { "server":
  server => "your.puppet.server";
}

file { "/etc/group":
  audit  => content;
  backup => server;
}

这会导致 /etc/group 在 (a) 发生变化或 (b) 之前未曾见过时上传到服务器。然后,您可以在服务器上使用“puppet filebucket”实用程序检查客户端发送的数据。这比将其放在事实中要好得多。

相关内容