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.

Reply via email to