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

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

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

在post中,他们像这样硬编码用户:

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

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

看着这篇文章 ,我想我需要使用虚拟资源,但作为一个新手,只需阅读文档和提供的样本,我似乎不太可能弄明白。

有人能指点我一个快速的样本或食谱的地方,说明如何做到这一点?

要生成一个用户列表,您需要创build一个新的事实 。 来自将被configuration的主机的任何信息都需要成为事实。

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

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

你把这个事实放在模块的lib/facter子目录下,或者在Puppet的基本目录下的plugins/facter下。 我想你也需要在puppet.conf pluginsync = true ,但是这可能只适用于较旧的Puppet版本。

你可以在我的木偶用户模块上看到这个例子。

我对傀儡是新生的,所以我不确定这是否可能,但我不怀疑。

你有没有考虑过简单地发送一个复制你的模板,脚本到每个盒子上的一个位置。 然后设置一个exec资源,以便每当git模板更新时,它将运行该脚本。 该脚本将循环/home复制文件到适当的位置。