Puppet:为所有用户添加文件?
问题描述:
如果我想将文件添加到木偶的特定目录我可以使用:Puppet:为所有用户添加文件?
file { "/folder/file_name":
ensure => present,
source => [puppet///file_name],
}
有没有一种方法,我可以添加文件到每个用户的主目录?
喜欢的东西:
file { "/home/$USER/filename":
ensure => present,
source => [puppet///filename],
}
答
只要这是* nix中,那么你可以添加自定义的事实组装系统上的主目录。当您在模块的lib/facter/
目录中创建它时,我建议将它命名为homedirs.rb
。与周围的代码块
unless Facter.value(:kernel) == 'Windows'
,或者保留它只是Linux的:
confine kernel: linux
上述
# collect home directories
Facter.add(:homedirs) do
setcode do
# grab home directories on system and convert into array
`ls /home`.split("\n")
end
end
如果你想这个对所有非Windows您可以添加setcode
。
然后,您可以使用lambda来遍历这个事实数组并应用文件资源。
# iterate through homedirs in fact array
$facts['homedirs'].each |$homedir| {
# copy file to home directory
file { "/home/$homedir/filename":
ensure => file,
source => puppet:///filename,
}
}
我还在那里修复了一些与您的file
资源有关的问题。
的情况下,任何这方面的一些有用的文档链接是混乱:
https://docs.puppet.com/puppet/latest/type.html#file https://docs.puppet.com/facter/3.6/custom_facts.html#adding-custom-facts-to-facter https://docs.puppet.com/puppet/4.9/function.html#each
是的,但你必须决定是否在该服务器上的用户,应的时间是已知或未知配置应用。它会是什么? –
@MattSchuchard你的意思是我是否知道用户名是什么?如果是这样,我不会提前知道这个名字。 –