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.

Reply via email to