Puppet
從 puppet 模組複製整個模板文件夾
我正在尋找在 puppet 模組中複製整個模板目錄的語法。(例如:模板/webconfig/file1.erb、模板/webconfig/config/file2.erb)
我試圖複製以下語法:
file {"$http_home_dir/webconfig": ensure => "directory", owner => "$http_user", group => "$http_group", content => template("webconfig"), recurse => true, require => File["$http_home_dir"]; }
它不起作用。當我也嘗試使用如下萬用字元時,它沒有用。
content => template("webconfig/*.erb"),
有什麼特別的我想念的嗎
您只能使用按
source
原樣複製文件的參數批量複製文件。複製多個模板的唯一方法是使用多個file
資源。縮短所需程式碼量的一種方法是使用
define
資源類型。例如,使用 Puppet 4 嚴格類型和 splat 運算符:define myclass::webconfig ( String $file_path, Hash $attributes, String $template_path, ) { file { $file_path: ensure => file, content => template("${template_path}/${name}.erb"), * => $attributes, } }
可以用作:
file { $http_home_dir: ensure => directory, owner => $http_user, group => $http_group, } myclass::webconfig { 'myfile': template_path => 'webconfig', file_path => "${http_home_dir}/webconfig", attributes => { owner => $http_user, group => $http_group, require => File[$http_home_dir], } }
這將放置一個包含
$http_dir/webconfig/myfile
模板內容的文件webconfig/myfile.erb
。您還可以傳遞文件名數組,如下所示:
$my_files = [ 'myfile', 'myotherfile', 'mythirdfile', 'foobarfozbaz' ] file { $http_home_dir: ensure => directory, owner => $http_user, group => $http_group, } myclass::webconfig { $my_files: template_path => 'webconfig', file_path => "${http_dir}/webconfig", attributes => { owner => $http_user, group => $http_group, require => File[$http_home_dir], } }