Puppet 2.7.3 Cannot alias .. already defined

1,587 views
Skip to first unread message

rvlinden

unread,
Sep 15, 2011, 5:01:03 PM9/15/11
to Puppet Users
Hi all,

Today I upgraded both my puppet server (2.7.1) a puppet client(s)
(2.6.9) to 2.7.3 and suddenly my modules didn't work anymore. I don't
know if 2.7.3 is more strict than 2.7.1, or if it's a bug, so I hope
someone can help me.

I have several modules where the file and/or directory are separated
from the permissions I set on them
This is because I sometimes want to create a single directory, and
later set specific user/group and permissions to one or all files
(recurse) in it.

Here is an example for the ntp module

class ntp (
$autoupgrade = 'false' ){

require ntp::params

# Create var directory

file { "${ntp::params::var_directory}":
ensure => directory,
}

# Set var permissions

sysconfig::permissions { "${ntp::params::module_label}_permissions$
{ntp::params::var_directory}":
sysconfig_module => "${ntp::params::module_label}",
sysconfig_name => "${ntp::params::var_directory}",
sysconfig_owner => "${ntp::params::user_name}",
sysconfig_group => "${ntp::params::group_name}",
sysconfig_mode => "${ntp::params::var_permissions}",
}

.. removed some lines

} # End class

and also the sysconfig::permissions define module

define sysconfig::permissions (
$sysconfig_module,
$sysconfig_name,
$sysconfig_recurse = 'false',
$sysconfig_owner,
$sysconfig_group,
$sysconfig_mode = undef ) {

# Load defaults

require sysconfig::params

# Set permissions

file { "${sysconfig_module}_${sysconfig_name}":
name => "${sysconfig_name}",
recurse => "${sysconfig_recurse}",
owner => "${sysconfig_owner}",
group => "${sysconfig_group}",
}

if $sysconfig_mode != undef {
File["${sysconfig_module}_${sysconfig_name}"] {
mode => "${sysconfig_mode}",
}
}

} # End define


When puppet runs, I get the following error

err: Could not retrieve catalog from remote server: Error 400 on
SERVER: Puppet::Parser::AST::Resource failed with error ArgumentError:
Cannot alias File[ntp_/var/lib/ntp] to ["/var/lib/ntp"] at /etc/puppet/
modules/sysconfig/manifests/permissions.pp:47; resource ["File", "/var/
lib/ntp"] already defined at /etc/puppet/modules/ntp/manifests/init.pp:
18 at /etc/puppet/modules/sysconfig/manifests/permissions.pp:47 on
node client.mydomain.com

In the previous version, this would not be a problem as the file in
the ntp module would be
file { "/var/lib/ntp": }

and the file in the sysconfig::permissions module would be
file { "ntp_/var/lib/ntp": }

I would reference from back from the sysconfig::permissions module to
the ntp module file by specifying
name => "/var/lib/ntp"

Do I need to change all my modules because I used a feature of puppet
which should not be there, and if so, how could I best fix this.

Kind regards,
Rene

Peter Meier

unread,
Sep 16, 2011, 2:55:35 PM9/16/11
to puppet...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> I would reference from back from the sysconfig::permissions module to
> the ntp module file by specifying
> name => "/var/lib/ntp"
>
> Do I need to change all my modules because I used a feature of puppet
> which should not be there, and if so, how could I best fix this.

does a single manifests like

file{'foo':
name => '/tmp/foo',
mode => 0700;
}

with puppet apply, also raise an error?

~pete
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk5zm6YACgkQbwltcAfKi3/k2QCfcG/LwcP+pebtbOA1vwFlOLwq
BoAAn1ukeUejmGFp4w4yCBk4No34xJhw
=pvok
-----END PGP SIGNATURE-----

Message has been deleted

rvlinden

unread,
Sep 17, 2011, 8:42:11 AM9/17/11
to Puppet Users


On Sep 16, 8:55 pm, Peter Meier <peter.me...@immerda.ch> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> > I would reference from back from the sysconfig::permissions module to
> > the ntp module file by specifying
> > name => "/var/lib/ntp"
>
> > Do I need to change all my modules because I used a feature of puppet
> > which should not be there, and if so, how could I best fix this.
>
> does a single manifests like
>
> file{'foo':
>   name => '/tmp/foo',
>   mode => 0700;
>
> }
>
> with puppet apply, also raise an error?
>
> ~pete
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.11 (GNU/Linux)
> Comment: Using GnuPG with Mozilla -http://enigmail.mozdev.org/
>
> iEYEARECAAYFAk5zm6YACgkQbwltcAfKi3/k2QCfcG/LwcP+pebtbOA1vwFlOLwq
> BoAAn1ukeUejmGFp4w4yCBk4No34xJhw
> =pvok
> -----END PGP SIGNATURE-----

A single manifests works fine, but this is not the only module I have
where I set permissions using the sysconfig::permissions module.

I can rewrite them, (and probably have to, to make it work again) but
then it seems that the ' name' option in the file type is going to be
obsoleted as it doesn't work anymore.

Peter Meier

unread,
Sep 17, 2011, 9:54:59 AM9/17/11
to puppet...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> A single manifests works fine, but this is not the only module I have


> where I set permissions using the sysconfig::permissions module.

Ah, now I as I read your problem better: The error indicates more that
you name two resources with the same name/alias. And you can't and
shouldn't do that!
Actually your code should imho not work on 2.6.9 either and yes it looks
like 2.7 got more strict.

Anyway, you shouldn't do what you do currently, this is quite dangerous!

Note: Puppet automagically sets the execute flag on directories, so if
you'd like to have the directory 0750 and the files 0640, then simply
set the mode of the directory to 0640 and to recurse. If you would like
to set the files to 0600, then you have to manage them invidually,
because the file provider of puppet does (currently) not (yet) support
that feature.

> I can rewrite them, (and probably have to, to make it work again) but
> then it seems that the ' name' option in the file type is going to be
> obsoleted as it doesn't work anymore.

Unlikely, name is quite an important attribute for all resources. It is
more that you end up having two different resources with the same name
or alias. And that should really not be. It looks like a serious bug
_got_ fixed in 2.7


~pete

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk50prIACgkQbwltcAfKi3+vjQCfboeXmfrBJzDS1/5NSsO8McDB
pwIAn2QOSWif3fZVkCEvLt/se5BoeoFL
=SOll
-----END PGP SIGNATURE-----

rvlinden

unread,
Sep 17, 2011, 11:42:40 AM9/17/11
to Puppet Users
> Comment: Using GnuPG with Mozilla -http://enigmail.mozdev.org/
>
> iEYEARECAAYFAk50prIACgkQbwltcAfKi3+vjQCfboeXmfrBJzDS1/5NSsO8McDB
> pwIAn2QOSWif3fZVkCEvLt/se5BoeoFL
> =SOll
> -----END PGP SIGNATURE-----

I just read the 2.7.3 changelog in detail and it's bug 8596 that was
fixed and caused this to not work anymore.
they also concluded that the documentation was incorrect and based on
that document I created my modules :-(
Reply all
Reply to author
Forward
0 new messages