Issue #9586 has been updated by David Kitchen.
I'm seeing the same error message on CentOS 6.
But you'll have to forgive me for being a CentOS n00b as well as a Puppet n00b.
Steps to reproduce:
1) Download and install CentOS 6 i386 DVD to a virtual machine
2) Execute this sequence of commands:
su
yum install ruby
wget http://puppetlabs.com/downloads/facter/facter-1.6.3.tar.gz
tar -xvzf facter-1.6.3.tar.gz
cd facter-1.6.3
./install.rb
cd ../
wget http://puppetlabs.com/downloads/puppet/puppet-2.7.6.tar.gz
tar -xvzf puppet-2.7.6.tar.gz
cd puppet-2.7.6
./install.rb
exit
puppet resource user root
3) Observe the error message:
Could not run: Could not find a default provider for user
If you need me to do something, you'll have to be extremely explicit in the
instructions, I come from a Debian background and today is day #1 of trying
CentOS and I'm fumbling like mad.
----------------------------------------
Bug #9586: "Could not find a default provider for user" breaks puppetmasterd on
OpenBSD
https://projects.puppetlabs.com/issues/9586
Author: Darren Spruell
Status: Accepted
Priority: High
Assignee: Nick Suckling
Category: provider
Target version:
Affected Puppet version: 2.7.3
Keywords: OpenBSD useradd ProviderUseradd
Branch:
Trying to start 'puppet master' on new install of Puppet 2.7.3 w/
Facter 1.6.0 fails on OpenBSD 4.8 i386.
ruby 1.8.6 (2009-06-08 patchlevel 369) [i386-openbsd4.8]
Receiving error:
*Could not create resources for managing Puppet's files and directories
in sections [:main, :ssl]: Could not find a default provider for user*
With trace:
$ sudo puppet master --no-daemonize --verbose --debug --trace
debug: Failed to load library 'shadow' for feature 'libshadow'
debug: Puppet::Type::User::ProviderUseradd: file chage does not exist
debug: Puppet::Type::User::ProviderUser_role_add: file roleadd does
not exist
debug: Puppet::Type::User::ProviderLdap: true value when expecting
false
debug: Puppet::Type::User::ProviderPw: file pw does not exist
debug: Puppet::Type::User::ProviderDirectoryservice: file /usr/bin/
dscl does not exist
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:1402:in
`defaultprovider'
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:1509:in `default'
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:540:in `set_default'
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:1762:in `initialize'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:457:in `new'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:457:in
`service_user_available?'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings/file_setting.rb:
45:in `use_service_user?'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings/file_setting.rb:
40:in `owner'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings/file_setting.rb:
97:in `to_resource'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:564:in
`to_catalog'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:562:in
`each'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:562:in
`to_catalog'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:621:in `use'
/usr/local/lib/ruby/1.8/sync.rb:230:in `synchronize'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:615:in `use'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application/master.rb:227:in
`setup'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:305:in `run'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:411:in `hook'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:305:in `run'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:402:in
`exit_on_fail'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:305:in `run'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/command_line.rb:69:in
`execute'
/usr/local/bin/puppet:4
err: Could not create resources for managing Puppet's files and
directories in sections [:main, :master, :ssl, :metr
ics]: Could not find a default provider for user
debug: Puppet::Type::User::ProviderUseradd: file chage does not exist
debug: Puppet::Type::User::ProviderUser_role_add: file roleadd does
not exist
debug: Puppet::Type::User::ProviderLdap: true value when expecting
false
debug: Puppet::Type::User::ProviderPw: file pw does not exist
debug: Puppet::Type::User::ProviderDirectoryservice: file /usr/bin/
dscl does not exist
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:1402:in
`defaultprovider'
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:1509:in `default'
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:540:in `set_default'
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:1762:in `initialize'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:457:in `new'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:457:in
`service_user_available?'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings/file_setting.rb:
45:in `use_service_user?'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings/file_setting.rb:
40:in `owner'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings/file_setting.rb:
97:in `to_resource'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:564:in
`to_catalog'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:562:in
`each'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:562:in
`to_catalog'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:621:in `use'
/usr/local/lib/ruby/1.8/sync.rb:230:in `synchronize'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:615:in `use'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application/master.rb:235:in
`setup'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:305:in `run'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:411:in `hook'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:305:in `run'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:402:in
`exit_on_fail'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:305:in `run'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/command_line.rb:69:in
`execute'
/usr/local/bin/puppet:4
err: Could not create resources for managing Puppet's files and
directories in sections [:ca]: Could not find a defa
ult provider for userESC[0m
debug: Puppet::Type::User::ProviderUseradd: file chage does not exist
debug: Puppet::Type::User::ProviderUser_role_add: file roleadd does
not exist
debug: Puppet::Type::User::ProviderLdap: true value when expecting
false
debug: Puppet::Type::User::ProviderPw: file pw does not exist
debug: Puppet::Type::User::ProviderDirectoryservice: file /usr/bin/
dscl does not exist
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:1402:in
`defaultprovider'
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:1509:in `default'
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:540:in `set_default'
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:1762:in `initialize'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:457:in `new'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:457:in
`service_user_available?'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings/file_setting.rb:
45:in `use_service_user?'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings/file_setting.rb:
40:in `owner'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings/file_setting.rb:
97:in `to_resource'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:564:in
`to_catalog'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:562:in
`each'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:562:in
`to_catalog'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:621:in `use'
/usr/local/lib/ruby/1.8/sync.rb:230:in `synchronize'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:615:in `use'
/usr/local/lib/ruby/site_ruby/1.8/puppet/ssl/certificate_authority.rb:
140:in `initialize'
/usr/local/lib/ruby/site_ruby/1.8/puppet/ssl/certificate_authority.rb:
31:in `new'
/usr/local/lib/ruby/site_ruby/1.8/puppet/ssl/certificate_authority.rb:
31:in `init_singleton_instance'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/cacher.rb:106:in `send'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/cacher.rb:106:in
`cached_value'
/usr/local/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/cacher.rb:98:in
`cached_value'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/cacher.rb:48:in
`singleton_instance'
/usr/local/lib/ruby/site_ruby/1.8/puppet/ssl/certificate_authority.rb:
45:in `instance'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application/master.rb:236:in
`setup'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:305:in `run'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:411:in `hook'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:305:in `run'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:402:in
`exit_on_fail'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:305:in `run'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/command_line.rb:69:in
`execute'
/usr/local/bin/puppet:4
ESC[1;35merr: Could not create resources for managing Puppet's files
and directories in sections [:main, :ssl, :ca]: Could not find a
default provider for userESC[0m
ESC[0;37mdebug: Puppet::Type::User::ProviderUseradd: file chage does
not existESC[0m
ESC[0;37mdebug: Puppet::Type::User::ProviderUser_role_add: file
roleadd does not existESC[0m
ESC[0;37mdebug: Puppet::Type::User::ProviderLdap: true value when
expecting falseESC[0m
ESC[0;37mdebug: Puppet::Type::User::ProviderPw: file pw does not
existESC[0m
ESC[0;37mdebug: Puppet::Type::User::ProviderDirectoryservice: file /
usr/bin/dscl does not existESC[0m
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:1402:in
`defaultprovider'
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:1509:in `default'
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:540:in `set_default'
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:1762:in `initialize'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:457:in `new'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:457:in
`service_user_available?'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings/file_setting.rb:
45:in `use_service_user?'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings/file_setting.rb:
40:in `owner'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings/file_setting.rb:
97:in `to_resource'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:564:in
`to_catalog'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:562:in
`each'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:562:in
`to_catalog'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:621:in `use'
/usr/local/lib/ruby/1.8/sync.rb:230:in `synchronize'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:615:in `use'
/usr/local/lib/ruby/site_ruby/1.8/puppet/indirector/ssl_file.rb:50:in
`initialize'
/usr/local/lib/ruby/site_ruby/1.8/puppet/indirector/indirection.rb:
314:in `new'
/usr/local/lib/ruby/site_ruby/1.8/puppet/indirector/indirection.rb:
314:in `make_terminus'
/usr/local/lib/ruby/site_ruby/1.8/puppet/indirector/indirection.rb:
123:in `terminus'
/usr/local/lib/ruby/site_ruby/1.8/puppet/indirector/indirection.rb:
302:in `prepare'
/usr/local/lib/ruby/site_ruby/1.8/puppet/indirector/indirection.rb:
181:in `find'
/usr/local/lib/ruby/site_ruby/1.8/puppet/ssl/host.rb:138:in `key'
/usr/local/lib/ruby/site_ruby/1.8/puppet/ssl/host.rb:176:in
`certificate'
/usr/local/lib/ruby/site_ruby/1.8/puppet/ssl/certificate_authority.rb:
222:in `setup'
/usr/local/lib/ruby/site_ruby/1.8/puppet/ssl/certificate_authority.rb:
146:in `initialize'
/usr/local/lib/ruby/site_ruby/1.8/puppet/ssl/certificate_authority.rb:
31:in `new'
/usr/local/lib/ruby/site_ruby/1.8/puppet/ssl/certificate_authority.rb:
31:in `init_singleton_instance'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/cacher.rb:106:in `send'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/cacher.rb:106:in
`cached_value'
/usr/local/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/cacher.rb:98:in
`cached_value'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/cacher.rb:48:in
`singleton_instance'
/usr/local/lib/ruby/site_ruby/1.8/puppet/ssl/certificate_authority.rb:
45:in `instance'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application/master.rb:236:in
`setup'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:305:in `run'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:411:in `hook'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:305:in `run'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:402:in
`exit_on_fail'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:305:in `run'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/command_line.rb:69:in
`execute'
/usr/local/bin/puppet:4
ESC[1;35merr: Could not create resources for managing Puppet's files
and directories in sections [:main, :ssl]: Could not find a default
provider for userESC[0m
ESC[0;32minfo: Creating a new SSL key for caESC[0m
ESC[0;37mdebug: Puppet::Type::User::ProviderUseradd: file chage does
not existESC[0m
ESC[0;37mdebug: Puppet::Type::User::ProviderUser_role_add: file
roleadd does not existESC[0m
ESC[0;37mdebug: Puppet::Type::User::ProviderLdap: true value when
expecting falseESC[0m
ESC[0;37mdebug: Puppet::Type::User::ProviderPw: file pw does not
existESC[0m
ESC[0;37mdebug: Puppet::Type::User::ProviderDirectoryservice: file /
usr/bin/dscl does not existESC[0m
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:1402:in
`defaultprovider'
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:1509:in `default'
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:540:in `set_default'
/usr/local/lib/ruby/site_ruby/1.8/puppet/type.rb:1762:in `initialize'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:457:in `new'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:457:in
`service_user_available?'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings/file_setting.rb:
45:in `use_service_user?'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings/file_setting.rb:
40:in `owner'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:718:in
`writesub'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/settings.rb:709:in
`write'
/usr/local/lib/ruby/site_ruby/1.8/puppet/indirector/ssl_file.rb:156:in
`write'
/usr/local/lib/ruby/site_ruby/1.8/puppet/indirector/ssl_file.rb:98:in
`save'
/usr/local/lib/ruby/site_ruby/1.8/puppet/indirector/key/file.rb:34:in
`save'
/usr/local/lib/ruby/site_ruby/1.8/puppet/indirector/indirection.rb:
264:in `save'
/usr/local/lib/ruby/site_ruby/1.8/puppet/ssl/host.rb:147:in
`generate_key'
/usr/local/lib/ruby/site_ruby/1.8/puppet/ssl/host.rb:176:in
`certificate'
/usr/local/lib/ruby/site_ruby/1.8/puppet/ssl/certificate_authority.rb:
222:in `setup'
/usr/local/lib/ruby/site_ruby/1.8/puppet/ssl/certificate_authority.rb:
146:in `initialize'
/usr/local/lib/ruby/site_ruby/1.8/puppet/ssl/certificate_authority.rb:
31:in `new'
/usr/local/lib/ruby/site_ruby/1.8/puppet/ssl/certificate_authority.rb:
31:in `init_singleton_instance'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/cacher.rb:106:in `send'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/cacher.rb:106:in
`cached_value'
/usr/local/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/cacher.rb:98:in
`cached_value'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/cacher.rb:48:in
`singleton_instance'
/usr/local/lib/ruby/site_ruby/1.8/puppet/ssl/certificate_authority.rb:
45:in `instance'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application/master.rb:236:in
`setup'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:305:in `run'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:411:in `hook'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:305:in `run'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:402:in
`exit_on_fail'
/usr/local/lib/ruby/site_ruby/1.8/puppet/application.rb:305:in `run'
/usr/local/lib/ruby/site_ruby/1.8/puppet/util/command_line.rb:69:in
`execute'
/usr/local/bin/puppet:4
Default user provider should be useradd(8). ProviderUseradd is looking for
'chage' binary which isn't used on OpenBSD. The 'Puppet OpenBSD' doc doesn't
have anything applicable. This seems to be related to #4963 (Solaris) where a
workaround was to use passwd(1) instead of chage and updated options for
min/max password age.
Applying the following modifications works around the issue although is not
likely to be correct:
--- useradd.rb.bak Fri Sep 16 23:26:59 2011
+++ useradd.rb Sat Sep 17 00:15:03 2011
@@ -3,13 +3,13 @@
Puppet::Type.type(:user).provide :useradd, :parent =>
Puppet::Provider::NameService::ObjectAdd do
desc "User management via `useradd` and its ilk. Note that you will need
to install the `Shadow Password` Ruby library often known as ruby-libshadow to
manage user passwords."
- commands :add => "useradd", :delete => "userdel", :modify =>
"usermod", :password => "chage"
+ commands :add => "useradd", :delete => "userdel", :modify =>
"usermod", :password => "passwd"
options :home, :flag => "-d", :method => :dir
options :comment, :method => :gecos
options :groups, :flag => "-G"
- options :password_min_age, :flag => "-m"
- options :password_max_age, :flag => "-M"
+ options :password_min_age, :flag => "-e"
+ options :password_max_age, :flag => "-f"
verify :gid, "GID must be an integer" do |value|
value.is_a? Integer
I suspect a modified provider is required for OpenBSD since the useradd(8)
utility doesn't support the -m/-M options for min/max age, but rather supports
these options instead for account and password expiration:
-e expiry-time
Sets the default time at which new accounts will expire. It
should be entered in the form ``month day year'', where month is
the month name (the first three characters are sufficient), day
is the day of the month, and year is the year. Time in seconds
since the Epoch (UTC) is also valid. A value of 0 can be used to
disable this feature.
-f inactive-time
Sets the time at which passwords of new accounts will expire.
Also see the -e option above.
OpenBSD's useradd(8) is derived from NetBSD's so the same situation is likely
to occur there.
[[http://www.openbsd.org/cgi-bin/man.cgi?query=useradd&sektion=8]]
[[http://netbsd.gw.com/cgi-bin/man-cgi?useradd+8+NetBSD-current]]
--
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.