Hi, Thanks, solved!
Em seg, 24 de set de 2018 às 04:40, David Schmitt <[email protected]> escreveu: > Hi Rafael, > > on puppet versions prior to puppet6, you need to install the > puppet-resource_api gem to support the provider. You can use the > puppetlabs-resource_api <https://forge.puppet.com/puppetlabs/resource_api> > module for that. > > Cheers, David > > On Sun, Sep 23, 2018 at 3:19 AM Rafael Tomelin <[email protected]> > wrote: > >> Hi David Schmitt, >> >> I create de new module, class and provider with pdk the according this >> site puppet. My puppet is version 'puppet --version . 5.5.6'. >> >> But, the return error: *Could not autoload puppet/type/foo: no such file >> to load -- puppet/resource_api * >> >> >> *My type is:* >> >> *cat lib/puppet/type/foo.rb * >> >> require 'puppet/resource_api' >> >> >> Puppet::ResourceApi.register_type( >> >> name: 'foo', >> >> docs: <<-EOS, >> >> This type provides Puppet with the capabilities to manage ... >> >> EOS >> >> features: [], >> >> attributes: { >> >> ensure: { >> >> type: 'Enum[present, absent]', >> >> desc: 'Whether this resource should be present or absent on the >> target system.', >> >> default: 'present', >> >> }, >> >> name: { >> >> type: 'String', >> >> desc: 'The name of the resource you want to manage.', >> >> behaviour: :namevar, >> >> }, >> >> }, >> >> ) >> >> >> *My provider:* >> >> *cat lib/puppet/provider/foo/foo.rb * >> >> require 'puppet/resource_api/simple_provider' >> >> >> # Implementation for the foo type using the Resource API. >> >> class Puppet::Provider::Foo::Foo < Puppet::ResourceApi::SimpleProvider >> >> def get(_context) >> >> [ >> >> { >> >> name: 'foo', >> >> ensure: 'present', >> >> }, >> >> { >> >> name: 'bar', >> >> ensure: 'present', >> >> }, >> >> ] >> >> end >> >> >> def create(context, name, should) >> >> context.notice("Creating '#{name}' with #{should.inspect}") >> >> end >> >> >> def update(context, name, should) >> >> context.notice("Updating '#{name}' with #{should.inspect}") >> >> end >> >> >> def delete(context, name) >> >> context.notice("Deleting '#{name}'") >> >> end >> >> end >> >> >> *My init.pp* >> >> *class first_type {* >> >> foo{ 'my_type': >> >> ensure => present, >> >> } >> >> } >> >> >> What`s problem : *Could not autoload puppet/type/foo: no such file to >> load -- puppet/resource_api * >> >> The provider write the ruby, is possible create provider with python? If >> yes, is change ruby to python? >> >> >> >> Em sáb, 22 de set de 2018 às 05:29, David Schmitt < >> [email protected]> escreveu: >> >>> Hi Rafael, >>> >>> if you are just starting out with this, I'd highly recommend looking >>> into the Resource API. It makes the development of types much easier, is a >>> supported part of this week's puppet 6 release, and available as a separate >>> download for previous puppet versions. The PDK also has support for getting >>> you started with a ready to go skeleton using 'pdk new provider'. >>> >>> See https://puppet.com/docs/puppet/6.0/custom_resources.html for all >>> the details. >>> >>> Cheers, David >>> >>> On Fri, Sep 21, 2018 at 9:34 PM Rafael Tomelin <[email protected]> >>> wrote: >>> >>>> Hi guys, >>>> >>>> I am creating a type in custom provider, but I am not able to >>>> understand the following question. >>>> >>>> I created a basic type to understand the concept of things, as follows: >>>> Puppet::Type.newtype(:mydir) do >>>> @doc = "First custom type." >>>> >>>> ensurable do >>>> defaultvalues >>>> defaultto :present >>>> end >>>> >>>> newparam(:name, :namevar => true) do >>>> end >>>> >>>> newparam(:install_location) do >>>> end >>>> end >>>> >>>> >>>> After creating the provider, but does not recognize the same and >>>> displays the following error: >>>> Error: Could not find a suitable provider for mydir >>>> Notice: Applied catalog in 0.63 seconds >>>> >>>> Puppet::Type.type(:mydir).provide(:linux) do >>>> >>>> defaultfor :operatingsystem => :linux >>>> confine :operatingsystem => :linux >>>> >>>> commands :mkdir => "mkdir" >>>> commands :rm => "rm" >>>> >>>> def exists? >>>> Puppet.info("checking if is already deployed") >>>> deploy_dir = "#{resource[:install_location]}/#{resource[:name]}" >>>> >>>> File.directory?(deploy_dir) and Dir.entries(deploy_dir).size > 2 >>>> end >>>> >>>> def create >>>> Puppet.info("Deploying the appliction") >>>> deploy_dir = "#{resource[:install_location]}/#{resource[:name]}" >>>> >>>> mkdir('-p', deploy_dir) >>>> end >>>> >>>> def destroy >>>> Puppet.info("Removing the appliction") >>>> deploy_dir = "#{resource[:install_location]}/#{resource[:name]}" >>>> rm('-rf',deploy_dir) >>>> end >>>> end >>>> >>>> What I did not envisage is how Puppet identifies the provider to be >>>> used in the OS? >>>> -- >>>> >>>> Atenciosamente, >>>> >>>> Rafael Tomelin >>>> >>>> skype: rafael.tomelin >>>> >>>> E-mail: [email protected] >>>> >>>> RHCE - Red Hat Certified Engineer >>>> PPT-205 - Puppet Certified Professional 2017 >>>> Zabbix - ZABBIX Certified Specialist >>>> LPI3 >>>> ITIL v3 >>>> >>>> -- >>>> >>> You received this message because you are subscribed to the Google >>>> Groups "Puppet Users" 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-users/CAGEUqbCtgp2bo7CN8STqDxq5L4WZLCJXNT%2Buq7-qzpvVYaL3%2Bg%40mail.gmail.com >>>> <https://groups.google.com/d/msgid/puppet-users/CAGEUqbCtgp2bo7CN8STqDxq5L4WZLCJXNT%2Buq7-qzpvVYaL3%2Bg%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>> . >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> -- >>> Cheers, David >>> >>> https://twitter.com/dev_el_ops >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Puppet Users" 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-users/CALF7fHa5_QY%2BjKzW5tzw8YL4FVXSBzAvheHKp_i1VbhOLXXhhg%40mail.gmail.com >>> <https://groups.google.com/d/msgid/puppet-users/CALF7fHa5_QY%2BjKzW5tzw8YL4FVXSBzAvheHKp_i1VbhOLXXhhg%40mail.gmail.com?utm_medium=email&utm_source=footer> >>> . >> >> >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- >> >> Atenciosamente, >> >> Rafael Tomelin >> >> skype: rafael.tomelin >> >> E-mail: [email protected] >> >> RHCE - Red Hat Certified Engineer >> PPT-205 - Puppet Certified Professional 2017 >> Zabbix - ZABBIX Certified Specialist >> LPI3 >> ITIL v3 >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Puppet Users" 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-users/CAGEUqbB-PsmNt0hzjoJWARd7285O%2BgHwAeqqC4qNv_zH1dWLPA%40mail.gmail.com >> <https://groups.google.com/d/msgid/puppet-users/CAGEUqbB-PsmNt0hzjoJWARd7285O%2BgHwAeqqC4qNv_zH1dWLPA%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . > > >> For more options, visit https://groups.google.com/d/optout. >> > -- > Cheers, David > > https://twitter.com/dev_el_ops > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Users" 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-users/CALF7fHY-eyUzWRdTaojGU9jfFdV-5DuGLkMG4h_KoZCAw4WBRg%40mail.gmail.com > <https://groups.google.com/d/msgid/puppet-users/CALF7fHY-eyUzWRdTaojGU9jfFdV-5DuGLkMG4h_KoZCAw4WBRg%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- Atenciosamente, Rafael Tomelin skype: rafael.tomelin E-mail: [email protected] RHCE - Red Hat Certified Engineer PPT-205 - Puppet Certified Professional 2017 Zabbix - ZABBIX Certified Specialist LPI3 ITIL v3 -- You received this message because you are subscribed to the Google Groups "Puppet Users" 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-users/CAGEUqbBvPiYz_5ZTe2rANe-hPOAYNSdmi%3D1Euw5MX%2BV5Z6pcrA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
