thanks for posting. After having a look inside the puppet code I used the
'--evaltrace true' option for another puppet agent run on the Windows vm
and I got a lot of messages regarding my custom type (evalutation). Finally
I have a proof that the communication regarding custom type content between
puppetmaster on Linux and puppet agent on Windows is working correctly.
Am Donnerstag, 14. November 2013 00:14:06 UTC+1 schrieb jcbollinger:
On Wednesday, November 13, 2013 9:58:53 AM UTC-6, Stefan Pommerening wrote:
I'm totally stuck with the following (cross-platform) problem:
- I use a custom type as exported resource which is being 'filled-in' on
and this type should be realized / created by some ruby provider on a
I don't see any inherent problem with that.
Puppet on Linux and Windows is always 2.7.19.
My first test environment is completely on Linux which works fine.
I have written two providers in ruby - one for Linux, one for Windows
(testing was done by using the architecture fact for the confine
statement and because
I have amd64 and i386 Linux servers I was able to test that this works
The second test environment is using the Windows server for a Puppet
My problem now is that the ruby provider on Windows is not working as
I do not get any error and I do not get any notification from a single
Now I wonder what could be the reason.
What are the main differences between Puppet on Linux and Puppet on
Anyone who can prove that custom types and providers are working on
I can't necessarily speak to the particular version of Puppet you are
using or to your particular custom components, but in a general sense,
custom types and providers do work on Windows under current Puppet. As I
recall, however, Windows support was still kinda raw back in the 2.7.x
series. But that doesn't mean it should completely flop.
At least now I can proof that the custom type content is transferred with
Puppet 2.7.19 as I mentionned above. ;-)
For me it seems that the resources which are stored in PuppetDB aren't
to the puppet agent on Windows. But I do not know how to check this.
Well, generally the *agent* doesn't talk to PuppetDB at all. It
certainly doesn't obtain exported resources from there (or even recognize
exported resources as such). Exporting and collecting resources are
activities performed by the master. Also, providers are not involved at
the export / collect level; they are chosen much later, after the compiled
catalog is delivered to the agent.
Yes, correct. My faulty explaination. Puppet agent talks to puppetmaster,
puppetmaster talks to PuppetDB, then Puppetmaster transfers the type
content (as read from puppetdb) to the puppet agent.
Even the puppet.log file does not show anything helpful. How do I get all
message written to the logfile on Windows? Are there different locations
for the logfile?
This seems to be a quite specific case, I did not find very much using
the documentation from PuppetLabs is not very comprehensive for this
Although you may be running into problems related to the Windows support
provided by your oldish version of Puppet, I don't think your case is as
special as you suppose. Resource collection specifically and catalog
compilation generally really oughtn't to be any different when the client
is Windows than when it is Linux. All that happens on the same master,
anyway. Of course your manifests can distinguish based on node facts, but
that's a whole different kettle of fish.
I would focus first on verifying that your custom type and its Windows
provider in fact work on Windows. That's anyway where your problem is
likely to lie. Check that the custom components are in fact synced to the
Windows agent, and test them via ordinary resources rather than exported /
collected ones. I'm afraid I have to leave it at generalities, however.
Others can give you better advice about specifics of Puppet on Windows.
Exactly this is where I am stuck now. Now I know that the custom type and
content is transferred. Unfortunately I do not get any error message from
the puppet agent on Windows. I guess my problem is somewhere in the ruby
code because this is the first time I am using this language.
For understanding the meaning of 'defaultfor' and 'confine' I did some
testing in a pure Linux environment and when I did not use a suitable fact
in the 'confine' statement I got the error message from the agent that
there is no suitable type provider available. If used correctly I could see
my debug messages.
But I do not see any messages on Windows, neither an error message nor any
debug message is written to my logfile (usually written by the provider
ruby code itself).
Currently I am using:
confine :osfamily => :windows
(and no 'defaultfor')
Could this be the problem somehow?
Thanks and kind regards