On Jun 26, 2010, at 12:32 AM, Thomas Bellman wrote: > Jean-Baptiste Barth wrote: > >> I'd like to be able to deploy a skeleton directory through puppet, i.e. >> puppet deploys it only if it does not exist. > [...] >> But I have 2 problems for the moment : >> - if I don't set owner/group, it takes uid/gid on the puppetmaster, which >> does not exist on the node ; if I do set these options, the directory is >> scanned each time and all files are chown'ed to this user/group, which is >> absolutely not desired behaviour in my case (puppet should not change >> ownership for files it doesn't manage in my case...) >> - I'd like puppet to let user change some files in the skeleton as they >> want, i.e. skip this directory if it just exists > > The second problem you can solve by using the 'replace => false' > parameter to the file type. However, if the user *removes* one > of the files in the skeleton directory, then Puppet will download > it again, so maybe it isn't quite enough. > > And even with 'replace => false', Puppet will manage ownerships > and modes of all files. > > One solution is to develop a custom fact that gets set to true > if the target directory already exists, and not set if it doesn't. > Then you can do > > if $dir_opt_foo_data_exists != "true" { > file { > "/opt/foo/data": source => ..., recurse => true, ...; > } > } > > This doesn't scale very well to many directories, though, as you > need one custom fact for each such directory. Another way is to > do it with an exec: > > exec { > opt-foo-data: > command => "wget -r http://.../ && chown -R auser:agroup data", > cwd => "/opt/foo", path => "/bin:/usr/bin", > creates => "/opt/foo"; > } > > Note the use of the parameter 'creates => "/opt/foo"', which will > make Puppet only run the command if /opt/foo doesn't already exist. > > The disadvantage is that you need to configure and run a web server > (or ftp server) somewhere as well.
I usually do it this way (using wget and tar), but you could push the directory somewhere else using puppet and put "cp -a" in the exec. -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-us...@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.