Issue #8847 has been updated by Sam Cannell.
Hi James, Creating a dangling symlink on the client works fine, but that's not what I'm trying to do here. The issue I'm having is that the symlink will not be created on the client if the link's target does not exist on the puppet *master* - i.e., in the example above if '/etc/file' does not exist on the master. Here's a real-world example -- let's say you're trying to push out an /etc/apache/ directory to a web server. The directory contains symlinks - for instance, '/etc/apache/sites-enabled/000-default' is a symlink to '/etc/apache/sites-available/default'. If apache is not installed on the puppet *master*, and thus /etc/apache/sites-available/default does not exist, then creation of the symlink on the puppet client will fail. ---------------------------------------- Bug #8847: Symlinks in directories copied in a recursive 'file' resource will not be copied if they don't resolve on the puppet master https://projects.puppetlabs.com/issues/8847 Author: Sam Cannell Status: Needs More Information Priority: Normal Assignee: Sam Cannell Category: file Target version: Affected Puppet version: 2.6.2 Keywords: Branch: Consider the following puppet module: puppetmaster:/etc/puppet # find modules/symlinktest/ modules/symlinktest/ modules/symlinktest/files modules/symlinktest/files/tmp modules/symlinktest/files/tmp/symlinktest modules/symlinktest/files/tmp/symlinktest/symlink modules/symlinktest/manifests modules/symlinktest/manifests/init.pp puppetmaster:/etc/puppet # cat modules/symlinktest/manifests/init.pp class symlinktest { file { "/tmp/symlinktest": source => "puppet://${servername}/modules/${module_name}/tmp/symlinktest", recurse => true, } } 'symlink' in the symlinktest directory is a symbolic link pointing to a file outside the directory being copied: puppetmaster:/etc/puppet # ls -l modules/symlinktest/files/tmp/symlinktest/symlink lrwxrwxrwx 1 root puppet 9 2011-08-09 17:00 modules/symlinktest/files/tmp/symlinktest/symlink -> /etc/file The file referenced by the symbolic link does not exist on the puppet master: puppetmaster:/etc/puppet # ls -l /etc/file ls: cannot access /etc/file: No such file or directory Trying to run this module on a client will fail trying to create 'symlink': client:~ # puppetd -tv info: Caching catalog for puppetmaster.domain info: Applying configuration version '1312866094' notice: /Stage[main]/Symlinktest/File[/tmp/symlinktest]/ensure: created err: /File[/tmp/symlinktest/symlink]: Could not evaluate: Could not retrieve information from source(s) puppet://puppetmaster.domain/modules/symlinktest/tmp/symlinktest/symlink notice: Finished catalog run in 10.50 seconds If I create the file on the puppet master (once again, note that this file is outside the /etc/puppet tree) the module runs fine: puppetmaster:/etc/puppet # touch /etc/file client:~ # puppetd -tv info: Caching catalog for puppetmaster.domain info: Applying configuration version '1312866094' notice: /Stage[main]/Symlinktest/File[/tmp/symlinktest]/ensure: created notice: /File[/tmp/symlinktest/symlink]/ensure: created notice: Finished catalog run in 10.51 seconds client:~ # ls -l /tmp/symlinktest/ total 0 lrwxrwxrwx 1 root puppet 9 2011-08-09 17:06 symlink -> /etc/file This issue occurs whether the class is contained within a module or the base manifests. It appears to affect puppet 2.6.2 but *not* 0.25.4. -- 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.
