Issue #12418 has been updated by John Bollinger.
Daniel Pittman wrote: > However, I would love to just drop the ability to ship a symlink as a symlink > from a module on the server. That is just ... odd. Symlinking things in for > the convenience of the master? Sure. Sending a symlink to the client > because it was a symlink on the master? That is just an invitation to pain. You send a symlink to the client because you want a symlink on the client. You *represent that desire to the master* by putting a symlink on the master and setting links => 'manage'. That makes a lot of sense to me, and it's comparable to the switchable symlink treatment of common utilities, such as tar. GNU tar, in fact, defaults to NOT dereferencing symlinks. Nigel Kersten wrote: > To simply deliver the app as a recursive file copy, you need the symlinks to > be copied as is, as the target doesn’t actually exist on the master itself, > but only on the clients. Nigel's use case highlights a perspective that Daniel may be missing: symlinks are independent entities, not merely filesystem aliases. In particular, they don't need to point to actual files. ---------------------------------------- Bug #12418: links => follow can't replace existing symlinks in the destination directory https://projects.puppetlabs.com/issues/12418#change-55086 Author: Nick Fagerlund Status: Needs Decision Priority: Normal Assignee: Daniel Pittman Category: file Target version: Affected Puppet version: Keywords: Branch: When serving a directory recursively, setting the `links` attribute to `follow` is supposed to dereference symlinks in the source and serve their targets to the destination as normal files. However, it can't replace existing symlinks in the destination directory, so it's not idempotent. Assume that `$modulepath/fistfuloflinks/files/links` is a directory containing directories that contain symlinks. ### Step 1 Apply the following resource: file {'/tmp/fistfuloflinks': ensure => directory, source => "puppet:///modules/fistfuloflinks/links", recurse => true, links => follow, force => true, } As expected, the directories it creates contain normal files. ### Step 2: Change the value of "links" to "manage," then apply the modified resource. As expected, the directories now mimic the source directories -- instead of normal files, they have symlinks. ### Step 3: Change "links" back to "follow" and apply again. Whoops: they stay symlinks instead of turning back to normal files. You can only get back to the results of step 1 if you delete the files out of band before applying the resource. Tested in puppet 2.7.6. Of course, it only now occurs to me that probably no one is actually using this feature, since putting symlinks inside a module is kind of brittle and deranged. -- You have received this notification because you have either subscribed to it, or are involved in it. To change your notification preferences, please click here: http://projects.puppetlabs.com/my/account -- You received this message because you are subscribed to the Google Groups "Puppet Bugs" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/puppet-bugs?hl=en.
