The class below is designed to ensure that a fifo exists that will be written to by Apache and read from by syslog-ng. I''ve attached the relevant chunk of the dependency graph. It''s obvious to me why Exec[access_log_pipe] is a parent node of File[/var/spool/apache2/access_log_pipe], but I don''t understand why there is any relationship at all between File[/var/spool/apache2/access_log_pipe] and Exec[cleanup_alp]. I assume there''s an implied relationship created somehow, but I don''t see where. How can I restructure this relationship to avoid the cycle? Thanks! -Ben class syslog-ng::weblogger inherits syslog-ng { $alp = "/var/spool/apache2/access_log_pipe" file { "/var/spool/apache2": ensure => directory, owner => www-data, group => www-data } File["/etc/syslog-ng/syslog-ng.conf"] { require => File[ "$alp" ] } ## TODO: Write a FIFO resource. # If apache started first and created $alp as a normal file, delete # it. exec { "cleanup_alp": command => "/bin/rm ${alp}", unless => "/usr/bin/test -p ${alp}", } # If the FIFO doesn''t exist, create it. exec { "access_log_pipe": command => "/usr/bin/mkfifo ${alp}", unless => "/usr/bin/test -p ${alp}", require => Exec["cleanup_alp"], } # Ensure permissions are correct on the pipe. file { "$alp": ensure => present, owner => www-data, group => www-data, mode => 0770, require => Exec["access_log_pipe"] } } -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
On May 24, 2010, at 5:03 PM, Ben Beuchler wrote:> The class below is designed to ensure that a fifo exists that will be > written to by Apache and read from by syslog-ng. I''ve attached the > relevant chunk of the dependency graph. It''s obvious to me why > Exec[access_log_pipe] is a parent node of > File[/var/spool/apache2/access_log_pipe], but I don''t understand why > there is any relationship at all between > File[/var/spool/apache2/access_log_pipe] and Exec[cleanup_alp]. I > assume there''s an implied relationship created somehow, but I don''t > see where. How can I restructure this relationship to avoid the > cycle? > > Thanks! > > -Ben > > class syslog-ng::weblogger inherits syslog-ng { > $alp = "/var/spool/apache2/access_log_pipe" > > file { "/var/spool/apache2": > ensure => directory, > owner => www-data, > group => www-data > } > > File["/etc/syslog-ng/syslog-ng.conf"] { > require => File[ "$alp" ] > } > > ## TODO: Write a FIFO resource. > > # If apache started first and created $alp as a normal file, delete > # it. > exec { "cleanup_alp": > command => "/bin/rm ${alp}", > unless => "/usr/bin/test -p ${alp}", > } > > # If the FIFO doesn''t exist, create it. > exec { "access_log_pipe": > command => "/usr/bin/mkfifo ${alp}", > unless => "/usr/bin/test -p ${alp}", > require => Exec["cleanup_alp"], > } > > # Ensure permissions are correct on the pipe. > file { "$alp": > ensure => present, > owner => www-data, > group => www-data, > mode => 0770, > require => Exec["access_log_pipe"] > } > } >I can''t tell you why it''s happening, but you can probably fix it by replacing the file resource with an exec that does a chmod and chown. -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Hi Ben, On Mon, May 24, 2010 at 5:03 PM, Ben Beuchler <insyte@gmail.com> wrote:> The class below is designed to ensure that a fifo exists that will be > written to by Apache and read from by syslog-ng. I''ve attached the > relevant chunk of the dependency graph. It''s obvious to me why > Exec[access_log_pipe] is a parent node of > File[/var/spool/apache2/access_log_pipe], but I don''t understand why > there is any relationship at all between > File[/var/spool/apache2/access_log_pipe] and Exec[cleanup_alp]. I > assume there''s an implied relationship created somehow,Can you open a ticket? It looks like it might be a bug. I had a peek at the code and it looks like onlyif/unless autorequire any strings that have a slash in them as files. reqs += line.scan(%r{(#{File::SEPARATOR}\S+)}) I ran some tests, and saw a slightly different behavior. I could recreate with the following code: $alp = "/tmp/one" exec { "test1": command => "/bin/rm ${alp}", unless => "/bin/test ${alp}", } exec { "test2": command => "/bin/touch ${alp}", unless => "/bin/test ${alp}", require => Exec["test1"], } file { "$alp": ensure => present, mode => 0770, require => Exec["test2"] } but not with: $alp = "/tmp/one" exec { "test1": command => "/bin/rm ${alp}", unless => "/bin/test ${alp}", } file { "$alp": ensure => present, mode => 0770, require => Exec["test1"] }> but I don''t > see where. How can I restructure this relationship to avoid the > cycle? > > Thanks! > > -Ben > > class syslog-ng::weblogger inherits syslog-ng { > $alp = "/var/spool/apache2/access_log_pipe" > > file { "/var/spool/apache2": > ensure => directory, > owner => www-data, > group => www-data > } > > File["/etc/syslog-ng/syslog-ng.conf"] { > require => File[ "$alp" ] > } > > ## TODO: Write a FIFO resource. > > # If apache started first and created $alp as a normal file, delete > # it. > exec { "cleanup_alp": > command => "/bin/rm ${alp}", > unless => "/usr/bin/test -p ${alp}", > } > > # If the FIFO doesn''t exist, create it. > exec { "access_log_pipe": > command => "/usr/bin/mkfifo ${alp}", > unless => "/usr/bin/test -p ${alp}", > require => Exec["cleanup_alp"], > } > > # Ensure permissions are correct on the pipe. > file { "$alp": > ensure => present, > owner => www-data, > group => www-data, > mode => 0770, > require => Exec["access_log_pipe"] > } > } > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Users" group. > To post to this group, send email to puppet-users@googlegroups.com. > To unsubscribe from this group, send email to > puppet-users+unsubscribe@googlegroups.com<puppet-users%2Bunsubscribe@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/puppet-users?hl=en. > >-- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.