The situation is a little more complicated than just trying to do a "recurse" on the directory to set the permissions. In my config, I create the directory where all the nagios_hosts are collected and I then make that resource a requirement for all the exported nagios_hosts. So obviously I can't have that directory as a resource later on when I want to do a "recurse" on it to change the permissions.
So in this case, what I did was back out one directory and try to create a file resource based on the parent dir "/etc/nagios3" and then use "recurse" on that to try to set the permissions. And that's when I get the circular dependency error. Taking out the resource for the initial directory creation as well as the dependency for each nagios_host means that I'll have to create that directory (and there are actually a couple of others too) by hand every time I want to have nagios installed on a server, not really the point of having puppet. All this would be so much easier if I could just set either the permissions or the ownership when the files are initially created. Why are these files automatically owned by root and mode 600? I don't know about other distros but in Ubuntu, it automatically breaks nagios since nagios is run as the user nagios and can't read the files. Cheers, Scott On Jan 23, 7:15 am, Luke Kanies <l...@madstop.com> wrote: > On Jan 22, 2009, at 4:55 PM, Scott wrote: > > > The issue is that I don't know the exact names of all the nagios_hosts > > ahead of time, so I can't declare file resources explicitly, each host > > has it's own host file. > > > So I've tried declaring a "file" resource for the directory that the > > nagios_host files get deposited in and using "recurse" to set the > > permissions on all the files in the directory but I get an error in > > puppet saying I have a circular dependency, I'm assuming because the > > "nagios_host" type explicitly sets permissions on the files. > > It does not, so I don't see why you'd get a cycle. What does the > cycle say? > > > > > I've tried using "exec" but I need to make sure the exec gets called > > after all the nagios_hosts are collected otherwise it's pointless but > > how do you tell the exec command to run after the collection? > > Well, you could have each nagios instance require the exec, but that > would be messy. > > > > > I've tried setting a "before" parameter in the exported @@nagios_host > > resource but puppet gave me an error when I tried to use the "title" > > of the exec instead of the command. I haven't tired using the exec > > command itself in the "before" parameter because it has switches, i.e. > > "chmod 644 /etc/nagios3/hosts/*", and I thought it would cause > > problems with spaces and it looks messier as well. I don't mind doing > > that, though, if it works. > > Nah, if the relationship to the title doesn't work, the relationship > to the command won't. > > This is obviously something I just didn't really think about when > developing this stuff. However, based on how Puppet works ATM, you > should not have to worry about it beyond the first run. If you set > the perms correctly, then Puppet will retain them afterward. > > Really, though, managing the perms with 'file' statements should work. > > -- > The reasonable man adapts himself to the world; the unreasonable one > persists in trying to adapt the world to himself. Therefore all > progress depends on the unreasonable man. -- George Bernard Shaw > --------------------------------------------------------------------- > Luke Kanies |http://reductivelabs.com|http://madstop.com --~--~---------~--~----~------------~-------~--~----~ 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+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en -~----------~----~----~----~------~----~------~--~---