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. For more options, visit https://groups.google.com/d/optout.
