Issue #3835 has been updated by James Turnbull. Status changed from Ready for Testing to Closed Target version set to 0.25.6
Pushed in commit:"34d189725c82e221793dc51c04ecb68e43ed3115" in branch 0.25.x ---------------------------------------- Bug #3835: Recursively absent directories don't remove the files inside the directory http://projects.puppetlabs.com/issues/3835 Author: Yaakov M. Nemoy Status: Closed Priority: Normal Assigned to: Nick Lewis Category: file Target version: 0.25.6 Affected version: 0.25.4 Keywords: Branch: http://github.com/nicklewis/puppet/tree/ticket/0.25.x/3835-recursively_absent_parents_should_have_absent_children In our puppet configuration, we have a recursive directory defined that can be present or absent based on whether the owning service is active on the system. When the module is set to be enabled, the config below works quite ok, the appropriate files are copied over. When the module is disabled, the expected behavior is that the directory and its contents would be removed. If the directory was present, it would be removed, and there would be a single notification about it. The actual results are that the directory is indeed removed, but as seen below, we receive rather strange error messages from what would be the contents of the directory were it set to be present. Since puppetd is set to rerun itself every half hour, this clutters up our logs, and is noisy enough to obscure any actual errors or changes. I find it particularly strange that these file resources are being set to 'file' when they should inherit the attribute of the recursive directory file resource. define module($enable = false) { case $name { "mod_security": { file { "/etc/httpd/modsecurity.d/": # apparently puppet 0.25.4 fails at recursive absentness, so this is the hack # modsecurity isn't enabled anyways, so we just make the stuff present, and ignore it # sorry for the mess -ymn ensure => $enable ? { true => directory, false => absent }, # ensure => directory, source => [ "puppet://$server/files/private/webserver/modsecurity.d/", "puppet://$server/files/webserver/modsecurity.d/", "puppet://$server/webserver/modsecurity.d/" ], recurse => true, purge => true, ignore => ".*", # prevents .svn from being copied over force => true, notify => Service["httpd"] } } } When the module is set to disable, we get the following output: Fri May 21 14:45:53 +0200 2010 Puppet (notice): Starting Puppet client version 0.25.4 Fri May 21 14:45:53 +0200 2010 Puppet (warning): Fact syncing is deprecated as of 0.25 -- use 'pluginsync' instead Fri May 21 14:46:07 +0200 2010 /File[/etc/httpd/modsecurity.d/modsecurity_crs_10_config.conf]/ensure (err): change from absent to file failed: Could not set file on ensure: No such file or directory - /etc/httpd/modsecurity.d/modsecurity_crs_10_config.conf.puppettmp_7206 Fri May 21 14:46:07 +0200 2010 /File[/etc/httpd/modsecurity.d/modsecurity_crs_20_protocol_violations.conf]/ensure (err): change from absent to file failed: Could not set file on ensure: No such file or directory - /etc/httpd/modsecurity.d/modsecurity_crs_20_protocol_violations.conf.puppettmp_416 Fri May 21 14:46:07 +0200 2010 /File[/etc/httpd/modsecurity.d/modsecurity_crs_21_protocol_anomalies.conf]/ensure (err): change from absent to file failed: Could not set file on ensure: No such file or directory - /etc/httpd/modsecurity.d/modsecurity_crs_21_protocol_anomalies.conf.puppettmp_5560 Fri May 21 14:46:07 +0200 2010 /File[/etc/httpd/modsecurity.d/modsecurity_crs_23_request_limits.conf]/ensure (err): change from absent to file failed: Could not set file on ensure: No such file or directory - /etc/httpd/modsecurity.d/modsecurity_crs_23_request_limits.conf.puppettmp_4204 Fri May 21 14:46:07 +0200 2010 /File[/etc/httpd/modsecurity.d/modsecurity_crs_30_http_policy.conf]/ensure (err): change from absent to file failed: Could not set file on ensure: No such file or directory - /etc/httpd/modsecurity.d/modsecurity_crs_30_http_policy.conf.puppettmp_3195 Fri May 21 14:46:07 +0200 2010 /File[/etc/httpd/modsecurity.d/modsecurity_crs_35_bad_robots.conf]/ensure (err): change from absent to file failed: Could not set file on ensure: No such file or directory - /etc/httpd/modsecurity.d/modsecurity_crs_35_bad_robots.conf.puppettmp_4953 Fri May 21 14:46:07 +0200 2010 /File[/etc/httpd/modsecurity.d/modsecurity_crs_40_generic_attacks.conf]/ensure (err): change from absent to file failed: Could not set file on ensure: No such file or directory - /etc/httpd/modsecurity.d/modsecurity_crs_40_generic_attacks.conf.puppettmp_7767 Fri May 21 14:46:07 +0200 2010 /File[/etc/httpd/modsecurity.d/modsecurity_crs_45_trojans.conf]/ensure (err): change from absent to file failed: Could not set file on ensure: No such file or directory - /etc/httpd/modsecurity.d/modsecurity_crs_45_trojans.conf.puppettmp_4240 Fri May 21 14:46:07 +0200 2010 /File[/etc/httpd/modsecurity.d/modsecurity_crs_50_outbound.conf]/ensure (err): change from absent to file failed: Could not set file on ensure: No such file or directory - /etc/httpd/modsecurity.d/modsecurity_crs_50_outbound.conf.puppettmp_4554 Fri May 21 14:46:07 +0200 2010 /File[/etc/httpd/modsecurity.d/optional_rules]/ensure (err): change from absent to directory failed: Cannot create /etc/httpd/modsecurity.d/optional_rules; parent directory /etc/httpd/modsecurity.d does not exist Fri May 21 14:46:07 +0200 2010 /File[/etc/httpd/modsecurity.d/optional_rules/modsecurity_crs_20_protocol_violations.conf]/ensure (err): change from absent to file failed: Could not set file on ensure: No such file or directory - /etc/httpd/modsecurity.d/optional_rules/modsecurity_crs_20_protocol_violations.conf.puppettmp_3799 Fri May 21 14:46:07 +0200 2010 /File[/etc/httpd/modsecurity.d/optional_rules/modsecurity_crs_21_protocol_anomalies.conf]/ensure (err): change from absent to file failed: Could not set file on ensure: No such file or directory - /etc/httpd/modsecurity.d/optional_rules/modsecurity_crs_21_protocol_anomalies.conf.puppettmp_4912 Fri May 21 14:46:07 +0200 2010 /File[/etc/httpd/modsecurity.d/optional_rules/modsecurity_crs_40_generic_attacks.conf]/ensure (err): change from absent to file failed: Could not set file on ensure: No such file or directory - /etc/httpd/modsecurity.d/optional_rules/modsecurity_crs_40_generic_attacks.conf.puppettmp_6569 Fri May 21 14:46:07 +0200 2010 /File[/etc/httpd/modsecurity.d/optional_rules/modsecurity_crs_42_comment_spam.conf]/ensure (err): change from absent to file failed: Could not set file on ensure: No such file or directory - /etc/httpd/modsecurity.d/optional_rules/modsecurity_crs_42_comment_spam.conf.puppettmp_142 Fri May 21 14:46:07 +0200 2010 /File[/etc/httpd/modsecurity.d/optional_rules/modsecurity_crs_42_tight_security.conf]/ensure (err): change from absent to file failed: Could not set file on ensure: No such file or directory - /etc/httpd/modsecurity.d/optional_rules/modsecurity_crs_42_tight_security.conf.puppettmp_3758 Fri May 21 14:46:07 +0200 2010 /File[/etc/httpd/modsecurity.d/optional_rules/modsecurity_crs_55_marketing.conf]/ensure (err): change from absent to file failed: Could not set file on ensure: No such file or directory - /etc/httpd/modsecurity.d/optional_rules/modsecurity_crs_55_marketing.conf.puppettmp_9563 Fri May 21 14:46:11 +0200 2010 Puppet (warning): Value of 'preferred_serialization_format' (pson) is invalid for report, using default (marshal) Fri May 21 14:46:11 +0200 2010 Puppet (notice): Finished catalog run in 9.54 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://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.
