2017-04-14 18 views
3

私は使用することができます人形を持つ特定のディレクトリにファイルを追加する場合:パペット:すべてのユーザーのファイルを追加しますか?

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

私は、各ユーザのホームディレクトリにファイルを追加することができます方法はありますか?以下のような

何か:

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

ていますが、そのサーバー上のユーザーがの時に既知または未知する必要があるかどうかを決定する必要があります。

場合、このいずれかでいくつかの有用なドキュメントへのリンクは紛らわしいです構成アプリケーション。それはどれでしょうか? –

+0

@MattSchuchardあなたはユーザー名が何であるかを知っているかどうかを意味しますか?もしそうなら、私は前もってその名前を知らないだろう。 –

答えて

2

限り、これは* nixのであるとして、あなたは、システム上のホームディレクトリを組み立てるためにカスタム事実を追加することができます。モジュールのlib/facter/ディレクトリ内に作成するときは、homedirs.rbという名前を付けることをお勧めします。

# 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

次に、ラムダを使用してこのファクト配列を反復処理し、ファイルリソースを適用できます。

# 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

関連する問題