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

时间:2017-04-14 20:30:22

标签: puppet

如果我想用Puppet将文件添加到特定目录,我可以使用:

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

有没有办法可以将文件添加到每个用户的主目录中?

类似的东西:

For i=1 to 100
    If Cells (i, 3) = "All values USD Millions." Then

        Rows (i).Delete

    EndIf
Next

1 个答案:

答案 0 :(得分:2)

只要这是* nix,那么您可以添加自定义事实来组装系统上的主目录。我建议在模块的homedirs.rb目录中创建它时命名为lib/facter/

# 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安装此功能,可以添加:

unless Facter.value(:kernel) == 'Windows'

围绕代码块,或者使用以下代码将其保存到Linux:

confine kernel: linux

高于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