2017-04-14 56 views
3

如果我想將文件添加到木偶的特定目錄我可以使用:Puppet:爲所有用戶添加文件?

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。與周圍的代碼塊

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

相關問題