Ask Your Question
0

PE 3.3: Why are custom resource types not synced to agents?

asked 2014-09-04 09:33:41 -0500

claes gravatar image

updated 2014-09-04 13:31:42 -0500

I seems that a puppet agent installed using PE Package Management in PE 3.3 does not sync custom resource types from puppet modules. When trying to use a resource type from the orawls module on an agent I get this error:

# puppet resource wls_server
Error: Could not run: Could not find template 'puppet:///modules/orawls/providers/wls_server/index.py.erb'

The puppet.conf file created during the agent installation looks like this:

[main]
  vardir = /var/opt/lib/pe-puppet
  logdir = /var/log/pe-puppet
  rundir = /var/run/pe-puppet
  basemodulepath = /etc/puppetlabs/puppet/modules:/opt/puppet/share/puppet/modules
  user  = pe-puppet
  group = pe-puppet
  archive_files = true

[agent]
  report = true
  classfile = $vardir/classes.txt
  localconfig = $vardir/localconfig
  graph = true
  pluginsync = true
  environment = production
server = puppet.example.com
certname = agent6.example.com

Printing the server setting for the different sections gives:

# puppet config print server --section  main
puppet
# puppet config print server --section  agent
puppet.example.com

If I move the server setting to the main section, then the wls_server resource can be used by the agent.

The script used to install the agent is served by the master from /opt/puppet/packages/public/3.3.1/el-6-x86_64.bash and contains this line:

/opt/puppet/bin/puppet config set server puppet.example.com --section agent

Why is server not set in the main section instead? Is this a bug or is the behavior I'm seeing a bug in the way custom resource types are synced to agents?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2014-09-08 16:51:24 -0500

mrzarquon gravatar image

updated 2014-09-08 16:52:21 -0500

That is a problem with that specific custom resource type - it is a non standard type/provider that is dependent on loading a file stored on the master / in the module in order to work successfully.

If the custom resource was isolated to just using ruby (in this case the orawls module is calling a templatized python script), the resource would have been synced to the agent during that agents next puppet run and then made available to you in the command line. Since it does not do that, you have to tell the command line client where to find the server (putting the server in the main section instead of agent) so that type/provider could retrieve it's needed external file.

I would suggest raising an issue with the module author as even though changing the agents configuration allows for the module to work, the resource shouldn't be loading external files for it to conform to type/provider best practices.

(https://docs.puppetlabs.com/guides/customtypes.html and https://docs.puppetlabs.com/guides/pluginsin_modules.html#module-structure are good details on the areas of interest).

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2014-09-04 09:32:14 -0500

Seen: 221 times

Last updated: Sep 08 '14