Issue #3186 has been updated by Brice Figureau.
Dan Bode wrote: > yes, explicitly adding the require => Class[mysql::server] stuff fixes this > issue. (orders things correctly, things work) > > Although the resolving stuff looks suspicious its def not the root cause, > that error only occurs if mysql has not been installed before the type is > used (I have been hacking around with this loading/order stuff). In the same > manifest, I found more places where require class isnt creating the > dependencies. > > also, this is when using the puppet executable (not sure if that should > matter), I havent had a change to check it with puppetd. would you have a simpler manifest exhibiting the problem (ie one not dependent of a type/provider I don't have access to)? ---------------------------------------- Bug #3186: require not working as expected http://projects.reductivelabs.com/issues/3186 Author: Dan Bode Status: Accepted Priority: Normal Assigned to: Brice Figureau Category: functions Target version: Affected version: 0.25.4 Keywords: require order Branch: I have an example where require is not correctly specifying a dependency between classes. <pre> $mysql_old_pw='b' $mysql_root_pw='p' $redmine_db='r' $redmine_db_user='red' $redmine_db_pw='red' include redmine::mysql </pre> <pre> class redmine::mysql { require mysql::server require mysql::ruby if ! $redmine_db { fail('$redmine_db parameter is required') } if ! $redmine_db_user { fail('$redmine_db_user parameter is required') } if ! $redmine_db_pw { fail('$redmine_db_pw parameter is required') } database{$redmine_db: ensure => present, charset => 'utf8', provider => 'mysql', } database_user{"${redmine_db_us...@localhost": ensure => present, password_hash => mysql_password($redmine_db_pw), require => Database[$redmine_db], provider => 'mysql', } database_grant{"${redmine_...@localhost/${redmine_db}": # privileges => [ 'alter_priv', 'insert_priv', 'select_priv', 'update_priv' ], provider => 'mysql', privileges => all, } } </pre> <pre> class mysql::server { # set the mysql root password if(! $mysql_root_pw) { fail('$mysql_root_pw must be set for class mysql::server') } package{'mysql-server': name => 'mysql-server', ensure => installed, notify => Service['mysqld'], } ..... #more code here </pre> the require statement should order all of the resources in mysql::server before everything in redmine::mysql, but the Database resource is applied before the mysql-server package is installed (see output below). <pre> r...@ubuntu:/usr/local/dev/modules/infrastructure/modules/redmine/tests# puppet mysql.pp --noop notice: //mysql::ruby/Package[ruby-mysql]/ensure: is absent, should be present (noop) err: //redmine::mysql/Database[redmine]: Failed to retrieve current state of resource: Provider mysql is not functional on this platform notice: //redmine::mysql/database_user[redm...@localhost]: Dependency database[redmine] has 1 failures warning: //redmine::mysql/database_user[redm...@localhost]: Skipping because of failed dependencies notice: //redmine::mysql/database_grant[redm...@localhost/redmine]: Dependency database[redmine] has 1 failures warning: //redmine::mysql/database_grant[redm...@localhost/redmine]: Skipping because of failed dependencies notice: //mysql::server/Package[mysql-server]/ensure: is purged, should be present (noop) notice: //mysql::server/Service[mysqld]/enable: is false, should be true (noop) notice: //mysql::server/Service[mysqld]: Would have triggered refresh from 1 dependencies err: //mysql::server/Exec[set_mysql_rootpw]: Failed to retrieve current state of resource: notice: //mysql::server/File[/root/.my.cnf]: Dependency exec[mysqladmin -u root -pblah password password] has 1 failures warning: //mysql::server/File[/root/.my.cnf]: Skipping because of failed dependencies notice: //mysql::server/File[/etc/my.cnf]/ensure: is absent, should be file (noop) notice: //mysql::server/Service[mysqld-restart]: Dependency exec[mysqladmin -u root -pblah password password] has 1 failures warning: //mysql::server/Service[mysqld-restart]: Skipping because of failed dependencies notice: //mysql::server/Service[mysqld-restart]: Would have triggered refresh from 1 dependencies </pre> I can work around by specifying require=>Class['mysql::server'] for the resources that care about order, but I would rather use require. -- 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.
