Issue #4885 has been updated by Justin Stoller.
Forgive my ignorance if this wouldn't be a backwards compatible change or the
parser doesn't have this information available to it, but could we simply drop
the `puppet://server/modules/$module_name/` and consider relative paths
relative to the module's file directory?
Then you could prepend `puppet://server/` if you needed to specify a different
file server? Perhaps `modules/$module_name/` if you needed a file outside of
the current module` and `puppet://server/modules/$module_name/` if you need
files from a different module on a different file server? ...but I don't think
either of those are recommended.
It seems like relative paths from the current module's file directory would
make the best practice the easiest thing to do.
ps.
If context switching is important between templates and files you could make
them relative to the module's root directory (`source => 'files/my-file.rb', or
content => template('templates/my-template.erb'`) but it doesn't seem like too
hard of distinction for new users to make.
----------------------------------------
Feature #4885: Simplify the syntax for specifying file paths in modules using a
'~'
https://projects.puppetlabs.com/issues/4885
Author: Nigel Kersten
Status: Accepted
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.