Issue #1674 has been updated by rgsteele.
Below are the classes and definitions used to reproduce this problem. And,
according to the TypeReference, arrays are only needed when specifying multiple
groups (
# Class which realizes the user
class dev_userconf {
realize( Group["alpha"], Group["tango"], Group["charlie"], Group["bravo"] )
realize( User_account["foo"] )
}
# Class which passes some user attributes to the user_accts
# virtual define. Start out with this, then after the client
# runs once, change the 'groups' to: ["charlie", "bravo"], or
# even just ["bravo"] - any array will throw an exception.
class user_accts {
@user_account { "foo":
comment => "Foo Bar",
type => "dev",
groups => "bravo";
}
}
# The virtual definition
define user_account ( ensure = present, type, comment, shell = false, groups =
false ) {
# Define the appropriate shell and supplementary groups
case $type {
dev: {
$supp_groups = $groups ? {
false => ["alpha", "tango"],
default => ["alpha", "tango", $groups]
}
$user_shell = $shell ? {
false => "/bin/bash",
default => $shell
}
}
nondev: {
$supp_groups = $groups ? {
false => "charlie",
default => ["charlie", $groups]
}
$user_shell = "/sbin/nologin"
}
}
user { $name:
ensure => $ensure,
groups => $supp_groups,
comment => $comment,
shell => $user_shell,
}
}
Also worth noting is even if you start out with an array for the 'groups'
attribute, if you ever switch to using a single string, you can never switch
back.
----------------------------------------
Bug #1674: Puppet compares string to array if 'groups' attribute of user type
is changed accordingly.
http://projects.reductivelabs.com/issues/show/1674
Author: rgsteele
Status: Accepted
Priority: High
Assigned to: andrew
Category: user
Target version:
Complexity: Unknown
Affected version: 0.24.5
Keywords:
If the 'groups' attribute for a user is first stored as a string, but then
later changed to an array, Puppet throws an exception and complains that it
can't compare a string to an array. Here's a trace:
/usr/lib/ruby/1.8/puppet/type/user.rb:192:in `sort'
/usr/lib/ruby/1.8/puppet/type/user.rb:192:in `should'
/usr/lib/ruby/1.8/puppet/type/user.rb:320
/usr/lib/ruby/1.8/puppet/metatype/relationships.rb:27:in `instance_eval'
/usr/lib/ruby/1.8/puppet/metatype/relationships.rb:27:in `autorequire'
/usr/lib/ruby/1.8/puppet/metatype/relationships.rb:14:in `eachautorequire'
/usr/lib/ruby/1.8/puppet/metatype/relationships.rb:13:in `each'
/usr/lib/ruby/1.8/puppet/metatype/relationships.rb:13:in `eachautorequire'
/usr/lib/ruby/1.8/puppet/metatype/relationships.rb:22:in `autorequire'
/usr/lib/ruby/1.8/puppet/node/catalog.rb:346:in `relationship_graph'
/usr/lib/ruby/1.8/puppet/node/catalog.rb:345:in `each'
/usr/lib/ruby/1.8/puppet/node/catalog.rb:345:in `relationship_graph'
/usr/lib/ruby/1.8/puppet/transaction.rb:515:in `relationship_graph'
/usr/lib/ruby/1.8/puppet/transaction.rb:511:in `prepare'
/usr/lib/ruby/1.8/puppet/transaction.rb:300:in `evaluate'
/usr/lib/ruby/1.8/puppet/node/catalog.rb:124:in `apply'
/usr/lib/ruby/1.8/puppet/network/client/master.rb:255:in `run'
/usr/lib/ruby/1.8/puppet/util.rb:212:in `benchmark'
/usr/lib/ruby/1.8/benchmark.rb:293:in `measure'
/usr/lib/ruby/1.8/benchmark.rb:307:in `realtime'
/usr/lib/ruby/1.8/puppet/util.rb:211:in `benchmark'
/usr/lib/ruby/1.8/puppet/network/client/master.rb:254:in `run'
/usr/lib/ruby/1.8/sync.rb:230:in `synchronize'
/usr/lib/ruby/1.8/puppet/network/client/master.rb:236:in `run'
/usr/sbin/puppetd:417
err: Got an uncaught exception of type ArgumentError: comparison of String with
Array failed
debug: Storing state
debug: Stored state in 0.04 seconds
notice: Finished catalog run in 0.18 seconds
----------------------------------------
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://reductivelabs.com/redmine/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
-~----------~----~----~----~------~----~------~--~---