2013-10-25 112 views
3

如何使用puppet來更改文件的權限並沒有一致的名稱?傀儡 - 變量文件變更權限

我的任務是管理已追加到它的結束,像這樣的日期二進制:

lrwxrwxrwx 1 root root  18 Oct 25 18:46 apbridge -> ./apbridge20131025 
lrwxrwxrwx 1 root root  18 Oct 25 18:46 apbridge1025 -> ./apbridge20131025 
-rwxr-xr-x 1 root root  2914 Oct 25 18:46 apbridge20131025 

apbridge20131025有錯誤的權限。通常情況下,以下要改變它:

file {'/root/alpsSim/alps_simulator_r7537/tester/apbridge20131025': 
    owner => 'root', 
    group => 'root', 
    ensure => file, 
    mode => '0755', 
    } 

但是,因爲我無法預測什麼數字apbridge將結束,這將是非常有可能打破。

我無法控制apbridgexxxxx的名稱,因爲它是由第三方腳本安裝的。最後的數字代表安裝的日期。

有沒有在puppet文件資源聲明中使用通配符的方法?

回答

3

我建議你使用EXEC的:

exec { 'apbridge': 
    command => 'find /root/alpsSim/alps_simulator_r7537/tester/ -maxdepth 1 -type f -iname "apbridge*" -exec chmod 755 {} \;', 
    path => '/bin:/sbin:/usr/bin:/usr/sbin', 
} 
1

通常我會建議不要在木偶一般使用exec,但在這種情況下,chmod是冪等 - 但你運行它,你會得到相同的結果。 Puppet還沒有爲每個嘗試更改權限的文件計算md5哈希值的好處。

這就是說,一個更優雅的方式,以確保權限將它們設置在包含文件遞歸目錄 - 假設只有apbridge*文件存在。

file {'/root/alpsSim/alps_simulator_r7537/tester': 
    owner => 'root', 
    group => 'root', 
    ensure => directory, 
    recurse => true, 
    mode => '0755', 
}