Issue #16187 has been updated by Luke Kanies.
I think that kind of central state is a reasonable solution, but I think we can do much better. In particular, I think it's important to do everything we can to support cycle-detection and avoid locking the system because of those cycles. This kind of state doesn't help with that. I instead want to build a single graph with the whole infrastructure in it, and then trigger hosts in the appropriate order based on that graph. Each individual system would then have the ability to directly test whether its dependencies are working, so that it could either go, hold, or fail depending on the state of required services, not the state as declared in a database. I think your solution is a good start, though, and is clearly better than we have now. ---------------------------------------- Feature #16187: Relationships should work between hosts https://projects.puppetlabs.com/issues/16187#change-74087 Author: Luke Kanies Status: Unreviewed Priority: Normal Assignee: Category: Target version: Affected Puppet version: Keywords: backlog Branch: Currently, one can only specify a relationship within a given host's graph. This means that the system can easily figure out, using dependencies, the order of work for a given node, but it cannot figure out the order of work across nodes. If a web service running on one host depends on a db service running on another, you can use exported resources to share configuration (albeit in non-ideal ways), but you cannot specify this dependency. This means you cannot get a view of the true service dependencies in the system, and you always have a thin view of the world. We need a way to specify that a given service or resource depends on a service or resource on another host. This feature could be done in a very simple way, but could also get very sophisticated. For instance, I've got a prototype that blocks a host's transaction until some remote resource is in the state you want: [[https://github.com/puppetlabs/puppetlabs-external_resource]] external_resource { "file exists": frequency => 1, timeout => 30, check => "/bin/ls /tmp/myfile" } notify { "File exists": require => Remote_resource["file exists"] } This allows you to cause one service to wait until dependent (and potentially remote) services are available. A very similar feature should exist for remote relationships: We need some way of ordering operations so that we do not try to bring the web server up before its database server is up. -- 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.
