使用 Puppet 将文件部署到所有用户的主目录

使用 Puppet 将文件部署到所有用户的主目录

我想使用 Puppet 将一个简单的文本文件(git 提交消息模板)部署到每个用户的主目录。

我碰到这个帖子看起来非常接近,但我不清楚的部分是如何为每个节点生成用户列表?

在这篇文章中,他们对用户进行了如下硬编码:

 applink::desktoplinks { [ "user1", "user2", "user3" ]: }

我无法对列表进行硬编码,因为这些是开发机器,并且可能有特定于每个节点的各种不同用户。

看着这个帖子,我想我需要使用虚拟资源,但作为一个完全的新手,仅通过阅读文档和提供的示例,我似乎无法弄清楚。

有人可以给我指出一个快速示例或食谱来说明如何做到这一点吗?

答案1

要生成用户列表,您需要创建一个新的事实. 任何来自将要配置的主机需要是事实。

例如,以下事实返回整个/etc/passwd

# etcpasswd.rb

Facter.add("etcpasswd") do
        setcode do
                File.read('/etc/passwd')
        end
end

您可以将这个事实放在lib/facter模块的子目录中,或者放在plugins/facterPuppet 的基本目录中。我认为您也需要pluginsync = truepuppet.conf但这可能仅适用于较旧的 Puppet 版本。

您可以在我的网站上看到此示例puppet 用户模块

答案2

我对 Puppet 还比较陌生,所以我不确定这是否可行,但我认为不可行。

您是否考虑过简单地将模板和脚本复制到每个框上的单个位置。然后设置一个exec资源,以便每当 git 模板更新时,它都会运行该脚本。该脚本将循环/home将文件复制到适当的位置。

相关内容