Puppet:为所有用户添加文件?

问题描述:

如果我想将文件添加到木偶的特定目录我可以使用:Puppet:为所有用户添加文件?

file { "/folder/file_name": 
    ensure => present, 
    source => [puppet///file_name], 
} 

有没有一种方法,我可以添加文件到每个用户的主目录?

喜欢的东西:

file { "/home/$USER/filename": 
    ensure => present, 
    source => [puppet///filename], 
} 
+0

是的,但你必须决定是否在该服务器上的用户,应的时间是已知或未知配置应用。它会是什么? –

+0

@MattSchuchard你的意思是我是否知道用户名是什么?如果是这样,我不会提前知道这个名字。 –

只要这是* 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