I would use the value of the $title variable to ensure both that you can refer to the new_type resource and that it will have a unique title each time the defined type is called, to find out more check out this page, it has everything you need to know about writing a defined type:
http://docs.puppetlabs.com/learning/definedtypes.html#title-and-name In terms of where this would go in your manifests: As long as your defined type is sitting in a file that follows the namespacing rules it will be accessible just like any other resource type: https://docs.puppetlabs.com/puppet/latest/reference/lang_namespaces.html On Sat, Jun 20, 2015 at 12:02 AM, Ganesh Nalawade <[email protected]> wrote: > Thanks Dylan. > This approach looks good as and users don't have to add file resource > explicitly. >>define new_type::something ( >> $file_path, >>) { >> file { $file_path: >> ensure => file, >> notify => New_type['another_resource'], ------->*'another_resource' > must be a variable as it is title of new_type resource. How can i pass > title of new_type as parameter?* >> } >> new_type { 'another_resource': >> parameter1 => $file_path, >> } >>} > I am confused where to place new defined type manifest file. > The new_type (netdev_group) can be referred here: > https://github.com/ganeshnalawade/puppet-netdev-stdlib-junos/tree/master/lib/puppet/type > On Fri, Jun 19, 2015 at 7:30 AM, Dylan Ratcliffe < > [email protected]> wrote: >> That's close, >> >> You don't need to set ensure on a defined type unless you have exposed >> that as a paremeter, and you do need to set ensure for that file. >> >> Going back to the original issue of accessing the parameter of one >> resource from another, i'll give a little example of how I envision it: >> >> define new_type::something ( >> $file_path, >> ) { >> file { $file_path: >> ensure => file, >> notify => New_type['another_resource'], >> } >> >> new_type { 'another_resource': >> parameter1 => $file_path, >> } >> } >> >> In this case the new_type resource can have access to a parameter in the >> "file" resource because it was passed in as a parameter and as a result is >> a variable that we can use. If we wanted to actually use this type we would >> do so like this: >> >> new_type::something { 'any_title': >> file_path => '/foo/bar.html', >> } >> >> Does this make sense? >> >> On Thursday, 18 June 2015 15:14:17 UTC+10, ganesh634 wrote: >>> >>> @Reid: Agreed it make sense to reference another resource instead of path >>> string. >>> The links you shared are very helpful. Thanks!!! >>> >>> @Dylan: While going through defined types i came across vhost here: >>> >>> https://github.com/puppetlabs/puppetlabs-apache/blob/master/manifests/vhost.pp >>> >>> I am not very clear how can i use it in my case. >>> If a new defined type is used say new_type::load as below will it work? >>> # /etc/puppetlabs/puppet/modules/new_type/manifests/load.pp >>> define new_type::load ($path, $template_path){ >>> include new_type file { $path: >>> content => template($template_path), >>> notify => new_type[ ? ], ---------> *how to pass 'sample' here? * } } >>> >>> #/etc/puppetlabs/puppet/manifest/site.pp >>> node 'node_name' { >>> $names = [ "abc", "xyz" ] >>> new_type::load {'sample': path => '/var/tmp/test.txt' template_path => >>> 'new_type/test_template.erb', >>> ensure => present } >>> } >>> >>> #/etc/puppetlabs/puppet/modules/new_type/templates/test_template.erb >>> <% @names.each do |name| %> Hi <%= name %>!!! <% end %> ~ >>> >>> On client run >>> #cat /var/tmp/test.txt >>> Hi abc!!! >>> Hi xyz!!! >>> >>> new_type resource 'sample' should be notified every time contents of >>> test.txt is modified. >>> >>> On Thu, Jun 18, 2015 at 3:48 AM, Dylan Ratcliffe < >>> [email protected]> wrote: >>> >>>> Assuming that the "file" and the "new_type" resource will always be >>>> together I would wrap them in a defined type and expose everything you need >>>> as parameters. That way both can have access to it without any hacky stuff. >>>> >>>> I'm not sure of your level of Puppet knowledge so if that makes no sense >>>> let me know and I will explain. >>>> >>>> >>>> >>>> On Thursday, 18 June 2015 02:16:11 UTC+10, Michael Smith wrote: >>>>> >>>>> There's probably a way to do that, but I don't think it's a good idea. >>>>> >>>>> In order to look at the 'path' attribute of the 'file' resource, you'd >>>>> need to specify which 'file' resource your new_type relates to. That means >>>>> new_type would have a property with the value File['interface'], which >>>>> isn't much different than having the 'path' property. Unless your type is >>>>> specifically operating on the File resource abstraction, rather than the >>>>> physical file itself, using 'path' seems to make more sense. >>>>> >>>>> Overloading the notify/require relationship to make that association >>>>> would be a bad idea - they're 1-to-many and many-to-1 relationships - and >>>>> probably complicated to make work. >>>>> >>>>> On Wed, Jun 17, 2015 at 7:38 AM, ganesh634 <[email protected]> wrote: >>>>> >>>>>> Pasted below an example relation for new resource say 'new_type'. >>>>>> >>>>>> >>>>>> >>>>>> file >>>>>> >>>>>> { "interface": >>>>>> >>>>>> path => "/var/tmp/test.txt", >>>>>> >>>>>> content => template("module/test_template.erb"), >>>>>> >>>>>> notify => new_type['sample'], >>>>>> >>>>>> } >>>>>> >>>>>> new_type >>>>>> >>>>>> { "sample": >>>>>> >>>>>> path => "/var/tmp/test.txt", >>>>>> >>>>>> active =>true, >>>>>> >>>>>> ensure=>present, >>>>>> >>>>>> } >>>>>> >>>>>> >>>>>> >>>>>> In 'new_type' resource implementation I want to access value of 'path' >>>>>> attribute value from 'file' resource to determine certain action in >>>>>> 'new_type' resource. >>>>>> >>>>>> With current approach I have to keep ‘path’ attribute in ‘new_type’ >>>>>> and mandate user to have ‘path’ value same as that of ‘path’ value in >>>>>> file resource. >>>>>> >>>>>> >>>>>> >>>>>> How can I access 'file’ resource 'path' attribute value in 'new_type' >>>>>> resource implementation? >>>>>> If it is possible I can remove the 'path' attribute from 'new_type' >>>>>> resource body as value of both path need to be same all the time. >>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "Puppet Developers" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>>> an email to [email protected]. >>>>>> To view this discussion on the web visit >>>>>> https://groups.google.com/d/msgid/puppet-dev/004da5f1-be9f-4352-a1f8-b43f34c2d859%40googlegroups.com >>>>>> <https://groups.google.com/d/msgid/puppet-dev/004da5f1-be9f-4352-a1f8-b43f34c2d859%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>> . >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Michael Smith >>>>> Sr. Software Engineer, Puppet Labs >>>>> >>>>> *PuppetConf 2015 <http://2015.puppetconf.com/> is coming to Portland, >>>>> Oregon! Join us October 5-9.* >>>>> *Register now to take advantage of the Early Adopter discount >>>>> <https://www.eventbrite.com/e/puppetconf-2015-october-5-9-tickets-13115894995?discount=EarlyAdopter> >>>>> * >>>>> *—**save $349!* >>>>> >>>> -- >>>> You received this message because you are subscribed to a topic in the >>>> Google Groups "Puppet Developers" group. >>>> To unsubscribe from this topic, visit >>>> https://groups.google.com/d/topic/puppet-dev/oBrN1RToyUI/unsubscribe. >>>> >>>> To unsubscribe from this group and all its topics, send an email to >>>> [email protected]. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/puppet-dev/fb4e828e-0284-416d-8714-3b9314b47277%40googlegroups.com >>>> <https://groups.google.com/d/msgid/puppet-dev/fb4e828e-0284-416d-8714-3b9314b47277%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "Puppet Developers" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/puppet-dev/oBrN1RToyUI/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/puppet-dev/ceb93c4a-9b41-47dc-bb84-3f8daa499085%40googlegroups.com >> <https://groups.google.com/d/msgid/puppet-dev/ceb93c4a-9b41-47dc-bb84-3f8daa499085%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> For more options, visit https://groups.google.com/d/optout. >> > -- > You received this message because you are subscribed to a topic in the Google > Groups "Puppet Developers" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/puppet-dev/oBrN1RToyUI/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/puppet-dev/CA%2B6y2sFZKvGrtwDnKFijhjWRntjs4pSmrFsr87vNaZ39h_QiFA%40mail.gmail.com. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-dev/1434790261626.a03a8a9e%40Nodemailer. For more options, visit https://groups.google.com/d/optout.
