The Puppet Labs Issue Tracker has Moved: https://tickets.puppetlabs.com

Bug #7893

Failed to generate additional resources using 'eval_generate': Cannot manage files of type socket

Added by Tim Hughes over 3 years ago. Updated about 2 years ago.

Status:AcceptedStart date:06/12/2011
Priority:NormalDue date:
Assignee:-% Done:

0%

Category:-
Target version:3.x
Affected Puppet version:2.6.8 Branch:
Keywords:recurse, owner, group, socket

We've Moved!

Ticket tracking is now hosted in JIRA: https://tickets.puppetlabs.com

This ticket may be automatically exported to the PUP project on JIRA using the button below:


Description

Using a slightly modified version of the code from “Pro Puppet” I am getting the following error:

Jun 13 01:36:33 media puppet-agent[18196]: (/Stage[main]/Mysql::Config/File[mysql_data_dir]) Failed to generate additional resources using 'eval_generate': Cannot manage files of type socket

The file resource in mysql/manifests/config.pp is as follows:

file { "mysql_data_dir" :
    path => $mysql::params::data_directory,
    group => "mysql",
    owner => "mysql",
    recurse => true,
    require => File["my.cnf"],
}

And for this particular $operatingsystem (Fedora) the value for $data_directory in mysql/manifests/params.pp is :

$data_directory = "/var/lib/mysql"

By default mysql on a Fedora system places its mysql.sock file in the data directory but it appears when a you try and change the permissions recursively, puppet doesn’t know what to do with the socket file.

I can place the socket file elsewhere as a work around but I believe that puppet needs to ignore socket files when changing permissions.

[root@media modules]# puppet --version
2.6.8
[root@media modules]# puppet master --version
2.6.8

Related issues

Duplicated by Puppet - Feature #15976: Allow management of named pipes (in a File resource type) Duplicate 08/15/2012

History

#1 Updated by Adrien Thebo over 3 years ago

  • Status changed from Unreviewed to Needs Decision
  • Assignee set to Matt Robinson

#2 Updated by Matt Robinson over 3 years ago

  • Assignee changed from Matt Robinson to Nigel Kersten

I don’t think I’m the one to authoritatively make this decision, but I’ll throw in my 2 cents and reassign to Nigel.

I don’t think you should recursively manage directories that contain socket files. I realize the MySQL default directory structure and configuration makes this inconvenient when using puppet, but the configuration should be easy enough to change if you’re already going to the trouble to manage ownership differently from what the package installation does.

#3 Updated by Gabriel Schuyler about 3 years ago

Meanwhile, a workaround is to ignore the socket. Something like this:

file { '/var/lib/mysql':
  owner => 'mysql',
  group => 'mysql',
  recurse => true,
  require => File['/etc/my.cnf'],
  ignore => 'mysql.sock',
}

#4 Updated by Nigel Kersten over 2 years ago

  • Assignee changed from Nigel Kersten to eric sorenson

#5 Updated by eric sorenson over 2 years ago

This error message is quite annoying and a simple File test should avoid it — we should simply skip sockets and named pipes since they (by definition) aren’t going to work off the source system.

#6 Updated by eric sorenson over 2 years ago

  • Status changed from Needs Decision to Accepted
  • Assignee deleted (eric sorenson)
  • Target version set to 3.x

I take that back, #15976 has a valid use-case for actually managing non-regular files. It’d be worth making this work.

Also available in: Atom PDF