We can define our own Puppet Resource Type. Here is an simple example which will takes create new folders from a existing folder.
class eureka::ykyuen ($new_folder) { define copy_folder { file { "/home/ykyuen/$name": source => "/home/ykyuen/src_folder", recurse => "true", group => "ykyuen", owner => "ykyuen", ensure => directory, replace => "false", # Create new folder only if it doesn't exist } } copy_folder { ["new_folder_1", "new_folder_2"]: } }
Please note that the $name parameters is a synonym of $title. After the Puppet apply, you could find the 2 new folders with name new_folder_1 and new_folder_2.
Done =)
Reference: Learning Puppet — Defined Types