Issue #4885 has been updated by Nigel Kersten.
Daniel Pittman wrote: > Of the options, this seems like the best "magic" choice. Allowing anything > that looks like a URI to behave like a URI, and a relative path to be treated > as "inside the module" seems sensible. I disagree. :) I think this is an inconsistent mental model for what's going on. <pre> source => '/absolute/path/to/local/file/on/agent', </pre> <pre> source => 'relative/path/to/file/on/master', </pre> That feels quite horrible to me, and significantly worse than the use of "~" to represent the module on the server. As Eric has hinted at, the problem with forcing everyone towards the file() and template() functions means that you're shipping the whole content of the file every single time to the agent, simply because it ends up *in* the catalog. In some cases this may result in less load, simply because you're doing fewer (but *much* larger) connections vs a gazillion file_metadata requests, but we can do better than that. ---------------------------------------- Feature #4885: Simplify the syntax for specifying file paths in modules using a '~' https://projects.puppetlabs.com/issues/4885#change-55352 Author: Nigel Kersten Status: Needs Decision Priority: Normal Assignee: Category: Target version: Telly Affected Puppet version: Keywords: Branch: There is too much redundant info in puppet file source specifications in modules. <pre> file { "ugly": source => "puppet:///modules/foo/bar", } </pre> Additionally, we're inconsistent with our template() and file() functions. template() takes either a path relative to the modulepath, dereferencing to "templates" sub-directories of the module or an absolute path. file() takes an absolute path only. I suggest (after a flash of inspiration from Patrick on the mailing list) we use the '~' syntax in a standard unix-y way to refer to module locations as follows. Each class mentioned below corresponds to a module. File source: Reference: $modulepath/modules/foo/files/bar <pre> class foo { file { "booyah": source => "~/bar", } } class notfoo { file { "booyah2": source => "~foo/bar", } } </pre> Template function: Reference: $modulepath/modules/foo/templates/bar.erb <pre> class foo { file { "booyah": content => template("~/bar.erb"), } } class notfoo { file { "booyah2": content => template("~foo/bar.erb"), } } </pre> File function: Reference: $modulepath/modules/foo/files/bar <pre> class foo { file { "booyah": content => file("~/bar"), } } class notfoo { file { "booyah2": content => file("~foo/bar"), } } </pre> I believe we should be able to make this change without breaking any of the existing behavior. I do believe we should aim to deprecate the old template function, but that can be a separate discussion. I haven't actually spent time ensuring this is possible. This is just what I would like to see. Mailing list thread references so we don't re-hash the same questions over again unless needed: http://groups.google.com/group/puppet-dev/browse_frm/thread/688050b8f0668ff2 http://groups.google.com/group/puppet-users/browse_frm/thread/688050b8f0668ff2 (was cross-posted, which never works out well. ) -- 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.
