Issue #4792 has been updated by Jos Boumans.
Status changed from Closed to Re-opened
Target version changed from 2.6.2 to 2.6.x
I'm encountering what looks to be the same issue in 2.6.3:
Nov 30 20:08:27 ip-10-204-53-197 node_classifier.py[1730]: DEBUG: Node
configuration
(riak.example.com.137d3603-a0dc-432c-a0d6-08878dd81d39): {'classes':
['s_riak']}
Nov 30 20:08:27 ip-10-122-246-108 puppet-agent[6149]: Could not retrieve
catalog from
remote server: Error 400 on SERVER: Duplicate definition: Class[Kbase] is
already
defined; cannot redefine at
puppet/env/production/krux-modules/kbase/manifests/init.pp:3
Changing the following line works around the issue:
class s_riak inherits kbase {
to:
class s_riak {
include kbase
Below are the relevant files I'm using:
ubu...@cc002:~/sources/git/krux_interchange.2/puppet-new/puppet/env/production$
find . -type f | grep manifests | grep -P 'kbase|s_riak' | xargs -I% perl
-le'$_=shift; print "*** FILE: $_ ***"; print `cat $_`' %
*** FILE: ./services/s_riak/manifests/init.pp ***
# Class: s_riak
#
# This module manages s_riak
#
# Parameters:
#
# Actions:
#
# Requires:
#
# Sample Usage:
#
# [Remember: No empty lines between comments and class definition]
include kbase::stages
class { "s_riak": stage => "puppet1" }
class s_riak inherits kbase {
file { "/usr/local/krux/services/s_riak/":
source => "puppet:///modules/s_riak",
ensure => directory,
recurse => true,
mode => 755,
owner => root,
group => root,
purge => true,
}
### Arch dependant
$deb = $architecture ? {
i386 => "riak-ee_0.13.0-1_i386.deb",
amd64 => "riak-ee_0.13.0-1_amd64.deb",
x86_64 => "riak-ee_0.13.0-1_amd64.deb",
}
package { "riak-ee":
provider => dpkg,
ensure => latest,
source => "/usr/local/krux/services/s_riak/sources/$deb",
require => File["/usr/local/krux/services/s_riak/"],
}
########################
### configuration files
########################
### this is a template because the -name variable depends on the fqdn
file { "/usr/local/krux/services/s_riak/etc/riak/vm.args":
content => template( "s_riak/etc/riak/vm.args.erb" ),
ensure => present,
}
### symlink it from /etc/riak
file { "/etc/riak/vm.args":
ensure => "/usr/local/krux/services/s_riak/etc/riak/vm.args",
backup => ".orig",
require => File["/usr/local/krux/services/s_riak/etc/riak/vm.args"],
}
### symlink it from /etc/riak
file { "/etc/riak/app.config":
ensure => "/usr/local/krux/services/s_riak/etc/riak/app.config",
backup => ".orig",
}
###################
### run the service
###################
service { riak:
ensure => running,
enable => true,
hasstatus => true,
hasrestart => true,
subscribe => [ File["/etc/riak/app.config"],
File["/etc/riak/vm.args"],
Package["riak-ee"],
],
}
}
*** FILE: ./krux-modules/kbase/manifests/stages.pp ***
class kbase::stages {
stage { "bootstrap": before => Stage[main] } # bootstrap phase
stage { "puppet1": require => Stage[main] } # first puppet
controlled phase
stage { "script1": require => Stage[puppet1] } # first manual script
phase
stage { "puppet2": require => Stage[script1] } # second puppet
controlled phase
stage { "script2": require => Stage[puppet2] } # second manual script
phase
stage { "puppet3": require => Stage[script2] } # third puppet
controlled phase
stage { "script3": require => Stage[puppet3] } # third manual script
phase
}
*** FILE: ./krux-modules/kbase/manifests/init.pp ***
include kbase::stages
class { "kbase": stage => "bootstrap" }
class kbase {
include kbase::packages
include kbase::users
######################################################
### base directory for all krux related files & kbase
######################################################
file { ["/usr/local/krux", "/usr/local/krux/services"]:
ensure => directory,
mode => 755,
owner => root,
group => root,
}
######################################################
### scripts to run as part of the base setup procedure
######################################################
# can not copy everything under kbase/files in one go, has to
# be a subdir -jib
file { "/usr/local/krux/kbase/":
source => "puppet:///modules/kbase",
ensure => directory,
recurse => true,
mode => 755,
owner => root,
group => root,
purge => true, # content changes must be propogated
}
}
*** FILE: ./krux-modules/kbase/manifests/users.pp ***
###################################################
### essential system users for the following stages
###################################################
class { "kbase::users": stage => "bootstrap" }
class kbase::users {
user { "ubuntu":
ensure => "present",
uid => "1000",
groups => ["adm", "admin"],
comment => "Ubuntu System User",
shell => "/bin/bash",
home => "/home/ubuntu",
}
file { "/home/ubuntu":
ensure => directory,
mode => 755,
owner => ubuntu,
group => ubuntu,
require => User["ubuntu"],
}
exec {
"/usr/local/krux/kbase/scripts/bootstrap/02_setup_system_user.sh":
user => "ubuntu",
require => [ File["/usr/local/krux/kbase"], File["/home/ubuntu"] ]
}
}
*** FILE: ./krux-modules/kbase/manifests/packages.pp ***
class { "kbase::packages": stage => "bootstrap" }
class kbase::packages {
include kbase
exec { "/usr/local/krux/kbase/scripts/bootstrap/01_packages.sh":
require => File["/usr/local/krux/kbase"]
}
### packages to install the puppet way
package { ["s3cmd"]:
ensure => latest,
}
}
----------------------------------------
Bug #4792: Duplicate definition since 2.6.1 upgrade
https://projects.puppetlabs.com/issues/4792
Author: James Turnbull
Status: Re-opened
Priority: High
Assignee: Paul Berry
Category: parser
Target version: 2.6.x
Affected Puppet version: 2.6.1
Keywords:
Branch: http://github.com/stereotype441/puppet/tree/ticket/2.6.x/4792
Class, users::virtual which has all the user{} statements for all users. Then
have classes like users::cms and users::developers that inherit users::virtual
and then realize some of the users. This all worked perfectly fine in 2.5 but
since 2.6.1 runs now fail with:
<pre>
err: Could not retrieve catalog from remote server: Error 400 on SERVER:
Duplicate definition: User[apen
ney] is already defined in file
/etc/puppet/modules/testing/users/manifests/virtual.pp at line 19; canno
t redefine at /etc/puppet/modules/testing/users/manifests/virtual.pp:19 on node
hlslinutil1.law.harvard.
edu
</pre>
<pre>
realize(
User['user'],
)
}
# cat virtual.pp
class users::virtual {
##
## Sysadmins
##
@user { "user":
ensure => "present",
uid => 35421,
gid => 100,
groups => "wheel",
comment => "User Name",
home => "/home/user",
shell => "/bin/zsh",
password => password,
managehome => true,
}
}
</pre>
--
You have received this notification because you have either subscribed to it,
or are involved in it.
To change your notification preferences, please click here:
http://projects.puppetlabs.com/my/account
--
You received this message because you are subscribed to the Google Groups
"Puppet Bugs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/puppet-bugs?hl=en.